Prérequis
- Un serveur sous Ubuntu 24.04 ou Debian 13 : voir nos VPS au Canada
- Une connexion SSH ouverte en root : Se connecter en SSH à votre VPS
- Un serveur vierge, sans serveur web, base de données ni serveur de courriel déjà installés
- 4 Go de RAM et 10 Go d'espace disque libre
- Un nom d'hôte complet pour le serveur, comme serveur.exemple.ca, qui n'est pas un domaine que vous hébergerez dessus
- L'adresse IP publique de votre poste, pour lui réserver l'accès au panneau
ISPConfig est un panneau d'hébergement libre : depuis un navigateur, il crée des sites Apache, des bases de données, des boîtes de courriel et des zones DNS, pour vous ou pour des clients. Ce guide l'installe avec son installateur officiel, ouvre le panneau, le réserve à votre adresse, et crée un premier site. Copiez la commande avec le bouton Copier, collez-la dans votre terminal, et comparez avec le résultat attendu.
1Nommer le serveur, le mettre à jour et le redémarrer
L'installateur exige un nom d'hôte complet, avec au moins deux points. Remplacez 203.0.113.42 par l'adresse IP de votre serveur.
hostnamectl set-hostname serveur.exemple.ca
echo '203.0.113.42 serveur.exemple.ca serveur' >> /etc/hosts
hostname -fserveur.exemple.ca
Redémarrez après la mise à jour, même si elle semble légère : l'installateur s'arrête sur un serveur dont le noyau installé n'est pas celui qui tourne.
apt update && apt full-upgrade -y && reboot2Lancer l'installateur
Reconnectez-vous en SSH. L'installateur travaille seul pendant 5 à 10 minutes et pose toute la pile : Apache, MariaDB, PHP-FPM, Postfix, Dovecot, rspamd, ClamAV, Bind, pure-ftpd, phpMyAdmin, Roundcube, fail2ban et ufw. Sur Ubuntu, il retire AppArmor.
wget -O - https://get.ispconfig.org | sh -s -- --use-php=8.4 --i-know-what-i-am-doing[INFO] Starting perfect server setup for Ubuntu 24.04.5 LTS [INFO] Checking hostname. [INFO] Configuring apt repositories. [INFO] Updating packages ... [INFO] Installing ISPConfig3. [INFO] Adding PHP version(s) to ISPConfig. [INFO] Adding PHP-FPM systemd override for ISPConfig. [INFO] Checking all services are running. [INFO] mysql: OK [INFO] clamav-daemon: OK [INFO] postfix: OK [INFO] bind9: OK [INFO] apache2: OK [INFO] pureftpd: OK [INFO] rspamd: OK [INFO] redis-server: OK [INFO] dovecot: OK [INFO] Installation ready. [INFO] Your ISPConfig admin password is: ... [INFO] Your MySQL root password is: ... [INFO] Warning: Please delete the log files in /root/ispconfig-install-log/setup-* once you don't need them anymore because they contain your passwords! (entre 5 et 10 minutes ; sur Debian, la première ligne dit Debian GNU/Linux 13 (trixie))
--use-php=8.4- Une seule version de PHP. Sans cette option, il installe toutes les versions de 5.6 à 8.5.
--i-know-what-i-am-doing- Il ne demande pas de taper yes avant de commencer.
--no-quota- À ajouter si votre partition racine est en XFS : voir la FAQ.
--use-nginx- nginx à la place d'Apache.
--no-mail- Sans serveur de courriel.
Notez les deux mots de passe, puis effacez le journal
Les deux dernières lignes donnent le mot de passe du compte admin du panneau et celui de root pour MariaDB. Ils sont aussi écrits en clair dans /root/ispconfig-install-log/setup-*.log : une fois notés, effacez ce journal.
shred -u /root/ispconfig-install-log/setup-*.log3Ouvrir le panneau
curl -sk -o /dev/null -w '%{http_code}\n' https://127.0.0.1:8080/302 (302 : le panneau renvoie vers sa page de connexion)
- Ouvrez https://203.0.113.42:8080 dans votre navigateur, avec l'adresse IP de votre serveur, en https, et le port.
- Le navigateur avertit que le certificat n'est pas reconnu : ISPConfig en a créé un lui-même pour le nom d'hôte. Cliquez sur Avancé, puis Continuer vers le site.
- Identifiant admin, avec le mot de passe de l'étape 2.
4Réserver le panneau à votre adresse
Tout Internet peut ouvrir votre panneau et votre base de données
L'installateur pose ufw mais ne l'active pas. Le panneau (8080), MariaDB (3306), FTP (21) et le courriel répondent à toutes les adresses, avec pour seule barrière leurs mots de passe.
Les règles qui suivent ferment tout, sauf SSH, le web, et le panneau depuis une seule adresse. Remplacez 198.51.100.7 par l'adresse IP publique de votre poste.
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow from 198.51.100.7 to any port 8080 proto tcp
ufw --force enable... Firewall is active and enabled on system startup
ufw status verboseStatus: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- 22/tcp ALLOW IN Anywhere 80/tcp ALLOW IN Anywhere 443/tcp ALLOW IN Anywhere 8080/tcp ALLOW IN 198.51.100.7 22/tcp (v6) ALLOW IN Anywhere (v6) 80/tcp (v6) ALLOW IN Anywhere (v6) 443/tcp (v6) ALLOW IN Anywhere (v6)
Si vous hébergez du courriel sur ce serveur, ouvrez aussi ses ports : ufw allow 25,465,587,110,143,993,995,4190/tcp. Le pare-feu est rechargé à chaque démarrage.
curl -sk -o /dev/null -w '%{http_code}\n' --max-time 10 https://203.0.113.42:8080/000 (000 veut dire aucune réponse : c'est le résultat attendu depuis une adresse qui n'est pas la vôtre)
N'ajoutez pas d'enregistrement Firewall dans le panneau
Dans System, Firewall, le bouton Add Firewall record fait réécrire ufw par ISPConfig : votre règle par adresse disparaît et le panneau, MariaDB et le reste sont ouverts à tout Internet. Supprimer cet enregistrement désactive ufw complètement. Si c'est arrivé, rejouez cette étape.
5Créer un premier site
- Dans le panneau, ouvrez Sites, puis Add new website.
- Domain : monsite.exemple.ca. PHP : PHP-FPM. Laissez le reste tel quel et cliquez sur Save.
- Le serveur applique le changement dans la minute qui suit.
ls -l /var/www/ | grep monsite
stat -c '%n %U:%G %A' /var/www/monsite.exemple.ca/web; ls /var/www/monsite.exemple.ca/weblrwxrwxrwx 1 root root 30 Sep 20 16:28 monsite.exemple.ca -> /var/www/clients/client0/web1/ /var/www/monsite.exemple.ca/web web1:client0 drwx--x--- favicon.ico robots.txt standard_index.html stats
Vos fichiers vont dans le dossier web, qui appartient à l'utilisateur système du site.
curl -s -o /dev/null -w '%{http_code}\n' -H 'Host: monsite.exemple.ca' http://203.0.113.42/200
6Les commandes du quotidien
ispconfig_update.shufw status verbosels -l /var/www/systemctl status apache2systemctl restart apache2ss -ltnss -ltn | awk 'NR>1{print $4}' | sed 's/.*://' | sort -n -u | tr '\n' ' '21 22 25 53 80 110 143 443 465 587 953 993 995 3306 4190 6379 8080 8081 10023 11211 11332 11333 11334
La base de données (3306) et les services internes sont dans cette liste mais ne répondent pas depuis l'extérieur : le pare-feu de l'étape 4 ne les ouvre pas.
Erreurs fréquentes
L'image du serveur a été construite sur un autre disque et GRUB demande où se réinstaller : choisissez le disque de la machine (celui que lsblk affiche, en général /dev/sda) ; la mise à jour continue ensuite.
L'installateur ne connaît que Debian 11, 12 et 13 et Ubuntu 22.04 et 24.04. Sur AlmaLinux, Rocky, Fedora, openSUSE ou Alpine, il s'arrête là sans rien installer.
hostname -f doit donner un nom avec au moins deux points, comme serveur.exemple.ca. Reprenez l'étape 1.
La mise à jour faite par l'installateur a posé un nouveau noyau que le serveur ne fait pas encore tourner. Redémarrez, puis relancez la même commande.
Votre partition racine est en XFS ; l'installateur ne sait activer les quotas que sur ext4. Relancez la même commande en ajoutant --no-quota ; les quotas de disque par client ne seront pas disponibles.
L'installateur ne se relance pas une fois ISPConfig en place. Pour le mettre à jour, lancez ispconfig_update.sh.
L'identifiant est admin et le mot de passe est celui imprimé à la fin de l'installation, pas celui de root.
L'adresse IP publique de votre poste a changé, ou ce n'est pas celle de la règle. Retrouvez-la dans votre session SSH avec echo $SSH_CLIENT, puis rejouez la règle ufw allow from 198.51.100.7 to any port 8080 proto tcp avec cette adresse.
Un enregistrement Firewall a été ajouté dans le panneau, ce qui a fait réécrire ufw. Supprimez-le dans System, Firewall, puis rejouez l'étape 4.
ISPConfig en service
Le panneau répond sur le port 8080, réservé à votre adresse, et votre premier site est servi. Pour un panneau qui gère aussi les domaines en ligne de commande, voyez Installer Virtualmin ; pour un panneau plus léger, Installer HestiaCP.