Afficher les derniers auteurs
| author | version | line-number | content |
|---|---|---|---|
| 1 | 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. | ||
| 2 | |||
| 3 | == Serveur de synchronisation == | ||
| 4 | |||
| 5 | |=Conteneur|=Rôle | ||
| 6 | |joplin-server|Serveur Joplin | ||
| 7 | |joplin-db|Base PostgreSQL 16 | ||
| 8 | |||
| 9 | {{code language="yaml"}} | ||
| 10 | services: | ||
| 11 | joplin-db: | ||
| 12 | image: postgres:16 | ||
| 13 | container_name: joplin-db | ||
| 14 | restart: unless-stopped | ||
| 15 | healthcheck: | ||
| 16 | test: ["CMD-SHELL", "pg_isready -d joplin -U joplin"] | ||
| 17 | interval: 10s | ||
| 18 | timeout: 5s | ||
| 19 | retries: 5 | ||
| 20 | volumes: | ||
| 21 | - <DOSSIER_BASE>:/var/lib/postgresql/data | ||
| 22 | environment: | ||
| 23 | POSTGRES_PASSWORD: <MOT_DE_PASSE> | ||
| 24 | POSTGRES_USER: joplin | ||
| 25 | POSTGRES_DB: joplin | ||
| 26 | networks: | ||
| 27 | - joplin-net | ||
| 28 | |||
| 29 | joplin: | ||
| 30 | image: joplin/server:latest | ||
| 31 | container_name: joplin-server | ||
| 32 | restart: unless-stopped | ||
| 33 | depends_on: | ||
| 34 | joplin-db: | ||
| 35 | condition: service_healthy | ||
| 36 | ports: | ||
| 37 | - "22300:22300" | ||
| 38 | environment: | ||
| 39 | - APP_BASE_URL=<URL_JOPLIN> | ||
| 40 | - APP_PORT=22300 | ||
| 41 | - POSTGRES_PASSWORD=<MOT_DE_PASSE> | ||
| 42 | - POSTGRES_DATABASE=joplin | ||
| 43 | - POSTGRES_USER=joplin | ||
| 44 | - POSTGRES_PORT=5432 | ||
| 45 | - POSTGRES_HOST=joplin-db | ||
| 46 | - DB_CLIENT=pg | ||
| 47 | - STORAGE_DRIVER=Type=Filesystem;Path=/data/content_storage | ||
| 48 | volumes: | ||
| 49 | - <DOSSIER_CONTENU>:/data/content_storage | ||
| 50 | networks: | ||
| 51 | - joplin-net | ||
| 52 | |||
| 53 | networks: | ||
| 54 | joplin-net: | ||
| 55 | driver: bridge | ||
| 56 | {{/code}} | ||
| 57 | |||
| 58 | * La base n'a aucun port publié : seul le serveur Joplin y accède, par le réseau interne ##joplin-net##. | ||
| 59 | * ##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. | ||
| 60 | * Le serveur est publié sur le port 22300 de l'hôte, que SWAG relaie. | ||
| 61 | |||
| 62 | == Application dans le navigateur == | ||
| 63 | |||
| 64 | Image LinuxServer.io de l'application de bureau Joplin, affichée dans le navigateur. | ||
| 65 | |||
| 66 | {{code language="yaml"}} | ||
| 67 | name: joplin-desktop | ||
| 68 | |||
| 69 | services: | ||
| 70 | joplin-app: | ||
| 71 | image: lscr.io/linuxserver/joplin:latest | ||
| 72 | container_name: joplin-app | ||
| 73 | environment: | ||
| 74 | - PUID=1000 | ||
| 75 | - PGID=1000 | ||
| 76 | - TZ=Europe/Paris | ||
| 77 | - LC_ALL=fr_FR.UTF-8 | ||
| 78 | volumes: | ||
| 79 | - <APPDATA>/joplin-app:/config | ||
| 80 | security_opt: | ||
| 81 | - seccomp:unconfined | ||
| 82 | shm_size: "1gb" | ||
| 83 | restart: unless-stopped | ||
| 84 | networks: | ||
| 85 | - proxy | ||
| 86 | |||
| 87 | networks: | ||
| 88 | proxy: | ||
| 89 | external: true | ||
| 90 | {{/code}} | ||
| 91 | |||
| 92 | * ##seccomp:unconfined## et ##shm_size## sont requis par l'application Electron dans le conteneur. | ||
| 93 | * L'application peut produire des fichiers ##core.*## volumineux en cas de plantage : ils sont exclus de la sauvegarde. | ||
| 94 | |||
| 95 | {{warning}} | ||
| 96 | Cette application donne un accès complet aux notes sans authentification propre : elle ne doit être publiée que derrière Authelia. | ||
| 97 | {{/warning}} | ||
| 98 | |||
| 99 | == Sauvegarde == | ||
| 100 | |||
| 101 | * Base : dump SQL de ##joplin-db## par le script de [[Sauvegarde>>Wiki Batcave John.Infrastructure.Sauvegarde.WebHome]]. | ||
| 102 | * Contenu des notes : ##<DOSSIER_CONTENU>##, ajouté comme chemin source du script car il est hors du dossier des conteneurs. | ||
| 103 | * Application : ##<APPDATA>/joplin-app##, sans les fichiers ##core.*##. |