services:mumble.chapril.org
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédente | |||
| services:mumble.chapril.org [2026/04/11 17:40] – supprimée - modification externe (Date inconnue) 127.0.0.1 | services:mumble.chapril.org [2026/04/11 17:40] (Version actuelle) – ↷ Page déplacée de admin:services:mumble.chapril.org à services:mumble.chapril.org pitchum | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | ====== Service mumble.chapril.org ====== | ||
| + | ===== Déploiement du serveur Mumble ===== | ||
| + | |||
| + | ==== Installation ==== | ||
| + | |||
| + | <code bash> | ||
| + | apt-get install mumble-server | ||
| + | dpkg-reconfigure mumble-server | ||
| + | </ | ||
| + | |||
| + | Options choisies : | ||
| + | * Oui, la priorité du processus pour une meilleur latence ; | ||
| + | * Un mot de passe pour SuperUser. | ||
| + | |||
| + | Mettre le mot de passe dans le // | ||
| + | |||
| + | Le fichier de configuration est ''/ | ||
| + | |||
| + | ==== Personnalisation ==== | ||
| + | |||
| + | Modification du fichier ''/ | ||
| + | <code ini> | ||
| + | welcometext="< | ||
| + | users=200 | ||
| + | registerName=Chapril | ||
| + | </ | ||
| + | |||
| + | ==== Configuration routage flux ==== | ||
| + | |||
| + | Sur '' | ||
| + | * Créer le fichier ''/ | ||
| + | <code bash> | ||
| + | #FHVER: 1:213 | ||
| + | # La premiere ligne ci dessus est nécessaire !! | ||
| + | server_mumble_ports=" | ||
| + | client_mumble_ports=" | ||
| + | </ | ||
| + | * Dans ''/ | ||
| + | <code bash> | ||
| + | [" | ||
| + | </ | ||
| + | |||
| + | Redémarrer FireHOL sur '' | ||
| + | <code bash> | ||
| + | systemctl restart firehol.service | ||
| + | </ | ||
| + | |||
| + | ==== Configuration pare-feu local ==== | ||
| + | |||
| + | Sur la VM '' | ||
| + | * Créer le fichier ''/ | ||
| + | <code bash> | ||
| + | #FHVER: 1:213 | ||
| + | # La premiere ligne ci dessus est nécessaire !! | ||
| + | server_mumble_ports=" | ||
| + | client_mumble_ports=" | ||
| + | </ | ||
| + | * Dans le fichier ''/ | ||
| + | <code bash> | ||
| + | server mumble accept | ||
| + | </ | ||
| + | * Dans le fichier ''/ | ||
| + | < | ||
| + | […] | ||
| + | # Trafic interne au cluster | ||
| + | # The purpose of this interface is to control the traffic | ||
| + | # on the ens3 interface with IP 192.168.1.30 (net: " | ||
| + | # on cible les interfaces ens3+ens8 pour mutualiser les regles ipv4 et ipv6 | ||
| + | interface "ens3 ens8" internal_trafic src4 " | ||
| + | […] | ||
| + | # Trafic externe au cluster | ||
| + | # The purpose of this interface is to control the traffic | ||
| + | # from/to unknown networks behind the default gateway 192.168.1.5 . | ||
| + | # on cible les interfaces ens3+ens8 pour mutualiser les regles ipv4 et ipv6 | ||
| + | interface "ens3 ens8" external_trafic src4 not " | ||
| + | […] | ||
| + | </ | ||
| + | |||
| + | Redémarrer FireHOL : | ||
| + | <code bash> | ||
| + | systemctl restart firehol.service | ||
| + | </ | ||
| + | |||
| + | ==== Test de connexion ==== | ||
| + | |||
| + | À cette étape, le serveur Mumble est joignable à condition d' | ||
| + | |||
| + | Informations de connexion : | ||
| + | * Adresse : '' | ||
| + | * Port : '' | ||
| + | * Nom d' | ||
| + | * Nom : Chapril. | ||
| + | |||
| + | ==== Permettre la création de salons temporaires ==== | ||
| + | |||
| + | Marche à suivre : | ||
| + | * Se connecter en tant que Superuser ; | ||
| + | * Bouton droit sur la racine puis modifier ; | ||
| + | * Onglet //CLA// ; | ||
| + | * Sélectionner '' | ||
| + | * Cocher la colonne // | ||
| + | * Cliquer sur //OK//. | ||
| + | |||
| + | |||
| + | ==== Configuration certificat ==== | ||
| + | |||
| + | Par défaut, il est possible d' | ||
| + | Mais alors une boite de dialogue technique apparaît et demande une confirmation. | ||
| + | Cela représente une barrière aux utilisateurs. | ||
| + | Donc l' | ||
| + | |||
| + | <code bash> | ||
| + | apt install dehydrated dnsutils ntp | ||
| + | </ | ||
| + | |||
| + | Temporairement, | ||
| + | |||
| + | <code bash> | ||
| + | echo ' | ||
| + | </ | ||
| + | |||
| + | On configure Dehydrated pour faire de la validation DNS-01 dans le fichier ''/ | ||
| + | |||
| + | <file bash / | ||
| + | CHALLENGETYPE=" | ||
| + | HOOK=/ | ||
| + | </ | ||
| + | |||
| + | On va maintenant créer le script //hook// ''/ | ||
| + | C'est lui qui est chargé de pousser des changements dans la zone DNS dynamique '' | ||
| + | Attention les paramètres passés à la commande '' | ||
| + | |||
| + | Et la valeur de la variable '' | ||
| + | La bonne valeur à utiliser se trouve sur le serveur DNS du Chapril dans le fichier ''/ | ||
| + | |||
| + | <file bash / | ||
| + | # | ||
| + | |||
| + | set -e | ||
| + | set -u | ||
| + | set -o pipefail | ||
| + | |||
| + | DNSSERVER=" | ||
| + | KEY=" | ||
| + | NSUPDATE=" | ||
| + | TTL=300 | ||
| + | |||
| + | case " | ||
| + | " | ||
| + | printf "key %s\nserver %s\nupdate add _acme-challenge.%s. %d in TXT \" | ||
| + | ;; | ||
| + | " | ||
| + | printf "key %s\nserver %s\nupdate delete _acme-challenge.%s. %d in TXT \" | ||
| + | ;; | ||
| + | |||
| + | " | ||
| + | # Reloading mumble is not possible, so we restart it :( | ||
| + | / | ||
| + | ;; | ||
| + | |||
| + | " | ||
| + | # do nothing for now | ||
| + | ;; | ||
| + | |||
| + | " | ||
| + | # do nothing for now | ||
| + | ;; | ||
| + | |||
| + | " | ||
| + | # do nothing for now | ||
| + | ;; | ||
| + | |||
| + | esac | ||
| + | |||
| + | exit 0 | ||
| + | </ | ||
| + | |||
| + | Il faut rendre ce script exécutable : | ||
| + | <code bash> | ||
| + | chmod +x / | ||
| + | </ | ||
| + | |||
| + | On indique le ou les domaines qu’on souhaite dans ''/ | ||
| + | |||
| + | < | ||
| + | On génère ici un certificat // | ||
| + | C'est une solution de facilité. | ||
| + | Si on avait voulu créer un certificat ciblé pour '' | ||
| + | </ | ||
| + | |||
| + | <file - / | ||
| + | chapril.org *.chapril.org | ||
| + | </ | ||
| + | |||
| + | La première fois : | ||
| + | |||
| + | <code bash> | ||
| + | dehydrated --register --accept-terms | ||
| + | </ | ||
| + | |||
| + | Puis on génère ou régénère les certificats : | ||
| + | |||
| + | <code bash> | ||
| + | dehydrated -c | ||
| + | </ | ||
| + | |||
| + | Si tout s’est bien passé, alors on peut générer un vrai certificat cette fois. | ||
| + | Il faut donc supprimer le fichier ''/ | ||
| + | |||
| + | <code bash> | ||
| + | rm / | ||
| + | dehydrated --register --accept-terms | ||
| + | dehydrated -c --force | ||
| + | </ | ||
| + | |||
| + | Il faut maintenant automatiser le renouvellement des certificats avec une tâche Cron. | ||
| + | On créé le fichier ''/ | ||
| + | |||
| + | <file bash / | ||
| + | #! /bin/bash | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | Puis on le rend exécutable : | ||
| + | <code bash> | ||
| + | chmod +x / | ||
| + | </ | ||
| + | |||
| + | ==== Configuration Web sur Bastion ==== | ||
| + | |||
| + | Créer le dossier des logs Nginx : | ||
| + | <code bash> | ||
| + | mkdir / | ||
| + | </ | ||
| + | |||
| + | Actions : | ||
| + | * Créer le fichier de configuration Web ''/ | ||
| + | * S' | ||
| + | * Remplacer '' | ||
| + | * Neutraliser la partie TLS, | ||
| + | * Neutraliser la partie redirection TLS ; | ||
| + | * Créer un lien vers ce fichier dans ''/ | ||
| + | * Ajouter '' | ||
| + | * Lancer '' | ||
| + | * Réactiver la redirection TLS et la partie TLS dans le fichier Web. | ||
| + | |||
| + | ===== Organiser les salons ===== | ||
| + | |||
| + | Par défaut, aucun salon n'est présent. | ||
| + | |||
| + | Pour créer des salons : | ||
| + | * Se connecter avec : | ||
| + | * Adresse : '' | ||
| + | * Port : '' | ||
| + | * Nom d' | ||
| + | * Nom : '' | ||
| + | * Dans l’arborescence des salons : | ||
| + | * Cliquer bouton droit sur //root//, | ||
| + | * Cliquer sur // | ||
| + | * Remplir le formulaire. | ||
| + | |||
| + | ===== Mumble-web ===== | ||
| + | |||
| + | ==== Principe ==== | ||
| + | |||
| + | Mumble-web peut être installé en mode // | ||
| + | Pour le Chapril, le mode //proxied// a été retenu car il permet : | ||
| + | * Une gestion du certificat Web sur notre VM Bastion ; | ||
| + | * La génération de log HTTP pour suivre la fréquentation du service. | ||
| + | |||
| + | Voici le chemin romancé des requêtes : | ||
| + | |||
| + | === Côté utilisateur === | ||
| + | |||
| + | Mumble-web consiste en des fichiers statiques : HTML, Javascript et images. | ||
| + | |||
| + | Une fois ces fichiers chargés dans le navigateur depuis https:// | ||
| + | |||
| + | Le fichier '' | ||
| + | <code javascript> | ||
| + | config.defaults.address = ' | ||
| + | </ | ||
| + | |||
| + | Donc le navigateur de l' | ||
| + | |||
| + | === Nginx sur la VM Bastion === | ||
| + | |||
| + | Tout le trafic Web du SI Chapril passe par un bastion Web. | ||
| + | Les deux flux arrivent sur le même Nginx. | ||
| + | C'est à ce niveau là qu'est géré le certificat TLS. | ||
| + | Ensuite tout est envoyé au Nginx de la VM Allo sans chiffrement. | ||
| + | |||
| + | === Nginx sur la VM Allo === | ||
| + | |||
| + | Les deux flux arrivent sur le même Nginx. | ||
| + | Si le chemin de requête est ''/'' | ||
| + | Si le chemin demandé est ''/ | ||
| + | |||
| + | === Websockify sur la VM Allo === | ||
| + | |||
| + | Websockify : | ||
| + | * Est lancé en tâche de fond via Systemd ; | ||
| + | * Lit tout ce qui arrive sur le port '' | ||
| + | * Redirige tout vers le port '' | ||
| + | * S' | ||
| + | |||
| + | Le serveur Mumble traite toutes les connexions sur le port '' | ||
| + | |||
| + | ==== Configuration du Nginx Bastion ==== | ||
| + | |||
| + | Il gère le certificat TLS et redirige en //proxy// vers la VM Allo. | ||
| + | |||
| + | <code nginx> | ||
| + | server { | ||
| + | listen 80; | ||
| + | listen [::]:80; | ||
| + | |||
| + | server_name mumble.chapril.org; | ||
| + | |||
| + | access_log / | ||
| + | error_log / | ||
| + | |||
| + | include / | ||
| + | include / | ||
| + | include / | ||
| + | } | ||
| + | |||
| + | server { | ||
| + | listen 443 ssl; | ||
| + | listen [::]:443 ssl; | ||
| + | |||
| + | server_name mumble.chapril.org; | ||
| + | |||
| + | access_log / | ||
| + | error_log / | ||
| + | |||
| + | ssl_certificate | ||
| + | ssl_certificate_key / | ||
| + | |||
| + | include / | ||
| + | include / | ||
| + | #include / | ||
| + | |||
| + | location / { | ||
| + | proxy_http_version | ||
| + | proxy_set_header | ||
| + | include proxy_params; | ||
| + | proxy_pass http:// | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== Installation code et build ==== | ||
| + | |||
| + | Installation de '' | ||
| + | <code bash> | ||
| + | apt-get install npm | ||
| + | </ | ||
| + | |||
| + | Oui, ça installe 251 paquets '' | ||
| + | |||
| + | Clonage : | ||
| + | <code bash> | ||
| + | cd / | ||
| + | git clone https:// | ||
| + | cd mumble-web/ | ||
| + | npm install | ||
| + | npm run build | ||
| + | </ | ||
| + | |||
| + | ==== Déploiement ==== | ||
| + | |||
| + | Note : pour le premier déploiement, | ||
| + | |||
| + | Créer la branche officielle : | ||
| + | <code bash> | ||
| + | mkdir / | ||
| + | cd / | ||
| + | git init . | ||
| + | cp -a / | ||
| + | chown -R www-data / | ||
| + | git add . | ||
| + | git commit -m "Build 9945bc5f7" | ||
| + | </ | ||
| + | |||
| + | Créer la branche du Chapril : | ||
| + | <code bash> | ||
| + | cd / | ||
| + | git branch chapril-9945bc5f7 | ||
| + | git checkout chapril-9945bc5f7 | ||
| + | </ | ||
| + | |||
| + | Paramétrer le fichier ''/ | ||
| + | <code bash> | ||
| + | echo " | ||
| + | git add -p | ||
| + | git commit -m "First settings." | ||
| + | </ | ||
| + | |||
| + | ==== Installation de Websockify ==== | ||
| + | |||
| + | Installation de Websockify : | ||
| + | <code bash> | ||
| + | apt install websockify | ||
| + | </ | ||
| + | |||
| + | Configuration de Systemd : | ||
| + | <code ini> | ||
| + | [Unit] | ||
| + | Description=Mumble web interface | ||
| + | Documentation=https:// | ||
| + | Requires=network.target mumble-server.service | ||
| + | After=network.target mumble-server.service | ||
| + | |||
| + | [Service] | ||
| + | Type=simple | ||
| + | User=www-data | ||
| + | ExecStart=/ | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=multi-user.target | ||
| + | </ | ||
| + | |||
| + | Activation : | ||
| + | <code bash> | ||
| + | systemctl daemon-reload | ||
| + | systemctl start mumble-web | ||
| + | systemctl enable mumble-web | ||
| + | </ | ||
| + | |||
| + | ==== Configuration du Nginx Allo ==== | ||
| + | |||
| + | Créer les fichiers Nginx : | ||
| + | <code bash> | ||
| + | touch / | ||
| + | ln -s / | ||
| + | </ | ||
| + | |||
| + | Remplir le fichier : | ||
| + | <code nginx> | ||
| + | server { | ||
| + | listen 80; | ||
| + | server_name mumble.chapril.org; | ||
| + | |||
| + | access_log / | ||
| + | error_log / | ||
| + | |||
| + | location / { | ||
| + | root / | ||
| + | } | ||
| + | |||
| + | location /ws { | ||
| + | proxy_pass http:// | ||
| + | proxy_http_version 1.1; | ||
| + | proxy_set_header Upgrade $http_upgrade; | ||
| + | proxy_set_header Connection $connection_upgrade; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | map $http_upgrade $connection_upgrade { | ||
| + | default upgrade; | ||
| + | '' | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== Personnalisation ==== | ||
| + | |||
| + | === La boîte de dialogue === | ||
| + | |||
| + | Éditer le fichier ''/ | ||
| + | <code javascript> | ||
| + | config.connectDialog.address | ||
| + | config.connectDialog.port | ||
| + | config.connectDialog.token | ||
| + | config.connectDialog.password = false; | ||
| + | config.connectDialog.channel | ||
| + | |||
| + | config.settings.voiceMode | ||
| + | config.settings.joinDialog | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | === Ajouter un favicon === | ||
| + | |||
| + | TODO | ||
| + | |||
| + | === Remplacer l' | ||
| + | |||
| + | TODO | ||
| + | |||
| + | === Remplacer le lien GitHub === | ||
| + | TODO | ||
| + | |||
| + | === Franciser un peu === | ||
| + | |||
| + | Éditer le fichier ''/ | ||
| + | <code html> | ||
| + | <!-- TODO --> | ||
| + | </ | ||
| + | |||
| + | ==== Procédure de mise à jour ==== | ||
| + | |||
| + | Les fichiers de Mumble-web sont statiques. | ||
| + | |||
| + | Construire les fichiers : | ||
| + | <code bash> | ||
| + | cd / | ||
| + | git fetch --all | ||
| + | npm install | ||
| + | npm run build | ||
| + | </ | ||
| + | |||
| + | Désactiver Mumble-web : | ||
| + | <code bash> | ||
| + | rm / | ||
| + | systemctrl restart nginx | ||
| + | </ | ||
| + | |||
| + | Intégrer la nouvelle version : | ||
| + | <code bash> | ||
| + | cd / | ||
| + | git checkout master | ||
| + | git branch master-hashducommit | ||
| + | rm -f * | ||
| + | cp -a / | ||
| + | chown -R www-data . | ||
| + | git add . | ||
| + | git commit -m "Build hashducommit" | ||
| + | git checkout chapril-derniereversion | ||
| + | git merge master-hashducommit | ||
| + | </ | ||
| + | |||
| + | Ré-activer Mumble-web : | ||
| + | <code bash> | ||
| + | ln -s / | ||
| + | systemctrl restart nginx | ||
| + | </ | ||
