Installer un serveur mumble


Installation, configuration et monitoring d’un serveur mumble sous debian 10

Mise à jour le 28/03/2020 -

Dans ce tuto, on supposera que :

  • On dispose d’un serveur avec accès root, en debian 10.
  • Le point d’entrée du serveur (un site web, peut-être juste une page html) est : https://audio.exemple.com
  • L’application web de connexion au serveur mumble est : https://blabla.exemple.com
  • Le serveur web apache2 ou nginx (v. 1.14 au moins) est installé

Installation du serveur Mumble : murmur (murmurd)

Le serveur mumble est disponible sous la forme d’un paquet pour Debian.
Sous la version de Debian 10, c’est Mumble 1.3 qui est disponible, soit la dernière version disponible mi 2019.

1/ Activer le lancement du processus murmurd au lancement du système :

Sélectionner "Yes" puis valider.

2/ Placer le processus murmurd en priorité haute, de sorte à réduire la latence, ce qui améliore la qualité audio :


Sélectionner "Yes" puis valider.

3/ Saisir un mot de passe pour l’utilisateur SuperUser puis valider. La ligne de commande renvoie la confirmation de modification du mot de passe.

On peut vérifier par la commande suivante que le port 64738 est en écoute sur le serveur :

Si c’est le cas, on doit trouver le mot clef LISTEN devant le numéro de port concerné comme ci-dessus.

Pour changer ultérieurement si besoin le mot de passe de l’utilisateur SuperUser, la commande est :
murmurd -supw
A noter que lorsqu’on se connecte via ce compte Superuser, c’est uniquement pour administrer le service car il n’est possible ni de parler ni d’écouter.

4/Compléments pour personnaliser.
La configuration de mumble-server est dans /etc/mumble-server.ini
C’est ici par exemple que se modifie le nom du salon d’entrée par défaut (Root) par la variable ’registerName

Installer le certificat serveur

Il est important de remplacer le certificat de base autosigné par un certificat authentifié par une vraie autorité de certification. Le plus simple et le plus économique est d’utiliser les certificats letsencrypt.

Installer le logiciel dehydrated :

Ce qui suit est directement inspiré de https://technique.arscenic.org/ssl-securisation-des-communications-serveur-client/article/installer-et-configurer-un-certificat-let-s-encrypt#installer-et-configurer-dehydrated

On installe les dépendances, puis on va chercher le logiciel :

On crée le répertoire dont le logiciel a besoin pour ses "challenges" [1]

On crée un fichier de configuration minimal pour letsencrypt :

Version avec apache2 : Configurer apache

Version avec nginx : Configurer nginx

IMPORTANT - Vous aurez besoin de définir plusieurs virtual hosts pour exécuter toute cette installation. Il vous faudra donc introduire ces quelques lignes dans tous les fichiers de configuration de votrs vhosts.

Tester la configuration du serveur web :

Pointez votre navigateur sur http://audio.exemple.com/.well-known/acme-challenge/test.txt, il doit vous répondre : ça marche !!!

Générer les certificats de letsencrypt :

On dit à dehydrated le nom du ou des domaines à certifier

Ca y est, on peut générer le certificat !

Le certificat se trouve dans /etc/letsencrypt/certs/audio.exemple.com, deux fichiers sont importants : fullchain.pem (la chaîne de certification complète) privkey.pem (la clé privée)

TODO - Un cron pour que la commande dehydrated -c soit exécutée tous les jours, afin de renouveler les certificats qui en ont besoin.

Installer le certificat pour utilisation par murmurd :

Installer l’interface web

Le code de mumble-web et le readme pour l’installation se trouvent ici :
https://github.com/Johni0702/mumble-web

Installer npm

Cela installe une grand quantité de dépendances j’espère que vous avez de la place sur le disque...

Installer mumble-web

Installer websockify

Démarrer websockify

TODO - Démarrer et arrêter websockify avec systemd !

Patcher mumble-web

Il faut ajouter une ligne dans un fichier .js afin de pouvoir utiliser les "tokens" avec l’interface web (possibilité de rejoindre une conférence).

Fichier /usr/local/lib/node_modules/mumble-web/dist/index.js
Ligne 535 (environ)
Séquence avant :

Séquence après

Générer le certificat pour blabla.exemple.com

Écrire (sur une seule ligne) blabla.exemple.com dans le fichiers /etc/letsencrypt/domains.txt et tapez la commande :

Version apache : Configurer apache en mode proxy

