On Synology DSM 7.x, the easiest way to deploy Joplin Server is to use the “Project” feature in Container Manager. Under the hood, it is Docker Compose: one PostgreSQL database container, one Joplin Server container, and Synology handles image pulls, container creation, and day-to-day startup management.
This is the Synology-specific version of the setup. It focuses on File Station directories, Container Manager projects, LAN access, remote sync, and reverse proxy details. If you already write docker-compose.yml by hand on Linux servers, the flow will look familiar. If you mostly use Synology’s GUI, you can follow along directly.
When this setup makes sense
Joplin Server is useful if you want to keep note sync data on your own device. It lets Windows, macOS, iOS, Android, and other Joplin clients sync through your own server instead of relying on a third-party cloud drive.
Deploying it on Synology is a good fit when:
- your NAS stays online and can act as a home or personal sync server;
- you only need to sync computers and phones on the LAN;
- you want remote sync through Tailscale, WireGuard, or a reverse proxy;
- you prefer managing containers through Container Manager instead of SSH all the way.
If you are only trying Joplin temporarily, you do not necessarily need Joplin Server. Joplin also supports WebDAV, S3, Dropbox, and other sync methods. For long-term self-hosting, however, Joplin Server is the more complete option.
Step 1: Prepare directories in File Station
Open Synology File Station and go to the docker shared folder.
Create a directory:
|
|
Inside joplin, create another directory:
|
|
The final structure should look like this:
|
|
postgres_data stores the PostgreSQL database. Joplin Server’s sync data mainly lives in the database, so this directory must be persistent. When you update or recreate containers later, the data will remain as long as this directory still exists.
Step 2: Create a project in Container Manager
Open Container Manager on Synology:
- click
Projecton the left; - click
Create; - set the project name to
joplin-server; - choose the
/docker/joplinpath you created; - choose
Create docker-compose.ymlas the source.
Paste this Compose configuration:
|
|
Two values must be changed:
POSTGRES_PASSWORD: the database password. It must be identical in both places;APP_BASE_URL: the actual address Joplin clients will use to reach the server.
If you only use it on the LAN, set APP_BASE_URL to your Synology LAN IP:
|
|
If you already have an HTTPS reverse proxy, use the public domain directly:
|
|
Do not fill in APP_BASE_URL casually. Joplin client sync, web redirects, and attachment links all depend on it. The address you actually use to access the service is the address you should put here.
After confirming the configuration, continue through the wizard until it finishes. Container Manager will download postgres:16 and joplin/server:latest, then start both containers.
Step 3: Check container status
After the project is created, open the joplin-server project page in Container Manager.
You should normally see two containers:
joplin-dbjoplin-server
If both are green and running, continue to the next step.
If they do not start correctly, check the project logs first. Common causes are:
- the two database passwords do not match;
- the
postgres_datadirectory has permission issues; - port
22300on Synology is already used by another service; - YAML indentation was broken.
Step 4: First login to Joplin Server
Open this in a browser:
|
|
For example:
|
|
The default administrator account is:
|
|
The default password is:
|
|
After the first login, change the administrator password immediately. Do not skip this step, especially if you plan to expose the service through remote access.
If the admin UI allows changing the administrator email, it is also a good idea to replace it with your own email for easier account identification later.
Step 5: Should you create a normal user?
If you are the only user, syncing with the updated administrator account works. A cleaner setup is to create a normal user and use that account for note sync, while keeping the administrator account for management only.
In the admin UI:
- open
Users; - click
Add user; - enter an email and password;
- save.
If SMTP is not configured, the system will say it sent an activation email, but you will not receive it. In that case, open the Emails page in the admin UI, find the unsent activation email, copy the activation link, and open it in a browser to activate the account.
For personal use, running without SMTP is fine. For multiple long-term users, configure SMTP later so registration, activation, and password reset are less painful.
Step 6: Configure Joplin client sync
Open the Joplin client on your computer or phone:
- go to
Options / Settings; - open
Synchronization; - choose
Joplin Serveras the sync target; - enter the
APP_BASE_URLyou configured earlier inJoplin Server URL; - enter the administrator email or normal user email;
- enter the corresponding password;
- click
Check synchronization configuration.
If the check succeeds, save the settings and start syncing.
If it fails, first confirm whether the client can open Joplin Server in a browser. Many sync issues are not Joplin problems, but wrong APP_BASE_URL, an inactive account, a broken reverse proxy certificate, or a phone that is not on the same network.
Remote sync option 1: Tailscale or WireGuard
The safest and simplest way to sync remotely is to connect your phone and computer back to your home network through a VPN.
Common choices:
- Tailscale;
- WireGuard;
- ZeroTier.
The benefit is that Joplin Server does not need to be exposed directly to the public internet. The URL in the Joplin client can still be your Synology LAN address, for example:
|
|
When your phone is outside, connect Tailscale or WireGuard first, then open Joplin and sync.
If you do not want to deal with public IPs, DDNS, certificates, and port forwarding, this is the most stable route. The downside is that every external device must join the VPN first.
Remote sync option 2: Synology reverse proxy and HTTPS
If you want Joplin to sync directly from any network, configure an HTTPS domain for it.
The rough process is:
- prepare a domain or DDNS;
- forward port
443on your router to Synology; - in Synology
Control Panel -> Login Portal -> Advanced -> Reverse Proxy, create a new rule; - set the source to
https://joplin.example.com:443; - set the destination to
http://127.0.0.1:22300orhttp://Synology-LAN-IP:22300; - request and bind an HTTPS certificate for the domain;
- change
APP_BASE_URLin Compose tohttps://joplin.example.com; - redeploy the project in Container Manager.
For reverse proxy headers, add common forwarded headers such as:
|
|
If you use Synology’s built-in reverse proxy UI, field names may vary slightly between DSM minor versions. Add them through the “custom header” or “WebSocket” related options in the interface.
Joplin may also hit upload size limits when syncing large attachments. If you use Nginx Proxy Manager or a manual Nginx setup, set:
|
|
If Synology’s built-in reverse proxy does not expose that option, test normal attachment sync first. If you often sync large files, Nginx Proxy Manager or Caddy will be more flexible.
Redeploy after changing APP_BASE_URL
Many people start with a LAN IP for testing and later switch to an HTTPS domain. That is fine, but do not only change the client.
You must also update the Compose configuration in the Container Manager project:
|
|
Then redeploy the project so the container environment variables take effect.
If APP_BASE_URL still points to the old address, you may see:
- client sync check failures;
- login redirects to the wrong address;
- broken attachment links;
- wrong protocol behavior behind the reverse proxy.
Backup priorities
On Synology, the most important directory is:
|
|
It stores the PostgreSQL database, which is the core sync data for Joplin Server. Add it to Hyper Backup or another backup plan.
A more robust setup is:
- back up
docker/joplin/postgres_dataregularly; - keep a local copy of notes in Joplin clients;
- export important notes as JEX from time to time;
- confirm backups before updating containers.
Do not only back up the Joplin Server image or container configuration. Images can be downloaded again; the database is your data.
Summary
Installing Joplin Server on Synology DSM 7.x mainly comes down to a few steps:
- prepare
docker/joplin/postgres_datain File Station; - create a Compose project in Container Manager;
- set
POSTGRES_PASSWORDandAPP_BASE_URLcorrectly; - change the administrator password after first login;
- choose Joplin Server as the client sync target;
- for remote access, prefer Tailscale / WireGuard, or configure an HTTPS reverse proxy.
The easiest place to make mistakes is APP_BASE_URL. As long as that address is correct and the database directory is persistent, Joplin Server can be a stable private note sync service on Synology.