Serveur : vps-cloud-tp — Infomaniak Public Cloud (OpenStack)
Date d'intervention : 12 août 2026
Retour sur le serveur applicatif (Cas 2)
une semaine après son déploiement initial, avec trois objectifs : vérifier son
état, fiabiliser le démarrage automatique, et mettre en place une sauvegarde.
sudo systemctl status nginx
Résultat : Active: failed, en échec depuis le 4 août au matin — soit le
lendemain du déploiement, sans que personne ne s'en aperçoive.
Le journal révèle : [emerg] host not found in upstream "localhost".
La directive proxy_pass http://localhost:3000 de Nginx nécessite une
résolution de nom au démarrage. Après un redémarrage automatique de la
machine (mise à jour nocturne), Nginx a démarré avant que la résolution
de noms soit opérationnelle. L'erreur est fatale : le service abandonne au
lieu de réessayer.
127.0.0.1 est une adresse IP directe, qui ne nécessite aucune résolution —
contrairement à localhost, qui est un nom.
sudo sed -i 's|http://localhost:3000|http://127.0.0.1:3000|' \
/etc/nginx/sites-available/wiki
sudo nginx -t
sudo systemctl start nginx
Wiki.js avait été lancé manuellement (sudo node server &) — un processus
ainsi lancé ne survit pas à un redémarrage, et tourne en root, ce qui est
excessif pour un service applicatif.
sudo useradd --system --no-create-home --shell /usr/sbin/nologin wikijs
sudo chown -R wikijs:wikijs /var/www/wiki
Principe du moindre privilège : un service ne doit disposer que des
droits strictement nécessaires à son fonctionnement.
Fichier /etc/systemd/system/wikijs.service :
[Unit]
Description=Wiki.js
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/node server
Restart=always
User=wikijs
Environment=NODE_ENV=production
WorkingDirectory=/var/www/wiki
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable wikijs
sudo systemctl start wikijs
sudo reboot
Après reconnexion, sans aucune action manuelle : wikijs.service et
nginx.service sont tous deux active (running), démarrés automatiquement
au boot.
Script /usr/local/bin/backup-wiki.sh : sauvegarde à chaud de la base
SQLite (via sqlite3 ... .backup, jamais un simple cp sur une base en
cours d'utilisation), des configurations Nginx/Fail2ban/SSH/systemd, le tout
compressé en archive .tar.gz avec rotation à 7 jours.
Planifié quotidiennement à 3h via cron :