Empêcher Mail-in-a-Box d’écraser votre configuration Nginx pour un Wiki (suite à mon précédent article)
Suite à mon précédent article sur l’installation de Mail‑in‑a‑Box, voici une petite astuce pour éviter qu’il n’écrase la configuration Nginx de votre Wiki hébergé sur le même serveur. Mail‑in‑a‑Box régénère ses fichiers Nginx chaque nuit, ce qui peut rendre votre site indisponible si vous avez une conf personnalisée. La solution ci‑dessous recopie automatiquement votre conf, la teste, recharge Nginx si tout va bien, et restaure l’ancienne en cas d’échec.
Le problème
Chaque nuit, Mail‑in‑a‑Box réécrit /etc/nginx/conf.d/*. Résultat : votre conf dédiée au Wiki est écrasée. Plutôt que de patcher MIAB, on ajoute un petit script « safe » + une tâche cron programmée après le passage de MIAB.
Le script de déploiement « safe »
Créer le fichier /usr/local/sbin/deploy_nginx_conf.sh avec le contenu ci‑dessous, puis rendez‑le exécutable.
#!/usr/bin/env bashset -Eeuo pipefail# — À ADAPTER —SRC="/chemin/vers/local.conf" # votre fichier source (conf personnalisée)DST="/etc/nginx/conf.d/local.conf" # destinationLOG="/var/log/deploy_nginx_conf.log" # fichier de log# — — —PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"{echo "[$(date -Is)] Déploiement de la configuration Nginx"if [[ ! -f "$SRC" ]]; thenecho "Source introuvable: $SRC"exit 1fits="$(date +%Y%m%d%H%M%S)"# Sauvegarde de l'ancienne conf si elle existeif [[ -f "$DST" ]]; thencp -a "$DST" "$DST.$ts.bak"echo "Backup: $DST.$ts.bak"fi# Déploiement de la nouvelle confinstall -m 644 "$SRC" "$DST"echo "Copié $SRC -> $DST"# Test de la conf et reload conditionnelif nginx -t; thenecho "nginx -t OK, reload..."systemctl reload nginxecho "Reload réussi."elseecho "nginx -t a échoué, restauration..."if [[ -f "$DST.$ts.bak" ]]; thenmv -f "$DST.$ts.bak" "$DST"echo "Restauration effectuée."fiexit 1fiecho "Fin OK."} >> "$LOG" 2>&1
Render le script exécutable
sudo chmod +x /usr/local/sbin/deploy_nginx_conf.sh
Planifier avec cron
Programmer l’exécution après le passage nocturne de Mail‑in‑a‑Box (ex. 04:00) dans la crontab root :
sudo crontab -e
0 5 * * * /usr/local/sbin/deploy_nginx_conf.sh
Vérifications utiles
- Suivre les logs du script :
sudo tail -n 100 -f /var/log/deploy_nginx_conf.log - Logs cron :
sudo grep CRON /var/log/syslog - État Nginx :
systemctl status nginx
Pourquoi cette méthode ?
- Aucune modification des scripts internes de Mail‑in‑a‑Box.
- Reload Nginx uniquement si la conf passe les tests.
- Restauration automatique en cas d’erreur → faible risque de coupure.
- Historique complet des actions dans
/var/log/deploy_nginx_conf.log.
Depuis que j’ai mis en place ce duo script + cron, mon Wiki reste en ligne sans être perturbé par la régénération nocturne de Mail‑in‑a‑Box. Simple, robuste, et transparent.