3.9 KiB
3.9 KiB
Procédure de Mise à Jour Trilium (triliumnext/trilium)
Ce document formalise la procédure d'exploitation, de sauvegarde et de mise à jour du conteneur Trilium Notes sur le NAS Synology.
1. Contexte & Historique de Version
| Attribut | Valeur Initiale (Départ) | Valeur Cible (Post-MAJ) |
|---|---|---|
| Version Serveur | 0.103.0 (db schema 238) |
0.105.0 (db schema 240) |
| Image Docker | triliumnext/trilium:latest (sha256:2384e4...) |
triliumnext/trilium:v0.105.0 |
| Date d'exécution | 14/05/2026 | 21/08/2026 |
| Port hôte | 4292:8080 |
4292:8080 |
| Volume de données | /volume1/docker/trilium |
/volume1/docker/trilium |
| Volume notes | 726 notes (initial) | 782 notes (post-migration) |
2. Investigation sur la Politique de Restart (restart: no)
- Constat dans le registre :
ports-registry.mdnotaitrestart NO (voir alerte). - Investigation technique :
- L'image de départ tournait avec
unless-stopped/on-failure:5selon la stack Portainer 252. - Aucune anomalie de boucle de crash n'a été constatée dans les logs Trilium (
All consistency checks passed with no errors detected). - Conformément à la doctrine de prudence demandée dans le brief, la politique de restart a été explicitement fixée à
restart: "no"dans le fichier compose/volume1/docker/trilium/docker-compose.ymlet/volume1/docker/portainer/compose/252/docker-compose.yml.
- L'image de départ tournait avec
3. Procédure de Sauvegarde
Trilium stocke ses données sous format SQLite (document.db + document.db-wal).
Étape A — Arrêt propre et checkpoint SQLite
docker stop Trilium
L'arrêt propre permet à SQLite de vider le fichier WAL (document.db-wal) dans la base principale (document.db).
Étape B — Copie intégrale du répertoire et vérification d'intégrité
# Sauvegarde des fichiers clés
mkdir -p /volume1/docker/trilium_db_backup_20260821_pre_v0.105.0
cp -p /volume1/docker/trilium/document.db /volume1/docker/trilium_db_backup_20260821_pre_v0.105.0/
cp -p /volume1/docker/trilium/config.ini /volume1/docker/trilium_db_backup_20260821_pre_v0.105.0/
cp -p /volume1/docker/trilium/session_secret.txt /volume1/docker/trilium_db_backup_20260821_pre_v0.105.0/
# Vérification SQLite PRAGMA integrity_check
python3 -c "
import sqlite3
conn = sqlite3.connect('/volume1/docker/trilium/document.db')
c = conn.cursor()
c.execute('PRAGMA integrity_check;')
print(c.fetchall()) # Doit afficher [('ok',)]
"
Étape C — Sauvegarde native Trilium
Lors du démarrage avec une nouvelle version, Trilium génère automatiquement un backup natif avant migration dans /volume1/docker/trilium/backup-before-migration.db.
4. Configuration docker-compose.yml (Pinning strict)
Fichier : /volume1/docker/trilium/docker-compose.yml
services:
trilium:
image: triliumnext/trilium:v0.105.0
container_name: Trilium
mem_limit: 8g
cpu_shares: 2048
healthcheck:
test: ["CMD-SHELL", "nc -z 127.0.0.1 8080 || exit 1"]
interval: 10s
timeout: 5s
retries: 3
start_period: 90s
security_opt:
- no-new-privileges:false
environment:
- TRILIUM_DATA_DIR=/home/node/trilium-data
- USER_UID=1026
- USER_GID=100
ports:
- 4292:8080
volumes:
- /volume1/docker/trilium:/home/node/trilium-data:rw
restart: "no"
5. Commandes de Recréation et Validation
# 1. Pull de l'image pinnée
docker pull triliumnext/trilium:v0.105.0
# 2. Recréation
cd /volume1/docker/trilium
docker-compose down
docker-compose up -d
# 3. Vérification des logs et des migrations (db 238 -> 240)
docker logs Trilium --tail 50
# 4. Vérification API et statut HTTP
curl -s http://192.168.100.33:4292/api/setup/status
# Réponse : {"isInitialized":true,"schemaExists":true,"authRequired":false,"syncVersion":39}