Synchronizing Joplin notes between devices
After doing a bit of research on several of the note taking apps available, I decided on Joplin to be the next one I intend to use for several reasons.
Joplin is an excellent open source note taking application with plenty of features. You can take notes, make to-do list and sync your notes across devices by linking it with cloud services. The synchronization is protected with end to end encryption.
Having the ability to sync notes between devices is one of the main reasons I wanted to learn more about taking notes using Joplin, which can use more than one sync target, that being either a Joplin server, WebDAV server or Nextcloud instance.
I decided to install Joplin server on a dedicated LXC container in my internal network that has Docker installed already. These are the steps required to get that up and running:
- Create a
compose.yaml
file with the following default content:
services:
db:
image: postgres:16
volumes:
- ./data/postgres:/var/lib/postgresql/data
ports:
- "5432:5432"
restart: always
environment:
- POSTGRES_PASSWORD=strong-password
- POSTGRES_USER=joplin-user
- POSTGRES_DB=joplindb
app:
image: joplin/server:latest
container_name: joplin-server
depends_on:
- db
ports:
- "8080:8080"
restart: always
environment:
- APP_PORT=8080
- APP_BASE_URL=https://joplin.example.com
- DB_CLIENT=pg
- POSTGRES_PASSWORD=strong-password
- POSTGRES_DATABASE=joplindb
- POSTGRES_USER=joplin-user
- POSTGRES_PORT=5432
- POSTGRES_HOST=db
Modify the database credentials and base url to suit your own setup.
- Start the container services:
docker compose up -d
- Login to the web UI via browser on the url defined in
APP_BASE_URL
. The default username and password areadmin@example.com
andadmin
respectively. At this point you can and should change the default credentials to something more secure.
Syncing between devices⌗
In order to sync notes between devices, go to Tools > Options > Synchronisation
from within the Joplin app on each device and enter the appropriate Joplin server url and user credentials.
More details on the synchronization process can be found in the official docs here.