Version nginx : Configurer nginx en mode proxy

* Ne pas oublier d’ajouter la ligne listen [: :]:443 ssl ; pour écouter en ipv6.

Complément de personnalisation

Il est possible de personnaliser l’affichage de mumble-web :
- pour personnaliser une configuration par défaut (mode Appuyer pour parler, champ à afficher sur la fenêtre de connexion ....) c’est dans /usr/local/lib/node_modules/mumble-web/dist/config.local.js
- pour franciser les différents champs et menus, ou changer le message Indications dans la partie centrale de la colonne de gauche c’est dans /usr/local/lib/node_modules/mumble-web/dist/index.html
- pour modifier les deux premières lignes de la partie haute de cette même colonne de gauche c’est dans /usr/local/lib/node_modules/mumble-web/dist/index.js
- le Message de bienvenue sur la troisième ligne de cette colonne de gauche se modifie lui dans /etc/mumble-server.ini

Installation et configuration de munin et des plugins de monitoring de murmur

Installation de l’outil de monitoring Munin

Munin est un outil de monitoring écrit en langage Perl. Cet outil est composé de deux services :
le munin-master qui agrège les données depuis un ou plusieurs munin-node.

Les nodes sont installés sur les serveurs à monitorer, dans notre cas le serveur mumble. Dans notre cas de figure le master sera également installé sur le même serveur que le serveur mumble (murmur) à monitorer.

Les graphiques sont générés par munin-master toutes les 5 minutes. Il suffit donc ensuite d’un serveur web configuré pour pointer vers le répertoire où sont produites ces images.

Les données produites par le processus murmur sont récupérées via le protocole ICE par un plugin spécifique de l’outil munin-node. Nous allons détailler les différentes étapes nécessaires pour configurer le système complet de surveillance munin pour Murmur.

Installation de munin sur le mumin-master

Nous allons installer le processus munin-master :

Nous allons nous intéresser tout d’abord à la configuration du serveur web installé sur le master.

Configuration du serveur web sur le serveur mumin-master (version avec apache2)

Nous allons installer le serveur web apache2 sur le serveur munin-master :
Pour s’assurer que la fonctionnalité de zoom dynamique, responsable du zoom dans les graphiques générés, fonctionne correctement au clic, installez ce qui suit :

Après avoir installé ces deux packages, le module fcgid aurait dû être activé. Pour revérifier, tapez :

On doit obtenir la sortie suivante :

Si la sortie reste vite il est nécessaire d’activer le module cgi :

Configuration du serveur web sur le munin-master (version avec nginx)

Ajouter à nginx les extensions nécessaires pour la fonction de zoom dynamique sur les plugins :

lancer le processus fastcgi :

TODO  : Ajouter dans systemd ... !
A voir https://nileshgr.com/2016/07/09/systemd-fastcgi-multiple-processes

Configurer le virtual host Nginx en ajoutant les lignes suivantes dans le fichier /etc/nginx/sites-available/audio :

Générer le fichier de mot de passe afin de sécuriser l’accès aux graphiques :

Remplacer par un login (et faire éventuellement la manip plusieurs fois). Relancer nginx :

Configuration du processus munin-master

Le fichier de configuration principal de Munin master munin.conf et les autres fichiers nécessaires à son fonctionnement se trouvent dans le répertoire /etc/munin et ses sous-répertoires.

Le fichier de configuration est composé d’au moins deux sections - une section globale et au moins une section hôte. Eventuellement, il peut y avoir une section de groupe. Les sections hôte et groupe commencent par leurs noms respectifs entre crochets. Ce fichier contient des définitions de variables, des directives qui régissent la façon dont Munin surveille les serveurs et les services, et les serveurs à surveiller.

Pour modifier le fichier de configuration :

Recherchez ces lignes et décommentez-les. Autrement dit, supprimez le signe # qui les précède. Le dbdir stocke tous les fichiers rrd contenant les informations de monitoring courantes ; htmldir stocke les images et les fichiers du site ; logdir conserve les journaux ; rundir détient les fichiers d’état ; et tmpldir est l’emplacement des modèles HTML :

Enfin, recherchez la première section dans munin.conf. Il devrait correspondre à :

Changer le nom de cette section afin de correspondre à la désignation du serveur à monitorer où se trouve le node. Par exemple :

