Cockpit : une interface web pour gérer son serveur Linux
Sommaire
I. Présentation
Dans ce tutoriel, nous allons voir comment installer et utiliser Cockpit sur un serveur Linux, sous Debian 11, afin de gérer son serveur avec une interface Web.
Par définition, un cockpit c'est un poste de pilotage qui contient l'ensemble des commandes nécessaires au pilotage de l'appareil. Alors même si le terme "cockpit" fait penser aux avions, dans le cas d'un serveur où l'on déploie l'outil Cockpit, l'idée reste la même !
Grâce à l'interface Web de Cockpit, vous allez pouvoir réaliser de nombreuses tâches et surveiller l'état de votre serveur. Voici quelques exemples :
- Gérer les comptes utilisateurs
- Visualiser l'état du matériel (configuration, charge actuelle, etc.)
- Mettre à jour les paquets
- Visualiser les journaux du système
- Accéder à un Terminal en ligne
- Gérer le pare-feu Linux
- Créer et gérer des machines virtuelles (et containers)
- Gérer les services (par exemple : redémarrer Apache)
- Gérer plusieurs serveurs Linux avec un seul Cockpit
- Etc.
Cockpit est un projet actif, sous licence LGPL v2.1+ et il est distribué gratuitement. Il faut savoir que Red Hat sponsorise le développement de cet outil. Il fonctionne avec de nombreuses distributions Linux, notamment Debian, Red Hat Enterprise Linux, Fedora, Ubuntu ou encore Arch Linux.
Cockpit est évolutif, car il est possible d'ajouter des extensions (appelées "Applications") pour bénéficier de fonctions supplémentaires. Vous pouvez aussi développer vos propres extensions : certaines applications sont officielles tandis que d'autres sont proposées par la communauté.
II. Installation de Cockpit sous Debian 11
Connectez-vous en SSH sur votre serveur Linux, et commencez par installer le paquet "cockpit". Au préalable, on en profite pour mettre à jour le cache des paquets.
sudo apt-get update sudo apt-get install cockpit
Note : pour l'installation sur les autres distributions, consultez cette page.
Ensuite, on active le démarrage automatique de Cockpit :
sudo systemctl enable cockpit.socket
Voilà, à partir de maintenant le tableau de bord, que dis-je... notre cockpit est en ligne. Vous pouvez accéder à l'interface Cockpit en saisissant l'adresse IP de votre serveur suivie du port "9090" (par défaut).
https://192.168.100.121:9090
Ensuite, il faudra s'authentifier sur l'interface Web avec votre compte utilisateur. Pour ma part, j'utilise "flo" un utilisateur standard, membre du groupe "sudo" sur mon serveur.
Remarque : les membres du groupe "sudo" sont considérés comme étant administrateur du serveur. Cela va permettre de modifier la configuration du serveur via Cockpit. Pour les comptes "non sudo", l'accès à Cockpit sera possible, mais en lecture seule.
III. Interface Web de Cockpit
L'interface Web de Cockpit est agréable et moderne. Sur la gauche, on retrouve le menu permettant d'accéder aux différentes sections.
Au centre, un tableau de bord avec différents widgets, ainsi que la date de dernière connexion, ainsi qu'un message "The programs included with the Debian...". En fait, ce sont des informations que l'on retrouve lors d'une connexion en SSH et ce message n'est autre que le contenu du fichier "/etc/motd" : vous pouvez donc le personnaliser.
Le nom d'hôte du serveur est modifiable à cet endroit, en cliquant sur le bouton "modifier" au sein du widget "Configuration".
En cliquant sur l'onglet "Voir les détails et l'historique" du widget "Utilisation", on peut avoir beaucoup plus d'informations sur l'état actuel du serveur. On peut visualiser l'état du CPU, de la RAM, des disques et du réseau.
On peut voir le bouton "Installer cockpit-pcp" : cela va permettre d'installer un composant additionnel afin de bénéficier de l'historique de la charge. Si vous n'avez pas de solution de supervision externe à ce serveur, cela me semble très intéressant pour le troubleshooting. Il suffit de cliquer sur ce bouton, puis ensuite sur le bouton "Installer" au sein de la fenêtre qui apparaît pour installer les paquets nécessaires (moins de 5 Mo).
Ensuite, il faut se déconnecter et se reconnecter pour voir apparaître les premiers graphiques.
Dans la partie "Journaux", vous avez accès aux différents logs de votre serveur. Il est possible de filtrer selon une période, les types d'erreurs (info, avertissements, erreurs, alertes, etc.), mais aussi de créer ses propres filtres de recherche. En cliquant sur une entrée, vous avez accès à différentes propriétés.
La section "Stockage" permet de visualiser des graphiques de performances (lecture et écriture), de visualiser les volumes, les points de montage NFS et les journaux liés au stockage. Sur la droite, on a également une visibilité sur les périphériques physiques (disques physiques, lecteur DVD...).
La partie "Réseau" permet de visualiser les journaux liés au réseau, d'ajouter une interface, de déclarer un VLAN ou encore de voir l'utilisation de vos cartes réseau.
Ensuite, la section "Comptes" liste les comptes utilisateurs présents sur la machine. On peut créer un nouveau compte ou modifier un compte existant (nom complet, verrouiller le compte, modifier le mot de passe, etc.).
Je vais m'intéresser maintenant à la partie "Mises à jour logicielles", car c'est ici que vous pouvez voir les paquets à mettre à jour sur votre serveur. Ce qui est intéressant, au-delà du côté pratique de la fonction, c'est que les mises à jour de sécurité sont mises en évidence (en rouge). Il y a aussi un bouton qui permet d'installer uniquement les mises à jour de sécurité, et ça, je trouve que c'est top.
La mise à jour des paquets s'effectue via l'interface Web et la liste des paquets mis à jour s'affiche à l'écran.
Enfin, l'onglet "Terminal" vous permet d'ouvrir un Terminal en mode Web pour administrer votre serveur ! On peut changer la couleur de ce terminal ainsi que la taille de la police.
Voilà pour le tour d'horizon de l'interface de Cockpit, je vous laisse le soin d'explorer l'interface de votre côté. Lisez la suite de ce tutoriel si vous souhaitez en savoir plus sur la configuration de Cockpit.
Pour l'installation d'extensions, la procédure dépend de celle que vous souhaitez installer. À chaque fois, il y a un lien vers le GitHub de l'extension et généralement on y trouve la procédure d'installation.
IV. Configuration de Cockpit sous Linux
L'outil Cockpit en lui-même dispose de son propre fichier de configuration au format INI :
/etc/cockpit/cockpit.conf
Par défaut, ce fichier n'existe pas donc il faut le créer si l'on veut personnaliser la configuration de Cockpit.
sudo touch /etc/cockpit/cockpit.conf
Il n'y a pas énormément d'options de personnalisation disponibles. Elles sont bien présentées au sein de la documentation : Cockpit - cockpit.conf.
A. Modifier le port d'écoute de Cockpit
Pour masquer le service Cockpit sur notre serveur ou parce que le port 9090 est déjà utilisé par un autre service, on peut avoir besoin de modifier le port d'écoute de Cockpot.
La modification du port d'écoute de Cockpit ne s'effectue pas dans le fichier cockpit.conf. Dommage. Vous devez créer un fichier de configuration supplémentaire. Voyons comment procéder en personnalisant le socket de Cockpit.
Il faut commencer par créer ce dossier :
sudo mkdir /etc/systemd/system/cockpit.socket.d/
Ensuite, dans ce dossier, nous allons créer un fichier nommé "listen.conf" et l'éditer.
sudo nano /etc/systemd/system/cockpit.socket.d/listen.conf
Pour utiliser le port 9191 au lieu de 9090, utilisez ce bout de code :
[Socket]
ListenStream=
ListenStream=9191
La ligne "ListenStream" sans valeur est normale et nécessaire pour supprimer réinitialiser ce paramètre et donc désactiver le port 9090. Ensuite, on déclare notre nouveau port d'écoute, le 9191 (ou autre chose).
Comme le précise la documentation, vous pouvez aussi préciser l'adresse IP d'écoute :
ListenStream=192.168.100.121:9191
Sauvegardez la configuration et redémarrez les services pour prendre en compte cette modification.
sudo systemctl daemon-reload sudo systemctl restart cockpit.socket
Désormais, Cockpit doit répondre sur le nouveau port défini dans le fichier listen.conf ! 🙂
V. Gérer plusieurs serveurs Linux avec Cockpit
À partir d'un serveur où Cockpit est installé, on peut gérer plusieurs serveurs Linux ! Il y a deux prérequis on va dire : que le serveur à gérer soit accessible via SSH et que Cockpit soit installé sur ce serveur. Ensuite, sur un serveur central, que l'on peut considérer comme un serveur d'administration équipé de Cockpit, on va venir ajouter les hôtes distants. La communication entre les deux serveurs sera établie via SSH.
Pour ajouter un nouvel hôte, il faut cliquer en haut à gauche de l'interface. Pour ma part, je dois cliquer sur "flo@ debian-11". Ensuite, il faut cliquer sur le bouton "Ajouter un nouvel hôte" pour lancer l'assistant.
Il faut commencer par renseigner le nom d'hôte ou son adresse IP, ainsi que le nom du compte à utiliser (bien sûr on évitera "root"). Cliquez sur "Ajouter".
La seconde étape consiste à vérifier l'empreinte de la clé SSH. Pour cela, sur l'hôte distant que l'on souhaite ajouter, il faut saisir la commande indiquée à l'écran. C'est facultatif, mais c'est pour vérifier que la clé est identique des deux côtés, et que la connexion entre les deux hôtes est sûre et que vous n'êtes pas victime d'une attaque de type man in the middle. Cliquez sur "Accept key and connect".
Il faut ensuite saisir le mot de passe du compte, en l'occurrence ici le compte de "florian". Pour automatiser l'authentification sur l'hôte distant, plutôt que de devoir saisir le mot de passe, pour vous créer une clé SSH et l'autoriser. Pour cela, il suffit de cocher la case "Créez une nouvelle clé SSH et autorisez-là" et de saisir une passphrase. Cliquez sur "Connexion".
Désormais, je peux gérer mes deux hôtes différents à partir de Cockpit : l'hôte local sur lequel Cockpit a été installé initialement, puis le second serveur Linux que l'on vient d'installer.
Si vous avez besoin d'informations supplémentaires, consultez la documentation de Cockpit.
Ce tutoriel sur Cockpit est terminé ! Que pensez-vous de Cockpit ? Allez-vous l'essayer, si ce n'est pas déjà fait ?
Pas fan du tout de ce genre de solution, car ça ajoute une surface d’attaque supplémentaire. Si un sysadmin utilise ce genre de solution, je plains son employeur ou ses clients.
Lol. Sauf qu’un bon administrateur sait configurer un firewall et un reverse proxy avec un WAF…
C’est un équivalent à webmin ?
Heuu … si ce service Cockpit n’est accessible seulement sur le réseau interne, je ne vois pas le soucis.
Bonjour,
Est-ce que ce logiciel peut remplacer webmin ?
Bravo, super tuto!
Merci
Je ne suis pas fan non plus, mais c’est bien pratique, non pas pour la simplicité que ça offre, mais c’est que c’est accessible de partout facilement.
humm moi je trouve très bien. Sauf que sous nginx proxy manager j’arrive à le faire fonctionner (sans too many redirect) par contre en association de Authelia je n’y arrive pas, j’ai le fameux Too many redirect. Grrr
Finalement j’ai pu le faire en ajoutant https sur le Sheme NPM