Comment sauvegarder mon VPS et mes conteneurs ?
Une sauvegarde de VM protège le disque entier, mais une sauvegarde applicative reste nécessaire pour les bases et volumes actifs.
Une sauvegarde de VM protège le disque entier, mais une sauvegarde applicative reste nécessaire pour les bases et volumes actifs.
Procédure étape par étape
-
Identifier les données
Listez volumes Docker, bases, fichiers de configuration, clés et données utilisateur.
-
Créer des exports cohérents
Utilisez les outils de dump de la base et arrêtez brièvement l’application si elle ne supporte pas les snapshots à chaud.
-
Vérifier les sauvegardes du panel
Dans « Outils supplémentaires », l’entrée « Sauvegardes » est actuellement marquée « Indisponible ». Ne comptez pas dessus : vos exports copiés hors du VPS sont pour l’instant votre seule sauvegarde.
-
Copier hors du VPS
Transférez les exports vers un stockage distinct. Une copie sur le même disque ne protège pas d’une panne ou suppression.
-
Tester la restauration
Restaurez périodiquement dans un environnement isolé et notez la procédure ainsi que la durée.
Archive d’un volume n8n
docker run --rm \
-v n8n_data:/data:ro \
-v /var/backups:/backup \
alpine tar -czf /backup/n8n-data.tar.gz -C /data .
Export quotidien du volume n8n (crontab -e)
30 3 * * * docker run --rm -v n8n_data:/data:ro -v /var/backups:/backup alpine tar -czf /backup/n8n-$(date +\%F).tar.gz -C /data .
0 4 * * * find /var/backups -name 'n8n-*.tar.gz' -mtime +7 -delete
Récupérer les archives sur votre ordinateur
rsync -avz root@IP:/var/backups/ ./vps-backups/
Quoi exporter et comment
Une archive de fichiers prise pendant qu’une base écrit peut être inutilisable. Exportez chaque base avec son propre outil, puis archivez le reste.
- MariaDB ou MySQL : mysqldump --single-transaction --all-databases > /var/backups/mysql.sql.
- PostgreSQL dans un conteneur : docker exec db pg_dumpall -U postgres > /var/backups/postgres.sql, où db est le nom du conteneur.
- Configuration : /etc, les fichiers compose.yaml et .env, le Caddyfile et la sortie de crontab -l.
- n8n : le volume n8n_data contient aussi la clé qui chiffre les identifiants enregistrés. Sans elle, les identifiants restaurés sont illisibles.
Copier et conserver les archives
Récupérez les archives depuis votre ordinateur ou un autre serveur avec rsync ou scp. Une copie tirée depuis l’extérieur reste disponible même si le VPS est compromis, plein ou réinstallé.
Planifiez l’export avec cron et gardez plusieurs versions datées : une copie unique, écrasée chaque nuit, reproduit aussi une erreur ou un fichier supprimé. Pour vérifier une archive, listez-la avec tar -tzf, puis restaurez-la dans un volume de test et démarrez l’application dessus.
Questions fréquentes
Le panel sauvegarde-t-il automatiquement mon VPS ?
Pas pour le moment. Dans « Outils supplémentaires », les entrées « Sauvegardes » et « Journaux sauvegardes » sont marquées « Indisponible ». Organisez vos propres exports et copiez-les hors du VPS.
Pourquoi tar: file changed as we read it ?
Un fichier a été modifié pendant l’archivage. Exportez d’abord la base avec son outil de dump, ou arrêtez le conteneur le temps de l’archive avec docker compose stop, puis relancez-le.
Que faire si No space left on device apparaît pendant la sauvegarde ?
Le disque est plein. Contrôlez avec df -h, repérez les gros dossiers avec du -sh /var/backups/* et docker system df, puis supprimez les anciennes archives déjà copiées ailleurs.
Pourquoi n8n affiche Credentials could not be decrypted après une restauration ?
La clé de chiffrement de l’instance ne correspond pas à celle des données. Restaurez le volume entier, fichier config compris, ou définissez N8N_ENCRYPTION_KEY avec l’ancienne clé avant de démarrer n8n.