Dans notre cas, nous rappelons que le node se trouve sur le serveur mumble et contient également le serveur master munin. Par défaut munin surveille le master. L’option use_node_name configurée avec la valeur yes fait en sorte que c’est la valeur saisie dans le titre de la section (ici MuninMaster) qui sera affichée.
Par défaut, lors de l’installation du processus master de mumin, un fichier de virtual host apache2 est placé dans le répertoire de configuration de munin /etc/munin. Un lien symbolique est également ajouté vers les répertoires /etc/apache2/conf-enabled et /etc/apache2/conf-available de Apache2, ce qui permet d’activer le virtual host pour le master de munin. Ce n’est pas le cas pour nginx mais la configuration a été présentée plus en avant.
Il faut relancer apache 2 ou nginx pour que virtual host soit prise en charge :

ou

La configuration de munin coté serveur est complète. Sauvegarder et fermer le fichier de configuration. Nous allons maintenant nous intéresser à l’installation et la configuration du node munin qui est chargé de récolter les données de supervision.

Installation de munin-node

Le node munin est un petit utilitaire installé sur le serveur à monitorer. Dans notre cas, il s’agit (encore) du serveur mumble.
Ce processus s’appuie sur les plugins spécialisés dans la récolte de données différentes.

Sur Debian, on installe les paquets suivants avec APT :

Cette commande installe le noeud munin et un ensemble de plugins standards.

Ajout de plugins

Pour visualiser les plugins présents, il est possible d’utiliser la commande suivante :

Et pour voir ceux qui sont activés :

Ce qui donne la sortie suivante :

Les plugins sont des scripts Perl qui se trouvent dans /usr/share/munin/plugins, et ceux activés dans /etc/munin/plugins. Pour les activer il suffit de faire un lien symbolique entre les 2.

Une grosse quantité de plugins sont disponibles sur un dépot : https://github.com/munin-monitoring/contrib

Installation du plugin de monitoring de murmurd (mumble-server)

Ce plugin développé en python nécessite d’installer des dépendances en lien avec le protocole ICE :

La première bibliothèque permet de manipuler l’API de ICE avec python et la seconde installe un ensemble de fichiers de configuration nécessaire à la mise en place des interfaces ICE.

Le plugin doit être déposé dans le répertoire de votre choix, nous allons le déposer dans le répertoire /usr/local/share/munin/plugins qu’il faut donc créer (adaptez au besoin a votre cas) :

Ce plugin se trouve sur le dépot contrib précédent. On peut le récupérer sur le serveur avec la commande suivante en se placant dans le répertoire créé juste avant :

Rendre le script exécutable :

Activer l’interface ICE de murmur et tests

murmur utilise notament le protocole RPC ICE pour communiquer avec le monde extérieur (https://zeroc.com/).
Pour activer l’interface Ice dans votre fichier de configuration murmur.ini pour localhost sur le port 6502, ajoutez ou décommentez :

Pour éditer ce fichier utiliser la commande suivante :

Commenter au passage la ligne suivante afin de désactiver le protocole DBUS :

Redémarrez maintenant Murmurd pour que le changement prenne effet :

Pour vérifier si Ice écoute réellement, sous UNIX, tapez :

et recherchez le processus d’écoute sur le port 6502 (ligne LISTEN)

Si le port n’est pas écouté, consultez le journal des logs de murmur. Il devrait indiquer l’activation de ICE au démarrage. Si ce n’est pas le cas, une erreur s’est produite dans votre configuration.

Vous devriez maintenant pouvoir tester le fonctionnement de ce plugin en le lançant manuellement. Vous devriez obtenir quelque chose ressemblant à :

On active ensuite le plugin :

Il faut ensuite redémarrer le service munin-node :

et faire pointer son navigateur sur https://audio.exemple.com/munin

Remarque : Pour éviter que le script n’affiche un message d’avertissement qui empéche de faire remonter les données à munin, nous avons modifié le script du plug-in. Cette version modifiée est jointe à cet article.

Plugin murmur-stats

En cas de reboot...

En cas de reboot de la machine, tout ne redémarrera pas automatiquement... il faudrait ajouter deux services dans systemctl.
Donc après le redémarrage de la machine, vous devrez taper manuellement :

- 

[1Les challenges sont des actions que le serveur de letsencrypt va accomplir sur le domaine qui a demandé un certificat. Si le challenge est réussi, cela veut dire que l’on a la certitude que la personne qui a lancé la commande maîtrise bien le domaine (donc que ce n’est pas un pirate), et on peut dès lors lui délivrer un =certificat.