Reconstruction
Ordre des opérations pour remonter le serveur principal sur une machine neuve ou réinstallée, à partir de la sauvegarde Plakar et de ce wiki.
Prérequis
| Élément | Où le trouver |
|---|---|
| Phrase secrète du dépôt Plakar | Copie hors ligne et gestionnaire de mots de passe (voir Sauvegarde) |
| Dépôt Plakar | SSD du Raspberry Pi |
| Jeton DuckDNS | Tableau de bord du site DuckDNS |
| Clés Turnstile | Tableau de bord Cloudflare |
| Jeton du bot Telegram | BotFather (/token) |
Ce qui n'est pas dans la sauvegarde
| Élément | Emplacement | Comment le recréer |
|---|---|---|
| Script de sauvegarde et tâche cron | /root/backup-plakar.sh, /etc/cron.d/backup-plakar | Page Sauvegarde |
| Clé SSH vers le dépôt et sa configuration | /root/.ssh/plakar_matrix, /root/.ssh/config | Nouvelle clé, à autoriser sur le Pi |
| Phrase secrète du dépôt | /root/.plakar-pass | Copie hors ligne |
| Jeton et groupe Telegram | /root/.backup-telegram | BotFather |
| Données de Portainer (stacks, variables) | Volume portainer_data | Stacks recopiées depuis les pages de ce wiki, ou archive « Backup Portainer » |
| Volumes Docker nommés (Dawarich, Wallabag, Jellystat, Photon) | /var/lib/docker/volumes | Bases restaurées depuis les dumps SQL ; index Photon retéléchargé |
| Base d'Immich | <DOSSIER_IMMICH> hors library | Dump SQL |
1. Système
- Debian 13, installation minimale avec SSH.
- rsyslog : sans lui, pas de /var/log/auth.log et pas de surveillance SSH par CrowdSec.
- Noyau Zabbly (optionnel, Secure Boot désactivé).
- Lynis et Oh My Bash.
2. Docker
Dépôt officiel de Docker (paquets docker-ce, docker-ce-cli, containerd.io, docker-buildx-plugin, docker-compose-plugin), puis :
docker network create proxy
docker network create docker-api
3. Restauration des données
Installer Plakar, créer une clé SSH et l'autoriser sur le Pi (voir « Mise en place du dépôt » dans Sauvegarde), puis :
sudo plakar -keyfile /root/.plakar-pass at "<REPO>" restore -to /restore <ID_INSTANTANE>
Replacer ensuite à leur emplacement d'origine, avec leurs droits :
| Restauré | Destination |
|---|---|
| /restore/<APPDATA> | <APPDATA> |
| /restore/<BIBLIOTHEQUE_IMMICH> | <BIBLIOTHEQUE_IMMICH> |
| /restore/<CONTENU_JOPLIN> | <CONTENU_JOPLIN> |
Les dumps SQL de toutes les bases sont dans <APPDATA>/dumps.
4. Portainer
Voir Portainer : instance centrale, modèles d'applications, logo, puis ajout de l'environnement du Raspberry Pi (agent).
5. Accès et sécurité
Dans cet ordre, pour que chaque service publié soit protégé dès son démarrage :
- docker-socket-proxy
- DuckDNS
- Stack swag : SWAG, Authelia, CrowdSec. Nouvelle clé de bouncer : cscli bouncers add swag-bouncer.
Vérifier le certificat et l'accès au portail Authelia avant de continuer.
6. Services
Pour chaque service, recopier la stack de sa page, recréer ses variables d'environnement, déployer.
Bases dont les fichiers bruts ne sont pas sauvegardés : démarrer la base seule, réinjecter le dump, puis démarrer l'application.
| Base | Dump | Réinjection |
|---|---|---|
| MariaDB (XWiki, Passbolt, Castopod) | <CONTENEUR>.sql (toutes bases) | docker exec -i <CONTENEUR> sh -c 'exec mariadb -uroot -p"$MARIADB_ROOT_PASSWORD"' < <DUMP> |
| MariaDB Nextcloud | nextcloud.sql (base applicative) | docker exec -i <CONTENEUR> sh -c 'exec mariadb -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" "$MYSQL_DATABASE"' < <DUMP> |
| PostgreSQL (tous) | <CONTENEUR>.sql (instance complète) | docker exec -i <CONTENEUR> sh -c 'exec psql -U "$POSTGRES_USER" -d postgres' < <DUMP> |
Ordre conseillé : Passbolt (pour retrouver les autres secrets), Nextcloud, XWiki, puis les autres dans l'ordre du bandeau de Serveur principal.
Passbolt a aussi besoin de sa clé serveur : <APPDATA>/passbolt/gpg, restauré avec le reste.
7. Sauvegarde et surveillance
- Script, tâche cron, fichier Telegram : Sauvegarde.
- Premier lancement à la main, puis attendre le ✅.
- Watchtower et le workflow de notification de n8n.
- Premier audit : sudo lynis audit system.