Table des matières

Fonctionnement du serveur Mumble

Mumble est un service de discussion vocale proposé par Picasoft. Cette page détaille comment le serveur est mis en place techniquement.

Murmur

Murmur est le nom d’un logiciel de serveur Mumble, qui se déploie facilement sous Linux. Dans le cas de Picasoft, le serveur est déployé avec cette image Docker, ainsi que avec la configuration Docker Compose associée. Le serveur est donc en écoute sur le port 64738 de la machine, et il expose aussi la route HTTP /metrics (pour les métriques Prometheus). Sa configuration se trouve dans un volume Docker murmur-data et consiste en 2 fichiers :

Configuration

Le fichier de configuration mumble-server.ini est généré automatiquement à la création du serveur si il n’existe pas. La plupart des valeurs par défaut sont convenables, mais on en modifie quelques unes dans la cas de Picasoft.

On s’assure que le chemin du fichier de base est bien database=/data/murmur.sqlite. C’est le chemin à l’intérieur du conteneur, normalement cette valeur est déjà correctement configurée.

Pour permettre le bon fonctionnement des métriques Prometheus, il faut activer l’interface ZeroC Ice. Pour cela on configure le paramètre suivant ice=“tcp -h 127.0.0.1 -p 6502”.

Important:

Ne pas exposer cette interface en dehors de localhost !

Enfin, il est impératif de configurer le bon chemin pour le certificat et la clef privée du serveur. Ici on va s’appuyer sur des certificats déposés par tls-certs-monitor (voir plus bas), les valeurs doivent donc être :

sslCert=/certs/fullchain.pem
sslKey=/certs/privkey.pem

Un autre paramètre, facultatif, peut-être configuré : welcometext. Il permet de personnaliser le message d’accueil qui s’affiche lorsque l’on se connecte. Sa valeur est du texte HTML, on peut donc écrire par exemple <br />Bienvenue sur le serveur vocal de <b>Picasoft</b>.<br />

Certificat

Lorsque un client initie une connexion au serveur, celui-ci lui renvoie un certificat. De base murmur propose un certificat autogénéré, mais qui n’est pas reconnu par défaut pas les clients. Pour Picasoft, nous faisons générer le certificat par Traefik (qui utilise Let’s Encrypt) et on communique ce certificat au serveur Mumble. Pour cela on utilise l’outil ''tls-certs-monitor'', qui se charge de déposer les certificats dans un dossier défini, de leur donner les bons droits, et de redémarrer le conteneur.

Le fichier ''docker-compose.yml'' de murmur est déjà configuré pour cela. On constate que tls-certs-monitor envoie un signal SIGUSR1 au conteneur lorsque les certificats changent. Ce signal déclenche le rechargement des certificats dans la configuration de murmur, sans le redémarrer.

Métriques

Un petit script permet d’exposer des métriques Prometheus du serveur Mumble. Pour que cela fonctionne, il suffit simplement d’exposer en HTTP (via Traefik) la route /metrics du serveur Murmur, sur son port 8000.

Mumble Web

Pour ne pas avoir à utiliser le client lourd Mumble, nous avons aussi déployé un outil : mumble-web. C’est un simple client Web pour Mumble. Tout le nécessaire pour le déployer se trouve ici, il faut simplement lui spécifier en variable d’environnement MUMBLE_SERVER l’adresse qu’il peut utiliser pour contacter le serveur murmur (on utilise généralement l’adresse du conteneur dans le même network Docker).