[UPDATE 2026] MyVestaCP sur Debian 12 : installation, firewall et gestion des domaines
MyVestaCP sur Debian 12 : installation et configuration
Deuxième étape : installer un panel d’administration pour gérer les 17 domaines, le firewall, les certificats SSL et les bases de données — sans toucher au mail.
1) Pourquoi MyVestaCP ?
MyVestaCP est un fork maintenu de VestaCP (l’original a eu un incident de sécurité en 2018).
Il offre un panel web léger pour gérer :
- Sites web : Nginx (reverse proxy) + Apache (backend) + PHP-FPM
- Bases de données : MariaDB (pour les sites, Matomo, etc.)
- Firewall : iptables intégré au panel
- SSL : Let’s Encrypt automatique
- DNS : Bind9 intégré
- Fail2ban : jails préconfigurées (SSH, panel, web)
On n’installe pas le serveur mail (Exim/Dovecot) — on utilise des services externes pour ça. Ça réduit la surface d’attaque et la maintenance.
2) Prérequis
Avant de lancer l’installation, tu dois avoir :
- Debian 12 installé et à jour (voir article précédent)
- Accès SSH root (ou
sudo su) - Docker déjà installé (MyVestaCP ne le gère pas, il tourne à côté)
- Un hostname valide (FQDN) qui pointe vers l’IP du serveur — nécessaire pour le certificat SSL du panel
Important : MyVestaCP doit être installé en root, pas avec sudo.
Connecte-toi en root ou fais sudo su - avant de commencer.
3) Installation
3.1 Télécharger et lancer le script
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
curl -O http://c.myvestacp.com/vst-install-debian.sh bash vst-install-debian.sh \ --nginx yes \ --apache yes \ --phpfpm yes \ --mysql yes \ --postgresql no \ --named yes \ --exim no \ --dovecot no \ --clamav no \ --spamassassin no \ --iptables yes \ --fail2ban yes \ --quota no \ --lang fr \ --port 8083 |
3.2 Explication des choix
- Nginx + Apache + PHP-FPM : Nginx en frontal (rapide, SSL, cache), Apache en backend (compatibilité .htaccess), PHP-FPM pour la performance
- MariaDB : pour les sites web et Matomo. PostgreSQL n’est pas activé ici — Odoo utilisera son propre PostgreSQL via Docker
- Bind (DNS) : pratique pour gérer les zones DNS des 17 domaines directement depuis le panel
- Exim / Dovecot / ClamAV / SpamAssassin : désactivés — pas de mail hébergé sur ce serveur
- iptables + Fail2ban : firewall et anti-bruteforce gérés par le panel
- Port 8083 : port d’accès au panel web
L’installation prend environ 15 minutes. Le script demandera un email admin et proposera un mot de passe.
Il générera aussi une URL secrète pour accéder au panel — note-la bien.
3.3 À la fin de l’installation
Le script affiche un résumé avec :
- L’URL du panel :
https://ton-hostname:8083 - Le login :
admin - Le mot de passe généré
- L’URL secrète (paramètre à ajouter à l’URL)
Sauvegarde ces informations immédiatement. L’URL secrète est ta protection contre les scans automatiques.
Sans elle, le panel est inaccessible — c’est voulu.
4) Post-installation : les ajustements essentiels
4.1 Ouvrir le port SSH custom dans le firewall
MyVestaCP installe son propre firewall iptables. Si tu as changé le port SSH (ex : 38592),
il faut l’ajouter immédiatement sinon tu risques de perdre l’accès à ta prochaine déconnexion.
|
1 2 |
# Via la ligne de commande VestaCP v-add-firewall-rule ACCEPT 0.0.0.0/0 38592 TCP |
Ou depuis le panel web : Firewall → Add Rule → Port 38592, Action ACCEPT, Protocol TCP.
Fais-le AVANT de te déconnecter. Teste avec un 2e PuTTY sur le port 38592 pour confirmer que le firewall laisse passer.
4.2 Vérifier Fail2ban
MyVestaCP reconfigure Fail2ban avec ses propres jails. Vérifie que la jail SSH pointe bien sur ton port custom :
|
1 2 |
sudo fail2ban-client status sudo fail2ban-client status sshd |
Si le port SSH n’est pas le bon dans la jail, mets à jour /etc/fail2ban/jail.local :
|
1 2 3 4 |
[sshd] enabled = true port = 38592 backend = systemd |
|
1 |
sudo systemctl restart fail2ban |
4.3 Changer le port du panel (optionnel)
Si tu veux changer le port 8083 par un autre :
|
1 |
v-change-vesta-port 12345 |
4.4 Vérifier les services
|
1 2 3 4 5 6 |
# Tous les services doivent être actifs sudo systemctl status nginx --no-pager sudo systemctl status apache2 --no-pager sudo systemctl status mariadb --no-pager sudo systemctl status named --no-pager sudo systemctl status fail2ban --no-pager |
5) Installer plusieurs versions de PHP
MyVestaCP installe par défaut la version PHP fournie par Debian 12 (PHP 8.2).
Mais certains sites ou CMS peuvent nécessiter une version différente (ex : PHP 7.4 pour un vieux WordPress, PHP 8.3 pour Matomo récent).
MyVestaCP fournit un script officiel qui installe des versions PHP supplémentaires via le dépôt Sury
et crée automatiquement les templates Apache correspondants.
Prérequis : le multi-PHP ne fonctionne qu’avec l’installation Nginx + Apache (ou Apache seul).
Si tu as installé MyVestaCP en mode Nginx + PHP-FPM sans Apache, ce script ne fonctionnera pas.
5.1 Télécharger et configurer le script
|
1 2 |
# En root wget -nv -O ./vesta-inst-php.sh https://c.myvestacp.com/tools/multi-php-install.sh |
Ouvrir le script et choisir les versions à installer (mettre 1 au lieu de 0) :
|
1 |
nano ./vesta-inst-php.sh |
En haut du fichier, tu trouveras :
|
1 2 3 4 5 6 7 8 9 10 11 |
inst_56=0 # PHP 5.6 inst_70=0 # PHP 7.0 inst_71=0 # PHP 7.1 inst_72=0 # PHP 7.2 inst_73=0 # PHP 7.3 inst_74=0 # PHP 7.4 inst_80=0 # PHP 8.0 inst_81=0 # PHP 8.1 inst_82=0 # PHP 8.2 (déjà installé par défaut) inst_83=0 # PHP 8.3 inst_84=0 # PHP 8.4 |
Par exemple, pour ajouter PHP 7.4 et PHP 8.3 :
|
1 2 |
inst_74=1 # PHP 7.4 inst_83=1 # PHP 8.3 |
Sauvegarder (Ctrl+X, puis Y), puis lancer :
|
1 |
bash ./vesta-inst-php.sh |
Pendant l’installation, dpkg peut demander quoi faire avec php.ini (fichier modifié localement vs nouvelle version du paquet).
Choisis « keep the local version currently installed » — MyVestaCP a déjà ajusté ce fichier lors de son installation.
Patch déjà appliqué : pour certaines versions (notamment PHP 8.2), le script tente d’appliquer un patch
que MyVestaCP a déjà appliqué lors de l’installation initiale. Tu verras alors :
|
1 |
Reversed (or previously applied) patch detected! Assume -R? [n] |
Réponds n (ne pas inverser le patch). Ensuite apparaît :
|
1 |
Apply anyway? [n] |
Réponds également n. Le patch est déjà en place, inutile de le réappliquer — le script continuera normalement.
5.2 Utiliser une version PHP par domaine
Après l’installation, de nouveaux templates Apache apparaissent dans le panel.
Pour chaque domaine, tu peux choisir la version PHP via :
- Panel web : domaine → Edit → champ Apache2 Template → sélectionner ex :
PHP-7_4 - Ligne de commande :
v-change-web-domain-backend-tpl admin monsite.fr PHP-7_4
Chaque version PHP installée lance son propre service php-fpmX.Y.
Tu peux vérifier qu’ils tournent avec systemctl status php7.4-fpm par exemple.
6) Softaculous : installer des apps en un clic
Softaculous est un auto-installeur qui permet de déployer WordPress, Joomla, Matomo, PrestaShop
et des centaines d’autres applications en quelques clics depuis le panel MyVestaCP.
6.1 Installation
|
1 2 3 |
# En root curl -O http://c.myvestacp.com/tools/install-softaculous.sh bash install-softaculous.sh |
L’installation prend quelques minutes. Ensuite, attendre environ 5 minutes que le cron Softaculous
télécharge les paquets d’applications disponibles.
6.2 Accès
Après l’installation, déconnecte-toi puis reconnecte-toi au panel MyVestaCP.
Un nouvel onglet APPS apparaît dans le menu principal — c’est l’interface Softaculous.
Si l’onglet APPS n’apparaît pas, vérifie que Softaculous est activé :
Server → Configure → Vesta Control Panel Plugins → Softaculous → yes.
6.3 Utilisation
Depuis l’onglet APPS, tu peux installer un CMS sur n’importe quel domaine déjà configuré dans MyVestaCP.
Softaculous gère aussi les mises à jour automatiques et les sauvegardes des applications installées.
Softaculous est gratuit dans sa version de base (suffisante pour WordPress, Joomla, etc.).
La version premium débloque plus d’applications et de fonctionnalités, mais n’est généralement pas nécessaire pour un usage personnel.
7) Ajouter les domaines
Maintenant que les versions PHP et Softaculous sont prêts, on peut ajouter les domaines.
Depuis le panel (Web → Add Web Domain), ou en ligne de commande :
|
1 2 3 4 5 6 7 8 9 10 11 12 |
# Syntaxe : v-add-web-domain USER DOMAIN v-add-web-domain admin 2manygames.fr v-add-web-domain admin mcdavidian.fr v-add-web-domain admin metrodyn.fr v-add-web-domain admin lauvazur.fr v-add-web-domain admin mcdtoolbox.com v-add-web-domain admin kanasuc.mu v-add-web-domain admin kanasuc.fr v-add-web-domain admin timofeevadiaries.com v-add-web-domain admin hackofmana.com v-add-web-domain admin mcdavidian.hair v-add-web-domain admin mcdavidian.ru |
Les sous-domaines (amazon.mcdavidian.fr, debug.mcdavidian.fr, matomo.mcdtoolbox.com, fastdl.2manygames.fr)
peuvent être ajoutés comme domaines séparés ou comme alias — selon que tu veux des configs Nginx distinctes ou pas.
7.1 Certificats SSL (Let’s Encrypt)
Pour chaque domaine, activer le SSL :
|
1 2 3 4 |
# Syntaxe : v-add-letsencrypt-domain USER DOMAIN v-add-letsencrypt-domain admin 2manygames.fr v-add-letsencrypt-domain admin mcdavidian.fr # ... etc. |
Ou depuis le panel : domaine → Edit → cocher Let’s Encrypt Support.
Le DNS de chaque domaine doit pointer vers l’IP du serveur avant de demander le certificat.
Let’s Encrypt vérifie que le domaine est accessible sur le port 80.
8) Architecture : ce que gère MyVestaCP vs Docker
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
MyVestaCP (natif) ├── Nginx (reverse proxy + SSL) ├── Apache (backend PHP) ├── PHP-FPM ├── MariaDB (sites web + Matomo) ├── Bind9 (DNS) ├── Fail2ban (anti-bruteforce) ├── iptables (firewall) ├── Let's Encrypt (certificats SSL) └── 17 domaines / sous-domaines Docker (à côté, indépendant) ├── Odoo 17 + PostgreSQL 16 ├── Odoo 8 + PostgreSQL 9.6 ├── Akeneo PIM (gestion produits) ├── ownCloud ├── Matomo (optionnel, peut aussi être en PHP natif via VestaCP) └── ZNC Natif (hors panel) ├── 5× serveur CS 1.6 (HLDS) ├── 1× EmuLinker └── 3× TeamSpeak 3 |
Les services Docker sont exposés sur des ports internes. Nginx (géré par VestaCP) peut servir de reverse proxy
vers ces conteneurs pour les rendre accessibles en HTTPS sur un domaine.
9) Reverse proxy Nginx → Docker
Pour exposer un service Docker (ex : Odoo 17 sur le port 8069) via un domaine avec SSL,
on crée le domaine dans VestaCP puis on personnalise le template Nginx.
9.1 Exemple : Odoo 17 derrière Nginx
Après avoir créé le domaine (ex : odoo.mcdavidian.fr) dans VestaCP et activé Let’s Encrypt,
éditer le fichier de configuration Nginx :
|
1 |
sudo nano /home/admin/conf/web/odoo.mcdavidian.fr/nginx.ssl.conf |
Remplacer le contenu par :
|
1 2 3 4 5 6 7 8 9 10 |
location / { proxy_pass http://127.0.0.1:8069; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 720s; proxy_connect_timeout 720s; proxy_send_timeout 720s; } |
|
1 |
sudo systemctl reload nginx |
On verra la configuration détaillée de chaque service Docker dans les prochains articles (Odoo 17, ownCloud, etc.).
À suivre
MyVestaCP est en place : panel web, firewall, SSL, et les domaines sont configurés.
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
- Sauvegardes : stratégie et automatisation
- Serveurs de jeux : CS 1.6, TeamSpeak 3, EmuLinker
0 commentaire