Aisle Organisation

Joplin Server

Your Joplin notes, synced at home.

Add to my serverdocker-compose generator (French)Compare alternatives (French)Official documentation

What is it for?

Joplin is a very complete notes app (Markdown, notebooks, tags, attachments, encryption). Joplin Server syncs your notes across devices, faster and more simply than Nextcloud or Dropbox.

Who is it for?

Joplin users, or anyone looking for a real Evernote alternative.

Good to know

Joplin Server only answers on the address set in APP_BASE_URL (otherwise "Invalid origin", error 404). Always use that address, never IP:port.

After installing

  1. Log in with admin@localhost / admin, then change the email and password right away.
  2. In the Joplin app: Synchronisation → Joplin Server, with your server address.

The docker-compose

Example behind Traefik. To adapt it (Nginx Proxy Manager, local port…) with a line-by-line explanation, use the generator (in French).

# docker-compose.yml : Joplin Server
services:
  app:
    image: joplin/server:latest
    container_name: joplin
    restart: unless-stopped
    depends_on:
      - db
    environment:
      APP_PORT: "22300"
      APP_BASE_URL: https://joplin.mydomain.com
      DB_CLIENT: pg
      POSTGRES_HOST: db
      POSTGRES_PORT: "5432"
      POSTGRES_DATABASE: joplin
      POSTGRES_USER: joplin
      POSTGRES_PASSWORD: "${DB_PASSWORD}"
      TZ: Europe/Paris
    networks:
      - traefik
      - default
    labels:
      - traefik.enable=true
      - traefik.http.routers.joplin.rule=Host(`joplin.mydomain.com`)
      - traefik.http.routers.joplin.entrypoints=websecure
      - traefik.http.routers.joplin.tls.certresolver=letsencrypt
      - traefik.http.services.joplin.loadbalancer.server.port=22300
      - traefik.docker.network=traefik

  db:
    image: postgres:17-alpine
    container_name: joplin-db
    restart: unless-stopped
    environment:
      POSTGRES_DB: joplin
      POSTGRES_USER: joplin
      POSTGRES_PASSWORD: "${DB_PASSWORD}"
    volumes:
      - ./db:/var/lib/postgresql/data

networks:
  traefik:
    external: true