Files
nas-runbooks/common/trilium-update-procedure.md
T

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.md notait restart NO (voir alerte).
  • Investigation technique :
    • L'image de départ tournait avec unless-stopped / on-failure:5 selon 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.yml et /volume1/docker/portainer/compose/252/docker-compose.yml.

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}