| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
# récupérez le dépot :
git clone https://github.com/CoopCodeCommun/borgwarehouse
# créez les dossiers a la main (sinon c'est compose qui le fait et ils seront en root. les app n'y auront pas accès) :
mkdir config ssh ssh_host repos tmp logs sync_config sync_data
# Donner les droits des dossiers aux users des conteneurs :
sudo chown 1001:1001 config ssh ssh_host repos tmp logs sync_config sync_data
# Copier l'env exemple et remplir les variables
cp env_example .env
# Lancez la stack
docker compose up -d && docker compose logs -fadmin/admin pour la première connection : changez les creds et ajoutez votre email !
BW a besoin d'un cron qui lui demande d'aller vérifier que tout les dépots sont bien a jour. Si l'un d'entre eux a dépassé son uptime, il envoie un mail. Ce qui est le but principal recherché de cette stack : prévenir lorsqu'un backup n'arrive pas.
* * * * * curl --request POST --url 'http://localhost:3000/api/v1/cron/status' --header 'Authorization: Bearer CRONJOB_KEY' ; curl --request POST --url 'http://localhost:3000/api/v1/cron/storage' --header 'Authorization: Bearer CRONJOB_KEY'C'est la procédure à suivre pour tout nouveau déploiement (un Nextcloud, une base PostgreSQL, une app maison…). Le dossier scripts/ est un kit à copier sur la machine à sauvegarder : trois commandes, et la sauvegarde est en place, planifiée, vérifiée et surveillée.
# Sur la machine qui héberge l'application, à côté de ce qu'on sauvegarde :
git clone https://github.com/CoopCodeCommun/borgwarehouse /tmp/bw
cp -r /tmp/bw/scripts /opt/nextcloud/backup && cd /opt/nextcloud/backup
cp env_example .env && chmod 600 .env
$EDITOR .env # BACKUP_TYPE=folder + DUMPS_DIRECTORY=/var/lib/nextcloud
make init # clé SSH, dépôt BWH, borg init, cron, 1re sauvegarde
make check # est-ce vraiment restaurable ?make init enchaîne tout ce que l'ancienne procédure manuelle demandait de faire à la main : il génère la clé SSH dédiée, crée le dépôt sur borgwarehouse via son API, tire une passphrase, initialise le dépôt, exporte sa clé, pose le cron et lance une première sauvegarde qu'il vérifie.
Deux choses te seront demandées :
make init est rejouable : API injoignable, borg init raté, Ctrl-C en plein milieu — relance-le, il reprend ce qui existe. Le seul cas où il refuse, c'est quand le dépôt contient déjà des archives, car régénérer une passphrase les rendrait illisibles.
| BACKUP_TYPE | Pour quoi |
|---|---|
| folder | Un dossier complet — Nextcloud, /home, un volume applicatif |
| postgres | Une base, ou toutes (pg_dumpall) |
| sqlite | Bases SQLite (snapshot cohérent) |
Une application dockerisée dont la base tourne dans un conteneur ? Le dépôt ghost applique le même kit à une stack Docker Compose (dump via docker compose exec) : c'est le modèle à copier.
Rappel borgwarehouse : une clé SSH = un dépôt. Une machine qui sauvegarde plusieurs cibles a besoin d'une clé par dépôt — make init s'en occupe, et plusieurs sauvegardes cohabitent sans collision sur la même machine.
Qu'une archive existe ne prouve rien. make check répond à la seule question qui compte, est-ce restaurable ?, sans rien restaurer : archive récente, contenu attendu, et surtout données exploitables — un dump PostgreSQL est déroulé entièrement dans pg_restore, une base SQLite doit avoir un en-tête valide. Un dump tronqué (disque plein, process tué) a une taille crédible, se trouve bien dans l'archive, et ne se restaure pas.
Il sort en code non nul si quelque chose cloche : branchable tel quel sur un monitoring. Détails dans le README de scripts/.
Et n'oublie pas l'autre filet : borgwarehouse t'envoie un mail si un dépôt ne reçoit plus rien. Un cron qui échoue en silence, c'est un backup qui n'existe pas.
L'ancienne procédure, dépliéeborg init -e repokey-blake2 <adresse ssh>
Exemple sur le même serveur : borg init -e repokey-blake2 ssh://borgwarehouse@localhost:2226/./155b31d4
Exemple sur un serveur distant : borg init -e repokey-blake2 ssh://borgwarehouse@borgwarehouse.moi.me:2226/./155b31d4
Le dépôt n'est pas initialisé dans le dossier courant, mais bien dans le dossier monté du conteneur BWH.
borg key export <adresse ssh>
Autre exemple externe pour Postgres : https://github.com/TiBillet/Lespass/blob/PreProd/cron/saveDb.sh
Il a été lancé avec le up et est configuré pour avoir le dossier repo ( le même ou borg mets les repo ) dans /home/borgwarehouse/repos
Attention, choisir ce chemin que pour synchroniser le dossier borg ne pas rajouter dans le futur d'autres dossier sync depuis synthing dans ce dossier utiliser pour cela le dossier /sync_data
| Back | FazBrowse Home | New Git URL |