Déménager son serveur vers un nouveau VPS, sans perdre de données
Changer d'hébergeur ou de taille de serveur : préparer le nouveau, copier /opt/stacks avec rsync, basculer le DNS et vérifier. Avec une coupure de quelques minutes seulement.
Votre serveur est trop petit, ou vous changez d’hébergeur ? Avec une installation faite par Mon serveur,
tout ce qui compte est dans /opt/stacks : le déménagement consiste à copier ce dossier au bon moment.
La coupure dure le temps de la copie finale, quelques minutes.
Le principe
- Préparer le nouveau serveur avec le même script.
- Faire une première copie pendant que l’ancien tourne encore.
- Arrêter l’ancien, faire une copie finale (rapide : seules les différences sont copiées).
- Démarrer le nouveau, basculer le DNS.
L’ancien serveur reste intact jusqu’à la fin : en cas de souci, on revient en arrière en remettant l’ancien DNS.
1. Préparer le terrain
- Baissez la durée de vie du DNS (TTL) à 5 minutes chez votre registrar, la veille : la bascule sera prise en compte plus vite.
- Faites une sauvegarde et vérifiez qu’elle est copiée ailleurs.
- Notez la liste des applications et leurs adresses :
ls /opt/stacks.
2. Installer le nouveau serveur
Sur le nouveau VPS, lancez le même script de Mon serveur (même panier, mêmes sous-domaines, mêmes options). La vérification du DNS affichera des avertissements (les domaines pointent encore vers l’ancien serveur) : c’est normal à ce stade.
Puis arrêtez toutes les applications du nouveau serveur, on va remplacer leurs données :
for d in /opt/stacks/*/; do sudo docker compose --project-directory "$d" down; done
3. Permettre la copie entre les deux serveurs
Le plus simple : depuis votre ordinateur, avec le transfert d’agent SSH, connectez-vous à l’ancien serveur :
ssh -A utilisateur@ANCIEN_SERVEUR
Depuis cette session, l’ancien serveur peut se connecter au nouveau avec votre clé, sans la copier nulle part.
4. Première copie (sans coupure)
Sur l’ancien serveur :
sudo --preserve-env=SSH_AUTH_SOCK rsync -aHAX --numeric-ids --delete --rsync-path="sudo rsync" \
/opt/stacks/ utilisateur@NOUVEAU_SERVEUR:/opt/stacks/
sudoest nécessaire pour lire tous les fichiers ;--preserve-env=SSH_AUTH_SOCKlui permet d’utiliser votre clé transférée parssh -A;--rsync-path="sudo rsync"écrit en root sur le nouveau serveur (l’utilisateur doit pouvoir utilisersudosans mot de passe, comme sur la plupart des VPS) ;-aHAX --numeric-ids: garde les propriétaires, les droits et les liens exactement à l’identique (important pour les applications qui ne tournent pas en root) ;--delete: le nouveau dossier devient le reflet exact de l’ancien, y compris les fichiers.env: les mots de passe générés sur le nouveau serveur sont remplacés par les anciens, ceux que vos bases de données connaissent.
Pour les médias en dehors de /opt/stacks (/srv/medias…), faites la même chose avec leur dossier.
Cette copie peut être longue (photos, vidéos), mais les applications tournent toujours.
5. La bascule
Sur l’ancien serveur, arrêtez tout pour figer les données :
for d in /opt/stacks/*/; do sudo docker compose --project-directory "$d" stop; done
Relancez exactement la même commande rsync : seules les modifications depuis la première copie sont transférées.
C’est rapide.
Sur le nouveau serveur, démarrez le reverse proxy puis les applications :
sudo docker compose --project-directory /opt/stacks/traefik up -d
for d in /opt/stacks/*/; do sudo docker compose --project-directory "$d" up -d; done
Enfin, chez votre registrar, remplacez l’ancienne IP par la nouvelle dans les entrées DNS.
6. Vérifier
getent ahostsv4 vault.mondomaine.frsur le nouveau serveur doit afficher sa propre IP.- Ouvrez chaque application : vos données doivent être là. Les certificats HTTPS sont recréés automatiquement en quelques secondes.
- Vérifiez les tâches automatiques :
systemctl list-timers(installées par le script à l’étape 2).
7. Après quelques jours
Quand tout est confirmé, remettez un TTL normal (1 heure ou plus), puis résiliez l’ancien serveur, sans oublier de supprimer ses données chez l’hébergeur (réinstallation ou effacement du disque) avant de le rendre.
Et sans l’ancien serveur ?
Si l’ancien serveur est perdu, la méthode est la même, mais à partir de vos sauvegardes : installez le nouveau serveur avec le script, puis restaurez chaque application depuis les archives copiées ailleurs.
Une commande qui ne marche pas, une explication pas claire ? Signaler une erreur dans cette page.