Bonjour tout le monde,
Je viens vous présenter le petit fork que j'ai fait de
EZ SERVER MONITOR`WEB.
De base, cette app permet de voir l’état de son serveur de manière très légère depuis une page php avec des scripts JavaScript.
Voici l'interface :
Pour moi, le plus intéressant était de voir l’état des services. Le problème c'est qu'on ne pouvait pas les arrêter ni les démarrer depuis l'interface. Mais ça c'etait avant

:
On peut donc désormais arrêter ou démarrer un service depuis l'interface web 🙂.
Pour l'installer, on utilise
mon repo GitHub :
cd /var/www
git clone https://github.com/MisterCyp/ezservermonitor-web.git esm
Modifiez le vhost de rutorrent :
nano /etc/nginx/sites-enabled/rutorrent.conf
Et insérez ceci :
location ^~ /esm {
root /var/www;
include /etc/nginx/conf.d/php.conf;
include /etc/nginx/conf.d/cache.conf;
if ($remote_user != "cyprien") {
return 404;
}
}
La condition
if ($remote_user != "cyprien") {
return 404;
}
permet d'interdire l’accès aux autres utilisateurs que cyprien.
Pour ajouter des services à inspecter et les commandes d’arrêt et de démarrage associées, il faut modifier le fichier : esm.config.json
nano /var/www/esm/conf/esm.config.json
Voici l'exemple de ma liste services :
"services": {
"show_port": true,
"list": [
{
"name": "Web Server",
"host": "localhost",
"port": 80,
"protocol": "tcp",
"stop": "",
"start": "service nginx start"
},
{
"name": "CakeBox",
"host": "localhost",
"port": 81,
"protocol": "tcp",
"stop": "",
"start": ""
},
{
"name": "Rutorrent Cyprien",
"host": "localhost",
"port": 5001,
"protocol": "tcp",
"stop": "service cyprien-rtorrent stop",
"start": "service cyprien-rtorrent start"
},
{
"name": "SickRage Cyprien",
"host": "localhost",
"port": 8081,
"protocol": "tcp",
"stop": "docker stop sickrage-cyprien",
"start": "docker start sickrage-cyprien"
},
{
"name": "CouchPotato Cyprien",
"host": "localhost",
"port": 5050,
"protocol": "tcp",
"stop": "docker stop couchpotato-cyprien",
"start": "docker start couchpotato-cyprien"
},
{
"name": "Rutorrent Mathurin",
"host": "localhost",
"port": 5003,
"protocol": "tcp",
"stop": "service mathurin-rtorrent stop",
"start": "service mathurin-rtorrent start"
},
{
"name": "SickRage Mathurin",
"host": "localhost",
"port": 8082,
"protocol": "tcp",
"stop": "docker stop sickrage-mathurin",
"start": "docker start sickrage-mathurin"
},
{
"name": "CouchPotato Mathurin",
"host": "localhost",
"port": 5051,
"protocol": "tcp",
"stop": "docker stop couchpotato-mathurin",
"start": "docker start couchpotato-mathurin"
},
{
"name": "SSH",
"host": "localhost",
"port": 22,
"protocol": "tcp",
"stop": "",
"start": "/etc/init.d/ssh start"
}
]
}
Je pense que c'est assez clair pour ne pas avoir à l'expliquer 😀.
La petite difficulté arrive maintenant. Il faut donner les droits root à l'utilisateur www-data pour pouvoir exécuter certaines commandes. Par mesure de sécurité, on ne va lui donner les droits root uniquement sur les scripts nécessaires.
Pour cela :
On installe le paquet sudo si ce n'est pas encore fait :
apt-get install sudo
Ensuite on va modifier le fichier sudoers :
nano /etc/sudoers
Ajoutez à la fin du fichier la ligne suivante :
www-data ALL = NOPASSWD: /usr/bin/docker, /usr/sbin/service, /etc/init.d/ssh
Ici www-data pourra donc exécuter toutes les commandes utilisant le script service (ex : service cyprien-rtorrent stop, service nginx stop (déconseillez ici ^^)).
www-data pourra aussi lancer des images docker (et oui pour mes instances Sickrage et CouchPotato 😛) ou ouvrir le port ssh. Si vous voulez utilisez d'autres scripts , il faudra chercher le chemin du raccourci et l'ajouter à la ligne.
Pour accéder à l'interface :
http://VotreIPouNDD/esm
Si vous avez des questions ou des remarques n’hésitez pas 😉.