[UPDATE 2026] MyVestaCP sur Debian 12 : installation, firewall et gestion des domaines

Published by David on






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 vos domaines, le firewall, les certificats SSL et les bases de données — sans toucher au mail.

Personnalisation de ce guide
Ce guide utilise des placeholders (entre doubles accolades) que vous devez
remplacer par vos propres valeurs. Si vous utilisez une IA pour adapter ce document,
fournissez-lui le tableau ci-dessous avec vos paramètres — elle générera
automatiquement une version personnalisée.
Placeholder Description Exemple
{{PORT_SSH}} Port SSH personnalisé (éviter 22) 38592
{{USER_VESTA}} Utilisateur admin MyVestaCP admin
{{DOMAINES}} Liste de vos noms de domaine exemple.com, monsite.fr, autresite.org
{{DOMAINE_PRINCIPAL}} Votre domaine principal exemple.com
{{SOUS_DOMAINE_ODOO}} Sous-domaine pour Odoo (reverse proxy) odoo.exemple.com

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

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 de vos 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 : {{PORT_SSH}}),
il faut l’ajouter immédiatement sinon tu risques de perdre l’accès à ta prochaine déconnexion.

Ou depuis le panel web : Firewall → Add Rule → Port {{PORT_SSH}}, Action ACCEPT, Protocol TCP.

Fais-le AVANT de te déconnecter. Teste avec un 2e PuTTY sur le port {{PORT_SSH}} 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 :

Si le port SSH n’est pas le bon dans la jail, mets à jour /etc/fail2ban/jail.local :

4.3 Changer le port du panel (optionnel)

Si tu veux changer le port 8083 par un autre :

4.4 Vérifier les services

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

Ouvrir le script et choisir les versions à installer (mettre 1 au lieu de 0) :

En haut du fichier, tu trouveras :

Par exemple, pour ajouter PHP 7.4 et PHP 8.3 :

Sauvegarder (Ctrl+X, puis Y), puis lancer :

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 :

Réponds n (ne pas inverser le patch). Ensuite apparaît :

Réponds également n. Le patch est déjà en place, inutile de le réappliquer — le script continuera normalement.

5.1.1 Bug connu : PHP 7.4 (et certaines anciennes versions) ne s’installe pas

Le script multi-PHP installe tous les paquets d’une version PHP sur une seule ligne apt install.
Si un seul paquet n’existe plus dans le dépôt Sury, toute la ligne échoue silencieusement
(le script continue sans erreur, mais PHP n’est pas installé).

En pratique (constaté en 2025-2026 sur Debian 12), deux problèmes bloquent l’installation :

  • php7.4-memcached n’existe plus dans le dépôt Sury — le script le demande, apt refuse tout le lot
  • php-mcrypt (ancienne version) crée un conflit de dépendance avec php-common

Solution : installation manuelle (sans les paquets problématiques) :

Les templates Apache (PHP-FPM-74) sont normalement déjà en place :
le script les télécharge avant l’installation des paquets.
Si ce n’est pas le cas, relancer le script une fois — il re-téléchargera les templates
sans toucher aux paquets déjà installés.

Source : forum MyVestaCP — topic multi-PHP
(utilisateurs Meister et fsoyer, 2025-2026).

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 {{USER_VESTA}} {{DOMAINE_PRINCIPAL}} 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

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 :

Les sous-domaines (app.{{DOMAINE_PRINCIPAL}}, blog.{{DOMAINE_PRINCIPAL}}, etc.)
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 :

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

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 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 derrière Nginx

Après avoir créé le domaine (ex : {{SOUS_DOMAINE_ODOO}}) dans VestaCP et activé Let’s Encrypt,
éditer le fichier de configuration Nginx :

Remplacer le contenu par :

Adapter le proxy_pass au port de votre service Docker (8069 pour Odoo, 8080 pour ownCloud, etc.).


À suivre

MyVestaCP est en place : panel web, firewall, SSL, et les domaines sont configurés.
Dans les prochains articles :

  • Services Docker : Odoo, Akeneo PIM, ownCloud avec reverse proxy Nginx
  • Sauvegardes : stratégie et automatisation (rsnapshot)
  • Migration : transfert des données depuis l’ancien serveur

Article précédent : Nouveau serveur dédié — Debian 12, clé SSH, Docker.



Catégories : Non classé

0 commentaire

Laisser un commentaire

Emplacement de l’avatar

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *