[UPDATE 2026] Migration des sites web vers un nouveau serveur dédié (VestaCP → MyVestaCP)
Migration des sites web vers le nouveau serveur
Troisième étape : migrer les sites statiques, WordPress et PrestaShop d’un VestaCP vers MyVestaCP, sans downtime.
1) Stratégie de migration
L’idée est simple : préparer tout sur le nouveau serveur pendant que l’ancien tourne encore.
On ne touche au DNS qu’à la toute fin, quand on a vérifié que tout fonctionne. Ça évite le downtime.
Ordre recommandé
- Sites statiques — les plus simples, parfaits pour valider la procédure
- WordPress — migration via plugin, rapide et fiable
- PrestaShop — les plus complexes, migration manuelle + Softaculous Premium
Les deux serveurs ont VestaCP / MyVestaCP — la structure des fichiers est identique
(/home/admin/web/domaine.fr/public_html/), ce qui simplifie les copies.
Prérequis
- Accès SSH (root) aux deux serveurs (ancien + nouveau)
- Les domaines déjà créés dans MyVestaCP sur le nouveau serveur (voir article précédent)
- Ne pas toucher au DNS pour l’instant — l’ancien serveur continue de servir les visiteurs
1.1 Préparer l’accès SSH entre les deux serveurs
Pour copier les fichiers avec rsync, le nouveau serveur doit pouvoir se connecter
en SSH à l’ancien. Si l’ancien serveur a un 2FA (TOTP) activé,
rsync ne pourra pas s’authentifier de manière interactive.
La solution : créer une clé SSH dédiée au transfert et autoriser le nouveau serveur par IP.
Étape 1 — Générer une clé SSH sur le nouveau serveur
|
1 2 3 |
# Sur le NOUVEAU serveur (en root) ssh-keygen -t ed25519 -N "" -f /root/.ssh/id_ed25519 cat /root/.ssh/id_ed25519.pub |
Copie la clé publique affichée (la ligne entière commençant par ssh-ed25519 ...).
Étape 2 — Ajouter la clé sur l’ancien serveur
|
1 2 |
# Sur l'ANCIEN serveur nano /root/.ssh/authorized_keys |
Colle la clé publique sur une nouvelle ligne à la fin du fichier. Sauvegarde.
Étape 3 — Autoriser le nouveau serveur sans 2FA
Toujours sur l’ancien serveur, ajouter à la fin de /etc/ssh/sshd_config :
|
1 2 |
# Sur l'ANCIEN serveur nano /etc/ssh/sshd_config |
Ajouter tout en bas :
|
1 2 3 |
Match Address IP_NOUVEAU_SERVEUR AuthenticationMethods publickey PermitRootLogin yes |
Remplacer IP_NOUVEAU_SERVEUR par l’adresse IP du nouveau serveur.
Cette règle dit : « depuis cette IP, accepter la clé SSH seule, sans mot de passe ni code TOTP,
et autoriser le login root ». Sans PermitRootLogin yes dans le bloc Match,
la connexion sera refusée si le paramètre global est no.
Tous les autres accès restent protégés par le 2FA.
|
1 |
systemctl restart ssh |
Étape 4 — Tester la connexion
|
1 2 |
# Depuis le NOUVEAU serveur ssh -p PORT_ANCIEN root@IP_ANCIEN "echo OK" |
Si tu vois OK sans qu’on te demande de mot de passe ni de code TOTP, c’est prêt.
« Connection refused » ? Si tu as tenté de te connecter plusieurs fois avant de configurer la clé,
l’IP du nouveau serveur a pu être bannie. Deux endroits à vérifier sur l’ancien serveur :
1. Fail2ban (débannir l’IP) :
|
1 2 3 4 5 |
# Vérifier les IP bannies fail2ban-client status sshd # Débannir l'IP du nouveau serveur fail2ban-client set sshd unbanip IP_NOUVEAU_SERVEUR |
2. iptables / firewall VestaCP — VestaCP gère ses propres règles iptables,
parfois sous un nom de chaîne différent (ex : fail2ban-SSH au lieu de f2b-sshd).
Même après un unbanip, l’IP peut rester bloquée dans iptables :
|
1 2 3 4 5 |
# Chercher la règle qui bloque l'IP iptables -S | grep IP_NOUVEAU_SERVEUR # Supprimer la règle (adapter le nom de chaîne) iptables -D fail2ban-SSH -s IP_NOUVEAU_SERVEUR/32 -j REJECT --reject-with icmp-port-unreachable |
Sécurité : une fois la migration terminée, pense à supprimer le bloc
Match Address de l’ancien serveur et à retirer la clé du fichier authorized_keys.
Pas besoin de laisser cet accès ouvert indéfiniment.
2) Migrer un site statique (ex : 2manygames.fr)
Un site statique n’a pas de base de données — ce sont uniquement des fichiers HTML, CSS, JS et images.
La migration se résume à copier les fichiers et vérifier les permissions.
2.1 Copier les fichiers depuis l’ancien serveur
Depuis le nouveau serveur (en root), on utilise rsync pour copier le contenu du site :
|
1 2 3 4 |
# Depuis le NOUVEAU serveur rsync -avz -e "ssh -p PORT_ANCIEN" \ root@IP_ANCIEN:/home/admin/web/2manygames.fr/public_html/ \ /home/admin/web/2manygames.fr/public_html/ |
Remplacer :
PORT_ANCIEN: le port SSH de l’ancien serveurIP_ANCIEN: l’adresse IP de l’ancien serveur
rsync est préférable à scp : il ne copie que les fichiers modifiés (pratique si tu relances la commande),
et il préserve les permissions.
2.2 Corriger les permissions
|
1 |
chown -R admin:admin /home/admin/web/2manygames.fr/public_html/ |
Important : MyVestaCP s’attend à ce que les fichiers appartiennent à l’utilisateur du panel (ici admin).
Si les permissions sont mauvaises, Nginx/Apache retournera une erreur 403.
2.3 Tester sans toucher au DNS
Avant de basculer le DNS, on peut forcer son PC à résoudre le domaine vers le nouveau serveur
en modifiant le fichier hosts :
Sur Windows — ouvrir en administrateur :
|
1 |
C:\Windows\System32\drivers\etc\hosts |
Sur Mac / Linux :
|
1 |
sudo nano /etc/hosts |
Ajouter la ligne :
|
1 |
IP_NOUVEAU_SERVEUR 2manygames.fr www.2manygames.fr |
Puis ouvrir http://2manygames.fr dans le navigateur.
Si le site s’affiche correctement, la migration est prête.
Pense à supprimer cette ligne du fichier hosts après avoir basculé le DNS,
sinon tu ne verras jamais le vrai DNS depuis ton PC.
2.4 Basculer le DNS
Quand le test est concluant, changer l’enregistrement A du domaine
pour pointer vers l’IP du nouveau serveur :
- Chez ton registrar (OVH, Gandi, Cloudflare…) ou dans la zone DNS OVH
- Modifier le A record de
2manygames.fr→IP_NOUVEAU_SERVEUR - Idem pour
www(A record ou CNAME vers le domaine principal)
La propagation DNS prend entre 5 minutes et 24 heures selon les TTL et les FAI.
Pendant ce temps, certains visiteurs voient l’ancien serveur, d’autres le nouveau — c’est normal et transparent.
2.5 Activer le SSL (Let’s Encrypt)
Une fois le DNS propagé (le domaine pointe vers le nouveau serveur), activer le certificat SSL :
|
1 |
v-add-letsencrypt-domain admin 2manygames.fr |
Ou depuis le panel : domaine → Edit → cocher Let’s Encrypt Support.
Attendre que le DNS soit propagé avant de demander le certificat.
Let’s Encrypt vérifie que le domaine pointe bien vers le serveur sur le port 80.
Si le DNS n’a pas encore basculé, la demande échouera.
3) Migrer un site WordPress (via Softaculous)
Softaculous Premium permet d’importer un WordPress directement depuis l’ancien serveur :
il copie les fichiers et la base de données en une seule opération.
Plus besoin de plugin de migration.
3.1 Lancer l’import depuis Softaculous
Dans le panel MyVestaCP → onglet APPS (Softaculous) → WordPress
→ Import → onglet Import From Remote Server.
Section « Destination » (nouveau serveur)
- Protocol :
http:// - Domain : sélectionner le domaine cible (ex :
mcdavidian.fr) - In Directory : laisser vide (installation à la racine)
Section « Source » (ancien serveur)
- Domain Name : le domaine du site (ex :
mcdavidian.fr) - Server Host : l’IP de l’ancien serveur (ex :
54.36.51.208) - Protocol :
SFTP(pas FTP — on passe par SSH) - Port : le port SSH de l’ancien serveur (ex :
38596) - Username :
root(on réutilise la clé SSH configurée à l’étape 1.1) - Authentication method :
SSH Key - Private Key : coller le contenu de la clé privée du nouveau serveur
(cat /root/.ssh/id_ed25519— tout le bloc, y compris les lignes BEGIN/END) - Passphrase : laisser vide (clé sans passphrase)
- SFTP Path :
/home/admin/web/mcdavidian.fr/public_html
Grâce au bloc Match Address configuré dans la section 1.1, la connexion SFTP
utilise la clé SSH directement — pas besoin de mot de passe ni de code 2FA.
Alternative FTP : si le SFTP ne fonctionne pas, tu peux utiliser le protocole
FTP (port 21) avec l’utilisateur FTP créé par VestaCP pour le domaine
(ex : admin_timo). Dans ce cas, le FTP Path est simplement
/public_html (chemin relatif au home de l’utilisateur FTP).
Section « Database » (ancien serveur)
Les identifiants de la base de données sur l’ancien serveur.
Tu les trouves dans wp-config.php du site source :
|
1 2 3 |
# Sur l'ANCIEN serveur grep -E 'DB_NAME|DB_USER|DB_PASSWORD|DB_HOST' \ /home/admin/web/mcdavidian.fr/public_html/wp-config.php |
- Database Name : la valeur de
DB_NAME - Database User : la valeur de
DB_USER - Database Password : la valeur de
DB_PASSWORD - Database Host :
localhost
Cliquer sur Import et patienter — Softaculous copie les fichiers via SFTP et exporte/importe la BDD.
Softaculous crée automatiquement la base de données sur le nouveau serveur
et adapte le wp-config.php avec les nouveaux identifiants.
3.2 Vérifier et basculer
- Tester via le fichier
hosts(même méthode que pour le site statique) - Vérifier le front-office et le back-office (se connecter avec les identifiants de l’ancien site)
- Basculer le DNS (A record → nouvelle IP)
- Activer Let’s Encrypt une fois le DNS propagé
- Vérifier les permaliens : Réglages → Permaliens → sauvegarder
4) Migrer un site PrestaShop (via Softaculous)
Même principe que WordPress : Softaculous Premium importe le PrestaShop depuis l’ancien serveur
(fichiers + BDD). C’est la méthode la plus sûre pour un CMS complexe avec des centaines de tables,
des modules custom et des thèmes modifiés.
4.1 Lancer l’import depuis Softaculous
Panel MyVestaCP → APPS (Softaculous) → PrestaShop
→ Import → onglet Import From Remote Server.
Section « Destination »
- Protocol :
http:// - Domain : sélectionner le domaine cible
- In Directory : laisser vide
Section « Source »
- Domain Name : le domaine du site PrestaShop
- Server Host : l’IP de l’ancien serveur
- Protocol :
SFTP - Port : le port SSH de l’ancien serveur
- Username :
root - Authentication method :
SSH Key(même clé que pour WordPress) - Private Key : contenu de
/root/.ssh/id_ed25519du nouveau serveur - Passphrase : vide
- SFTP Path :
/home/admin/web/domaine.fr/public_html
Section « Database »
Les identifiants de la BDD source. Selon la version de PrestaShop :
PrestaShop 1.7+ :
|
1 2 3 |
# Sur l'ANCIEN serveur grep -E "'database_name'|'database_user'|'database_password'" \ /home/admin/web/domaine.fr/public_html/app/config/parameters.php |
PrestaShop 1.6 :
|
1 2 |
grep -E '_DB_NAME_|_DB_USER_|_DB_PASSWD_' \ /home/admin/web/domaine.fr/public_html/config/settings.inc.php |
- Database Name, Database User, Database Password : les valeurs trouvées ci-dessus
- Database Host :
localhost
Cliquer sur Import et patienter.
Softaculous adapte automatiquement la configuration (identifiants BDD, chemins)
et prend en charge le site pour les futures sauvegardes et mises à jour.
4.2 Vérifications post-import
Après l’import, quelques vérifications spécifiques à PrestaShop :
- Vider le cache :
123456# PrestaShop 1.7+rm -rf /home/admin/web/domaine.fr/public_html/var/cache/*# PrestaShop 1.6rm -rf /home/admin/web/domaine.fr/public_html/cache/smarty/compile/*rm -rf /home/admin/web/domaine.fr/public_html/cache/smarty/cache/* - Tester via le fichier
hosts: front-office et back-office - Basculer le DNS (A record → nouvelle IP)
- Activer Let’s Encrypt une fois le DNS propagé
- Dans le back-office : Préférences → SEO & URLs → activer SSL si nécessaire
5) Checklist de migration par site
Pour chaque site migré, vérifier :
- Fichiers copiés et permissions corrigées (
admin:admin) - Base de données importée (si applicable)
- Configuration adaptée (identifiants BDD, host)
- Test via fichier
hosts: front-office OK - Test via fichier
hosts: back-office OK (WordPress/PrestaShop) - DNS basculé (A record → nouvelle IP)
- Let’s Encrypt activé (après propagation DNS)
- Ligne retirée du fichier
hostslocal - Cache vidé (navigateur + serveur)
À suivre
Les sites web sont migrés et fonctionnels sur le nouveau serveur.
Dans les prochains articles :
- Odoo 17 en Docker avec reverse proxy Nginx
- Akeneo PIM : gestion centralisée des produits (Docker)
- ownCloud : migration des données et Docker Compose
- Serveurs de jeux : CS 1.6, TeamSpeak 3, EmuLinker
- Sauvegardes : stratégie et automatisation
0 commentaire