0 Votes

Joplin

Modifié par john le 2026/09/18 23:20

Prise de notes : un serveur de synchronisation pour les clients Joplin (ordinateur, mobile), et l'application de bureau Joplin utilisable dans le navigateur. Deux stacks distinctes.

Serveur de synchronisation

ConteneurRôle
joplin-serverServeur Joplin
joplin-dbBase PostgreSQL 16
services:
 joplin-db:
   image: postgres:16
   container_name: joplin-db
   restart: unless-stopped
   healthcheck:
     test: ["CMD-SHELL", "pg_isready -d joplin -U joplin"]
     interval: 10s
     timeout: 5s
     retries: 5
   volumes:
      - <DOSSIER_BASE>:/var/lib/postgresql/data
   environment:
     POSTGRES_PASSWORD: <MOT_DE_PASSE>
     POSTGRES_USER: joplin
     POSTGRES_DB: joplin
   networks:
      - joplin-net

 joplin:
   image: joplin/server:latest
   container_name: joplin-server
   restart: unless-stopped
   depends_on:
     joplin-db:
       condition: service_healthy
   ports:
      - "22300:22300"
   environment:
      - APP_BASE_URL=<URL_JOPLIN>
      - APP_PORT=22300
      - POSTGRES_PASSWORD=<MOT_DE_PASSE>
      - POSTGRES_DATABASE=joplin
      - POSTGRES_USER=joplin
      - POSTGRES_PORT=5432
      - POSTGRES_HOST=joplin-db
      - DB_CLIENT=pg
      - STORAGE_DRIVER=Type=Filesystem;Path=/data/content_storage
   volumes:
      - <DOSSIER_CONTENU>:/data/content_storage
   networks:
      - joplin-net

networks:
 joplin-net:
   driver: bridge
  • La base n'a aucun port publié : seul le serveur Joplin y accède, par le réseau interne joplin-net.
  • STORAGE_DRIVER=Type=Filesystem : le contenu des notes et des pièces jointes est stocké en fichiers dans <DOSSIER_CONTENU>, pas dans la base. Les éléments antérieurs au passage à ce mode sont restés dans la base.
  • Le serveur est publié sur le port 22300 de l'hôte, que SWAG relaie.

Application dans le navigateur

Image LinuxServer.io de l'application de bureau Joplin, affichée dans le navigateur.

name: joplin-desktop

services:
 joplin-app:
   image: lscr.io/linuxserver/joplin:latest
   container_name: joplin-app
   environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
      - LC_ALL=fr_FR.UTF-8
   volumes:
      - <APPDATA>/joplin-app:/config
   security_opt:
      - seccomp:unconfined
   shm_size: "1gb"
   restart: unless-stopped
   networks:
      - proxy

networks:
 proxy:
   external: true
  • seccomp:unconfined et shm_size sont requis par l'application Electron dans le conteneur.
  • L'application peut produire des fichiers core.* volumineux en cas de plantage : ils sont exclus de la sauvegarde.
Warning

Cette application donne un accès complet aux notes sans authentification propre : elle ne doit être publiée que derrière Authelia.

Sauvegarde

  • Base : dump SQL de joplin-db par le script de Sauvegarde.
  • Contenu des notes : <DOSSIER_CONTENU>, ajouté comme chemin source du script car il est hors du dossier des conteneurs.
  • Application : <APPDATA>/joplin-app, sans les fichiers core.*.