Commit 9882f9
2025-10-12 22:02:56 theophile: Backups Des Services Individuels deleted.| backups/backups des services individuels.md .. /dev/null | |
| @@ 1,246 0,0 @@ | |
| - | # Backups & Restore des services individuels |
| - | |
| - | Cette page est dédier à la sauvegarde et restoration des services sur le serveur. |
| - | |
| - | ## Services |
| - | > [!NOTE] |
| - | > As of _25/08/08_ → **20 GiB** approximatly. It should not grow very fast, since it is |
| - | > mostly configuration files and a text wiki. |
| - | |
| - | **Large Media** is backed up seperatly when necessary: |
| - | |
| - | - jellyfin |
| - | - navidrome |
| - | |
| - | :::warning |
| - | # Stop containers before making backups. |
| - | This is safer for data. |
| - | ::: |
| - | |
| - | --- |
| - | |
| - | ### Otterwiki ✅ |
| - | |
| - | OtterWiki being a flatfile wiki, we can back it up by simply copying the |
| - | `/mnt/data/otterwiki` folder and restoring it. |
| - | |
| - | --- |
| - | |
| - | ### Forgejo ✅ |
| - | |
| - | **Backup** |
| - | |
| - | [Based on the documentation](https://forgejo.org/docs/latest/admin/upgrade/#backup) and [this analysis of gitea backups](https://codeberg.org/forgejo/forgejo/src/tag/v1.21.3-0/docs/content/administration/backup-and-restore.en-us.md), we can run |
| - | |
| - | ```bash |
| - | |
| - | docker compose exec -u git forgejo forgejo dump --file /tmp/forgejo-dump.zip |
| - | |
| - | ``` |
| - | |
| - | Then copy out the file and rename it at the same time: |
| - | |
| - | ```bash |
| - | docker compose cp forgejo:/tmp/forgejo-dump.zip /mnt/data/backups/forgejo/forgejo-backup-$(date +%Y%m%d-%H%M%S).zip |
| - | ``` |
| - | |
| - | Pour finir, on supprime l'archive du dossier /tmp dans le container: |
| - | |
| - | ```bash |
| - | docker compose exec forgejo rm /tmp/forgejo-dump.zip |
| - | ``` |
| - | |
| - | **Restore** |
| - | |
| - | Move all relevant files to their location in the mounted volumes: |
| - | |
| - | ```bash |
| - | |
| - | docker compose up |
| - | # Arreter un peu après. C'est pour générer la structure de dossiers. |
| - | unzip forgejo-dump-1610949662.zip |
| - | cd forgejo-dump-1610949662 |
| - | mv app.ini $FORGEJO_DATA_DIR/gitea/conf/app.ini |
| - | mv data/* $FORGEJO_DATA_DIR/gitea/data/ |
| - | mv log/* $FORGEJO_DATA_DIR/gitea/log/ |
| - | mv repos/* $FORGEJO_DATA_DIR/git/repositories/ |
| - | chown -R docker:docker $FORGEJO_DATA_DIR/ |
| - | |
| - | # Je garde les commandes ci-dessous comme archives. La db se trouve déjà dans data/. |
| - | # De fait, on peut s'arrêter là, et on a pas besoin du dump, car sqlite3 est en format single file. |
| - | |
| - | # sqlite3 |
| - | # sqlite3 $DATABASE_PATH <gitea-db.sql |
| - | |
| - | # Commandes pour d'autres types de DB: |
| - | # mysql |
| - | # mysql --default-character-set=utf8mb4 -u$USER -p$PASS $DATABASE <gitea-db.sql |
| - | # postgres |
| - | # psql -U $USER -d $DATABASE < gitea-db.sql |
| - | |
| - | ``` |
| - | |
| - | --- |
| - | |
| - | ### Jellyfin |
| - | |
| - | [Backup and Restore → jellyfin.org](https://jellyfin.org/docs/general/administration/backup-and-restore) |
| - | |
| - | Stop the container completly, then copy the config folder (maybe nothing else ?) |
| - | → `/mnt/data/jellyfin/config` |
| - | |
| - | --- |
| - | |
| - | ### Kavita |
| - | |
| - | [Backups → wiki.kavitareader.com](https://wiki.kavitareader.com/guides/admin-settings/tasks/#kavita-backup) |
| - | |
| - | Backups are already generated, in `/mnt/data/kavita/config/backups`. |
| - | |
| - | --- |
| - | |
| - | ### Navidrome |
| - | |
| - | [Automated Backup → navidrome.org](https://www.navidrome.org/docs/usage/backup/) |
| - | |
| - | #### Backup |
| - | |
| - | Backup can be automated via config file or env variables. Location is |
| - | `/mnt/data/navidrome/backup`. |
| - | |
| - | Alternatively, we can also directly start a backup from inside the container: |
| - | |
| - | ```bash |
| - | sudo docker compose run <service_name> backup create |
| - | # service_name is usually `navidrome` |
| - | ``` |
| - | |
| - | We can also prune old backups with: |
| - | |
| - | ```bash |
| - | sudo docker compose run <service_name> backup prune |
| - | # service_name is usually `navidrome` |
| - | ``` |
| - | #### Restore |
| - | |
| - | When you restore a backup, the existing data in the database is wiped and the data in the backup gets copied into the database. |
| - | |
| - | Note: YOU MUST BE SURE TO RUN THIS COMMAND WHILE THE NAVIDROME APP IS NOT RUNNING/LIVE. |
| - | |
| - | Restore a backup by running the navidrome backup restore command. |
| - | :::warning |
| - | Attention |
| - | Restoring a backup should ONLY be done when the service is NOT running. You’ve been warned. |
| - | ::: |
| - | |
| - | --- |
| - | |
| - | ### Miniflux ✅ |
| - | |
| - | **Backups** |
| - | |
| - | [FAQ → miniflux.app](https://miniflux.app/faq.html#backup) |
| - | |
| - | [postgresql dump restore → postgresql.org](https://www.postgresql.org/docs/current/backup-dump.html) |
| - | |
| - | Miniflux stores all it's data in a PostgreSQL db. |
| - | |
| - | We can dump it with: |
| - | |
| - | ```bash |
| - | docker compose exec -T db pg_dump -U miniflux miniflux > miniflux_backup.sql |
| - | ``` |
| - | |
| - | **Restore** |
| - | |
| - | Start the db service: |
| - | |
| - | ```bash |
| - | docker compose up -d db |
| - | ``` |
| - | |
| - | Then run the dump restoration command: |
| - | |
| - | ```bash |
| - | cat ./miniflux_backup.sql | podman-compose exec -T db psql -U miniflux miniflux |
| - | ``` |
| - | |
| - | Then start the miniflux service: |
| - | |
| - | ```bash |
| - | docker compose up -d miniflux |
| - | ``` |
| - | |
| - | --- |
| - | |
| - | ### Readeck ⚠️ |
| - | |
| - | [Backups → readeck.org](https://readeck.org/en/docs/backups) |
| - | |
| - | ```bash |
| - | # docker exec -i readeck sh -c 'readeck export "/readeck/readeck_backup_$(date +%Y%m%dT%H%M%S).zip"' |
| - | docker compose exec app readeck export -config config.toml export.zip |
| - | ``` |
| - | |
| - | to import, do the same and specifying the config file. |
| - | |
| - | Needs to be recuring via cron job or script. Could also be built by script that |
| - | does the overall backup, since backup is quick. |
| - | |
| - | :::info |
| - | The export tool with docker compose exec currently does not work. |
| - | ::: |
| - | |
| - | --- |
| - | |
| - | ### Caddy |
| - | |
| - | It is sufficient to backup the `/mnt/data/caddy`. The most important folders |
| - | inside are: |
| - | |
| - | - `./Caddyfile` |
| - | - `./html/` |
| - | |
| - | To restore, the both should be in the same folder, for the Caddyfile contains |
| - | the paths to the different root folders for the websites hosted. |
| - | |
| - | --- |
| - | |
| - | ### OpenWebUI |
| - | |
| - | We do not backup the `ollama` models. We only handle the `openwebui` data. |
| - | |
| - | |
| - | - [Backing Up Your Instance - openwebUI docs](https://docs.openwebui.com/tutorials/maintenance/backups/#scripting-a-backup-job) |
| - | |
| - | |
| - | **Dir structure**: |
| - | ``` |
| - | ├── audit.log |
| - | ├── cache/ |
| - | ├── uploads/ |
| - | ├── vector_db/ |
| - | └── webui.db |
| - | ``` |
| - | |
| - | 1. Cold backup approach - Stops the container before backup for data integrity |
| - | 2. Copies the entire `/webui` folder including: |
| - | - webui.db (main database with chats, users, settings) |
| - | - uploads/ (uploaded files) |
| - | - cache/ (cached data) |
| - | - vector_db/ (RAG/Knowledge embeddings) |
| - | |
| - | --- |
| - | |
| - | ### Medama |
| - | |
| - | n.a. |
| - | |
| - | --- |
| - | |
| - | ## Missing or broken installs |
| - | |
| - | - archivebox |
| - | - bookstack |
| - | - etherpad |
| - | - synapse |