Données et sauvegardes

Tout ce que HouseCairn écrit se trouve dans le volume /data :

Chemin

Contenu

/data/db.sqlite3 (et -wal, -shm)

La base SQLite, sauf si DATABASE_URL pointe vers PostgreSQL.

/data/secret_key

La clé qui signe les sessions et les jetons, en mode 600. La perdre déconnecte tout le monde ; gardez-la secrète.

/data/media/

Fichiers téléversés.

/data/backups/

Copies faites par la commande backup ci-dessous.

Les fichiers appartiennent à 10001:10001 et ne sont lisibles que par cet utilisateur. Si vous montez un répertoire de l’hôte plutôt qu’un volume nommé, donnez-le d’abord à cet utilisateur : sudo chown -R 10001:10001 /srv/housecairn.

Sauvegarder

Sauvegardez /data de l’une de ces deux façons :

  • Copie à froid, la plus simple : arrêtez le conteneur, copiez le volume, redémarrez-le.

    docker compose stop housecairn
    docker run --rm -v housecairn_housecairn-data:/data:ro -v "$PWD":/backup \
      debian:stable-slim tar -czf /backup/housecairn-data.tar.gz -C /data .
    docker compose start housecairn
    

    (Le nom du volume est <project>_housecairn-data ; docker volume ls l’affiche.)

  • Copie à chaud de la base, pendant que HouseCairn tourne, avec l’API de sauvegarde de SQLite (la même que sqlite3 db.sqlite3 ".backup ...") :

    docker compose exec housecairn python -m housecairn.entrypoint backup
    # prints /data/backups/db-<UTC date and time>.sqlite3
    

    Copiez ensuite /data/backups/, /data/secret_key et /data/media/ hors de la machine. Supprimez vous-même les anciennes copies de /data/backups/.

Avec PostgreSQL, sauvegardez la base avec pg_dump, et /data pour la clé et les fichiers téléversés.

Restaurer

Pour restaurer, arrêtez le conteneur, remettez les fichiers dans le volume (propriété de 10001:10001), puis démarrez-le.