Mumble est un service de discussion vocale proposé par Picasoft. Cette page détaille comment le serveur est mis en place techniquement.
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 :
murmur.sqlite
qui est une base de donnée SQLITE maintenue par Murmur pour stocker différentes informationsmumble-server.ini
qui est le fichier de configuration à proprement parler, que l’on va adapter.
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 />
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.
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.
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).