Développement

🧠 Tutoriel : Héberger une application (Wiki.js) derrière un sous-domaine avec Mail-in-a-Box


🎯 Objectif

Dans ce tutoriel, je vous montre comment héberger une application Web (comme Wiki.js) derrière un sous-domaine (ex. wiki.mon-domaine.fr) tout en utilisant Mail-in-a-Box comme serveur DNS et certificat SSL.

✅ À la fin, votre application sera disponible en HTTPS à l'adresse https://wiki.mon-domaine.fr, sécurisée par Let's Encrypt et parfaitement intégrée à votre serveur mail.


🛠️ Prérequis

  • Un serveur avec Mail-in-a-Box (MiaB) déjà installé (voir https://mailinabox.email)
  • Un nom de domaine configuré dans MiaB (ex : mon-domaine.fr)
  • Une application fonctionnelle (ici Wiki.js) tournant sur un port local (ex : localhost:3000)

Étapes détaillées


🔹 1. Ajouter le sous-domaine dans MiaB

  1. Connectez-vous à l’interface admin :
    • https://box.mon-domaine.fr/admin
  2. Allez dans System > Custom DNS ou Mail > Domains
  3. Ajoutez une entrée DNS de type A :
    • wiki.mon-domaine.fr A <IP de votre serveur>
  4. MiaB générera automatiquement une entrée dans le fichier /etc/nginx/conf.d/local.conf

🔹 2. Générer un certificat SSL pour le sous-domaine

  1. Toujours dans l’interface admin, allez dans System > TLS (SSL) Certificates
  2. Vous verrez apparaître wiki.mon-domaine.fr
  3. Cliquez sur "Install Certificate" pour générer un certificat SSL avec Let's Encrypt

🔹 3. Vérifier que l’application tourne localement

Lancez votre Wiki.js :

node server # ou via docker, pm2, etc.

Puis vérifiez :

curl http://127.0.0.1:3000

🔹 4. Modifier la configuration Nginx générée par Mail-in-a-Box

⚠️ Mail-in-a-Box génère automatiquement ses fichiers Nginx dans /etc/nginx/conf.d/local.conf. Il faut modifier ce fichier et non en créer un nouveau, sinon il sera ignoré.

a. Éditez le fichier :

sudo nano /etc/nginx/conf.d/local.conf

b. Cherchez le bloc server qui correspond à wiki.mon-domaine.fr, qui ressemble à :

server {
listen 443 ssl;
server_name wiki.mon-domaine.fr;
root /home/user-data/www/wiki.mon-domaine.fr;
...
}

c. Remplacez tout le contenu du bloc location / {} par ceci :

location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
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;
}

Cela permet de rediriger toutes les requêtes vers Wiki.js, qui tourne en local.


🔹 5. Recharger Nginx

Une fois modifié, testez la config :

sudo nginx -t

Puis rechargez Nginx :

sudo systemctl reload nginx

🔹 6. Tester

Ouvrez votre navigateur à l’adresse :

https://wiki.mon-domaine.fr

Vous devriez voir votre Wiki.js en HTTPS avec un certificat valide.


🔐 Astuce : protéger vos modifications

Mail-in-a-Box peut régénérer local.conf à chaque fois que vous exécutez :

sudo mailinabox

➡️ Pensez à sauvegarder votre bloc modifié :

sudo cp /etc/nginx/conf.d/local.conf ~/local.conf.backup

Et si jamais le fichier est écrasé, restaurez votre bloc.


✅ Résultat final

Vous avez maintenant :

  • Un sous-domaine wiki.mon-domaine.fr géré par Mail-in-a-Box
  • Un certificat SSL généré automatiquement avec Let's Encrypt
  • Une application Web (Wiki.js) derrière un proxy Nginx sécurisé
  • Le tout intégré harmonieusement avec votre serveur mail

PS : Oui merci ChatGpt pour avoir mis en forme cette article 😉