Introduction
Un backup non testé n'est pas un backup. Un backup au même endroit que le serveur n'est qu'un demi-backup. Ce guide te donne une stratégie 3-2-1 réaliste pour Minecraft : 3 copies, 2 supports différents, 1 hors site, avec chiffrement et rotation automatique.
Prérequis
- Un serveur Minecraft chez VeryCloud (Paper / Spigot / Fabric / Forge / Vanilla)
- Accès panel Wisp
- Un VPS externe ou stockage S3 / B2 pour l'offsite
- restic installé sur le VPS externe
Étape 1 : Schedule de backup Wisp local
Premier niveau : un snapshot quotidien dans Wisp.
- Panel → ton serveur → Schedules
- Create Schedule :
- Name :
Daily backup 4 AM - Cron :
0 4 * * * - Only when online : oui
- Name :
- Add Task :
- Action : Create Backup
- Backup name :
daily-{date}
Garde 7 jours de profondeur (Wisp purge les vieux selon ton plan).
Étape 2 : Schedule weekly avec rétention plus longue
Crée un second schedule hebdomadaire pour garder 4 backups sur un mois sans saturer le quota.
Name : Weekly backup Sunday 5 AM
Cron : 0 5 * * 0
Task : Create Backup
Étape 3 : Le offsite — pourquoi c'est non-négociable
Tous tes backups sont dans Wisp = même infrastructure que le serveur. Si l'infra crashe (data center down, account compromise, suppression accidentelle), tu perds tout.
Solution : tirer une copie vers un autre lieu. restic est l'outil de référence : open source, dedup natif, chiffrement AES-256, multi-backend (S3, B2, SFTP, local, etc.).
Étape 4 : Installer restic sur ton VPS externe
# Debian/Ubuntu
apt update && apt install -y restic
# Vérifier la version
restic version
Étape 5 : Préparer le dépôt restic
# Variable d'environnement pour le mot de passe
export RESTIC_PASSWORD="UN_MDP_TRES_LONG_ALEATOIRE"
export RESTIC_REPOSITORY="/backups/restic-mc"
# Ou pour S3 :
# export RESTIC_REPOSITORY="s3:s3.amazonaws.com/mon-bucket"
# export AWS_ACCESS_KEY_ID=...
# export AWS_SECRET_ACCESS_KEY=...
# Initialiser le repo
restic init
⚠️ Note bien ce mot de passe ailleurs (gestionnaire de mots de passe). Sans lui, les backups sont irrécupérables. restic chiffre tout avec.
Étape 6 : Script de pull SFTP + restic
Sur ton VPS externe :
#!/bin/bash
# /usr/local/bin/mc-backup-offsite.sh
set -e
WISP_HOST="sftp.verycloud.fr"
WISP_PORT="2022"
WISP_USER="ton.user.wisp"
WISP_KEY="/root/.ssh/wisp_id_ed25519"
WORKDIR="/tmp/mc-backup-$(date +%s)"
mkdir -p "$WORKDIR"
# Pull via sftp (sshfs serait plus elegant mais bof la dependance)
sftp -i $WISP_KEY -P $WISP_PORT -r "$WISP_USER@$WISP_HOST:/world*" "$WORKDIR/"
sftp -i $WISP_KEY -P $WISP_PORT -r "$WISP_USER@$WISP_HOST:/plugins" "$WORKDIR/"
sftp -i $WISP_KEY -P $WISP_PORT "$WISP_USER@$WISP_HOST:/server.properties" "$WORKDIR/"
sftp -i $WISP_KEY -P $WISP_PORT "$WISP_USER@$WISP_HOST:/ops.json" "$WORKDIR/"
sftp -i $WISP_KEY -P $WISP_PORT "$WISP_USER@$WISP_HOST:/whitelist.json" "$WORKDIR/"
# Snapshot dans restic
export RESTIC_PASSWORD_FILE="/root/.restic-pass"
export RESTIC_REPOSITORY="/backups/restic-mc"
restic backup "$WORKDIR" --tag minecraft --tag $(date +%F)
# Cleanup
rm -rf "$WORKDIR"
# Retention : garder 7 quotidiens, 4 weekly, 6 monthly
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
# Verification d'integrite (1x par semaine c'est suffisant)
if [ "$(date +%u)" = "7" ]; then
restic check
fi
Mets RESTIC_PASSWORD dans /root/.restic-pass (chmod 600) pour ne pas l'exposer en env.
Étape 7 : Cron sur le VPS externe
crontab -e
# Tous les jours a 5h, apres le backup Wisp de 4h
0 5 * * * /usr/local/bin/mc-backup-offsite.sh >> /var/log/mc-backup.log 2>&1
Étape 8 : Tester une restauration
Une fois par mois :
# Lister les snapshots
restic snapshots
# Restaurer le dernier dans /tmp/test-restore
restic restore latest --target /tmp/test-restore
# Verifier
ls -la /tmp/test-restore
Si le contenu est cohérent (world/, plugins/, etc.), ta chaîne marche.
Étape 9 : Stratégie de rétention détaillée
| Niveau | Lieu | Fréquence | Rétention |
|---|---|---|---|
| 1 | Wisp local | Quotidien 4h | 7 jours |
| 2 | Wisp local | Hebdo dimanche 5h | 4 semaines |
| 3 | VPS externe + restic | Quotidien 5h | 7 jours + 4 weekly + 6 monthly |
| 4 (optionnel) | S3 / B2 via restic | Hebdomadaire | 12 mois |
Le niveau 4 est utile si tu veux un disaster recovery extrême (incendie du VPS externe). Coût : quelques euros/mois.
Dépannage
SFTP qui demande un mot de passe interactif
- Génère une clé SSH (
ssh-keygen -t ed25519) et upload la publique dans Wisp → Settings → SSH Keys - Utilise
-i /root/.ssh/wisp_id_ed25519danssftp
restic dit "wrong password"
- C'est probablement vrai : un caractère spécial mal échappé, un espace en début/fin
- Vérifie
cat -A /root/.restic-passpour voir les caractères invisibles
Disque externe plein
- restic.forget --prune libère vraiment l'espace seulement après prune
- Augmente la rétention ou monte de stockage
Le world Minecraft est en cours d'écriture pendant le pull → corruption
- Avant le pull, envoie une commande
save-offvia RCON pour stopper les écritures - Ou utilise plutôt les backups Wisp natifs (qui font le quiesce eux-mêmes), et ne télécharge que ces archives
Commandes utiles
# Lister les snapshots restic
restic snapshots
# Stats du depot
restic stats
# Voir la taille reelle apres dedup
restic stats --mode raw-data
# Restaurer un snapshot specifique
restic restore <snapshot-id> --target /tmp/restore
# Verifier l'integrite du depot (lent)
restic check --read-data
Conclusion
Backups Minecraft pro = Wisp pour le quotidien + restic offsite pour la résilience. restic gère le chiffrement, la dedup et la rétention automatiquement. Le coût marginal d'un VPS externe ou d'un bucket B2 (~3€/mois pour 100 Go) est ridicule comparé au prix de perdre une saison entière.
Pour aller plus loin : alerting Slack/Discord si un backup échoue, restic + healthchecks.io, deduplication entre serveurs multiples.


















