{{indexmenu_n>10}} ====== 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](https://gitlab.utc.fr/picasoft/projets/services/mumble), 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 informations * ''mumble-server.ini'' qui est le fichier de configuration à proprement parler, que l'on va adapter. ==== 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"''. 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 ''
Bienvenue sur le serveur vocal de Picasoft.
'' ==== 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''](https://gitlab.utc.fr/picasoft/projets/tls-cert-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''](https://gitlab.utc.fr/picasoft/projets/services/mumble/-/blob/master/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](https://gitlab.utc.fr/picasoft/projets/services/mumble/-/blob/master/exporter.py) 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](https://gitlab.utc.fr/picasoft/projets/services/mumble-web), 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).