Outils pour utilisateurs

Outils du site


admin:services:mumble.chapril.org

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
Prochaine révisionLes deux révisions suivantes
admin:services:mumble.chapril.org [2020/03/21 01:25] – [Configuration certificat] adminadmin:services:mumble.chapril.org [2020/03/28 04:19] cpm
Ligne 1: Ligne 1:
 ====== Service mumble.chapril.org ======= ====== Service mumble.chapril.org =======
  
-===== Installation =====+===== Déploiement =====
  
 +==== Installation ====
 <code> <code>
 apt-get install mumble-server apt-get install mumble-server
Ligne 16: Ligne 17:
 Le fichier de configuration est ''/etc/mumble.ini''. Le fichier de configuration est ''/etc/mumble.ini''.
  
-===== Personnalisation ======+==== Personnalisation ====
  
 Modification du fichier ''/etc/mumble.ini'' : Modification du fichier ''/etc/mumble.ini'' :
Ligne 26: Ligne 27:
 </code> </code>
  
-===== Configuration routage flux =====+==== Configuration routage flux ====
  
 Sur ''maine'' et ''coon'' : Sur ''maine'' et ''coon'' :
Ligne 49: Ligne 50:
 </code> </code>
  
-===== Configuration pare-feu local =====+==== Configuration pare-feu local ====
 Sur la vm ''allo'' : Sur la vm ''allo'' :
   * créer le fichier ''/etc/firehol/services/mumble.conf'' :   * créer le fichier ''/etc/firehol/services/mumble.conf'' :
Ligne 86: Ligne 87:
 </code> </code>
  
-===== Test de connexion =====+==== Test de connexion ====
  
 À cette étape, le serveur Mumble est joignable à condition d'accepter le certificat. À cette étape, le serveur Mumble est joignable à condition d'accepter le certificat.
Ligne 96: Ligne 97:
   * nom : Chapril   * nom : Chapril
  
-===== Organiser des salons =====+==== Permettre la création de salons temporaires ====
  
-Par défaut, aucun salon n'est présent.+Marche à suivre : 
 +  * se connecter en tant que Superuser ; 
 +  * bouton droit sur la racine puis modifier ; 
 +  * onglet CLA ; 
 +  * sélectionner ''@all'' non italique ; 
 +  * cocher la colonne ''Autoriser'' pour la ligne ''Créer des temporaires''
 +  * cliquer sur ''OK''.
  
-Pour créer des salons : 
-  * se connecter avec : 
-    * adresse : mumble.chapril.org 
-    * port : 64738 (celui par défaut) 
-    * nom d'utilisateur : Superuser 
-    * nom : Chapril-SU 
-  * dans l’arborescence des salons : 
-    * cliquer bouton droit sur « root » 
-    * cliquer sur « Ajouter… » 
-    * remplir le formulaire 
-    * … 
  
 +==== Configuration certificat ====
 +Par défaut, il est possible d'utiliser un certificat auto-signé. Mais alors une boite de dialogue technique apparaît et demande une confirmation. Cela représente une barrière aux utilisateurs. Donc l'utilisation d'un certificat validé par une autorité reconnue est la bienvenue.
  
-===== Configuration certificat ===== +<code>apt install dehydrated dnsutils ntp</code>
-Par défaut, il est possible d'utiliser un certificat auto-signé. Mais alors une boite de dialogue technique apparait et demande une confirmation. Cela représente une barrière aux utilisateurs. Donc l'utilisation d'un certificat validé par une autorité reconnue est la bienvenue.+
  
-À CONTINUER… <3+Temporairement, le temps de tester la configuration on va utiliser le serveur ACME de staging.
  
-===== Configuration web sur Bastion =====+<code bash>echo 'CA="https://acme-staging-v02.api.letsencrypt.org/directory"' > /etc/dehydrated/conf.d/staging.sh</code> 
 + 
 +On configure dehydrated pour faire de la validation DNS-01 dans le fichier ///etc/dehydrated/conf.d/auth-dns.sh//
 + 
 +<file bash /etc/dehydrated/conf.d/auth-dns.sh> 
 +CHALLENGETYPE="dns-01" 
 +HOOK=/etc/dehydrated/hook-custom-chapril.sh 
 +</file> 
 + 
 +On va maintenant créer le script hook ///etc/dehydrated/hook-custom-chapril.sh//
 +C'est lui qui est chargé de pousser des changements dans la zone DNS dynamique //_acme-challenge.chapril.org// à l'aide de la commande //nsupdate//
 +Attention les paramètres passés à la commande //nsupdate// sont ici spécifiques à chapril. 
 + 
 +Et la valeur de la variable //KEY// est ici évidemment fausse. La bonne valeur à utiliser se trouve sur le serveur DNS chapril dans le fichier ///etc/bind/rndc-acme.key//
 + 
 +<file bash /etc/dehydrated/hook-custom-chapril.sh> 
 +#!/usr/bin/env bash 
 + 
 +set -e 
 +set -u 
 +set -o pipefail 
 + 
 +DNSSERVER="dns.cluster.chapril.org" 
 +KEY="hmac-sha512:rndc-acme cmF0YXBvaWwgdWd1c3NlCg==" 
 +NSUPDATE="nsupdate" 
 +TTL=300 
 + 
 +case "$1" in 
 +    "deploy_challenge"
 +        printf "key %s\nserver %s\nupdate add _acme-challenge.%s. %d in TXT \"%s\"\nsend\n" "${KEY}" "${DNSSERVER}" "${2}" "${TTL}" "${4}" | $NSUPDATE 
 +        ;; 
 +    "clean_challenge"
 +        printf "key %s\nserver %s\nupdate delete _acme-challenge.%s. %d in TXT \"%s\"\nsend\n" "${KEY}" "${DNSSERVER}" "${2}" "${TTL}" "${4}" | $NSUPDATE 
 +        ;; 
 + 
 +    "deploy_cert"
 +        # Reloading mumble is not possible, so we restart it :( 
 +        /bin/systemctl restart mumble-server 
 +        ;; 
 + 
 +    "unchanged_cert"
 +        # do nothing for now 
 +        ;; 
 + 
 +    "startup_hook"
 +        # do nothing for now 
 +        ;; 
 + 
 +    "exit_hook"
 +        # do nothing for now 
 +        ;; 
 + 
 +esac 
 + 
 +exit 0 
 +</file> 
 + 
 +Il faut rendre ce script exécutable : 
 + 
 +<code>chmod +x /etc/dehydrated/hook-custom-chapril.sh</code> 
 + 
 +On indique le ou les domaines qu’on souhaite dans ///etc/dehydrated/domains.txt//
 + 
 +<note>On génère ici un certificat wildcard. C'est une solution de facilité. 
 +Si on avait voulu créer un certificat ciblé pour //mumble.chapril.org// on aurait été obligé de créer sur le serveur DNS chapril une nouvelle zone dynamique //_acme-challenge.mumble.chapril.org//.</note> 
 + 
 +<file /etc/dehydrated/domains.txt> 
 +chapril.org *.chapril.org 
 +</file> 
 + 
 +La première fois : 
 + 
 +<code>dehydrated --register --accept-terms</code> 
 + 
 +Puis on génère ou régénère les certificats : 
 + 
 +<code>dehydrated -c</code> 
 + 
 +Si tout s’est bien passé, alors pour peut générer un vrai certificat cette fois. Il faut donc supprimer le fichier ///etc/dehydrated/conf.d/staging.sh//, forcer la création d’un nouveau compte ACME et forcer le renouvellement du certificat pour écraser le certificat de test qu’on vient de créer. 
 + 
 +<code> 
 +rm /etc/dehydrated/conf.d/staging.sh 
 +dehydrated --register --accept-terms 
 +dehydrated -c --force 
 +</code> 
 + 
 +Il faut maintenant automatiser le renouvellement des certificats avec une tâche cron. On créé le fichier ///etc/cron.weekly/acme-renew// suivant : 
 + 
 +<file bash /etc/cron.weekly/acme-renew> 
 +#! /bin/bash 
 +/usr/bin/dehydrated -c 
 +</file> 
 + 
 +Puis on le rend exécutable : 
 + 
 +<code>chmod +x /etc/cron.weekly/acme-renew</code> 
 + 
 +==== Configuration web sur Bastion ====
  
 Créer le dossier des logs Nginx : Créer le dossier des logs Nginx :
Ligne 136: Ligne 230:
   * réactiver la redirection SSL et la partie SSL dans le fichier web.   * réactiver la redirection SSL et la partie SSL 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 : mumble.chapril.org
 +    * port : 64738 (celui par défaut)
 +    * nom d'utilisateur : Superuser
 +    * nom : Chapril-SU
 +  * dans l’arborescence des salons :
 +    * cliquer bouton droit sur « root »
 +    * cliquer sur « Ajouter… »
 +    * remplir le formulaire
 +    * …
 +
 +===== Mumble-web =====
 +
 +==== Configuration du Nginx bastion ====
 +
 +Gère le certificat SSL.
 +Redirige en proxy vers la vm allo.
 +
 +<code>
 +server {
 +    listen 80;
 +    listen [::]:80;
 + 
 +    server_name mumble.chapril.org; 
 + 
 +    access_log /var/log/nginx/mumble.chapril.org/mumble.chapril.org.access_log;
 +    error_log /var/log/nginx/mumble.chapril.org/mumble.chapril.org.error_log;
 + 
 +    include /etc/nginx/acme-challenge;
 +    include /etc/nginx/sexy-chapril;
 +    include /etc/nginx/force-ssl.conf;
 +}
 +
 +server {
 +    listen 443 ssl;
 +    listen [::]:443 ssl;
 + 
 +    server_name mumble.chapril.org;
 + 
 +    access_log /var/log/nginx/mumble.chapril.org/mumble.chapril.org.access_log;
 +    error_log /var/log/nginx/mumble.chapril.org/mumble.chapril.org.error_log;
 + 
 +    ssl_certificate     /var/lib/dehydrated/certs/mumble.chapril.org/fullchain.pem;
 +    ssl_certificate_key /var/lib/dehydrated/certs/mumble.chapril.org/privkey.pem;
 + 
 +    include /etc/nginx/acme-challenge;
 +    include /etc/nginx/sexy-chapril;
 +    #include /etc/nginx/chapril-banner-location;
 +
 +    location / {
 +        proxy_http_version      1.1;
 +        proxy_set_header        Upgrade $http_upgrade;
 +        include proxy_params;
 +        proxy_pass http://allo.cluster.chapril.org;
 +    }
 +}
 +</code>
 +==== Installation ====
 +
 +Installation de ''npm'' :
 +<code>
 +apt-get install npm
 +
 +Oui, ça installe 251 paquets node-*…
 +</code>
 +
 +Clonage :
 +<code>
 +cd /srv/mumble.chapril.org
 +git clone https://github.com/johni0702/mumble-web
 +cd mumble-web
 +npm install
 +npm run build
 +cp -a /srv/mumble.chapril.org/mumble-web/dist /var/www/mumble.chapril.org
 +chown -R www-data /var/www/mumble.chapril.org/
 +</code>
 +
 +Note : pour le premier déploiement, on a utilisé le commit ''9945bc5f767eafb0fb82040c4ab38ecf24d99cbc''.
 +
 +Paramétrer le fichier ''config.local.js'' :
 +<code>
 +pas forcément utile
 +</code>
 +
 +
 +Installation de websockify :
 +<code>
 +apt install websockify
 +</code>
 +
 +Configuration systemd :
 +<code>
 +[Unit]
 +Description=Mumble web interface
 +Documentation=https://github.com/johni0702/mumble-web
 +Requires=network.target mumble-server.service
 +After=network.target mumble-server.service
 +
 +[Service]
 +Type=simple
 +User=www-data
 +ExecStart=/usr/bin/websockify --ssl-target localhost:64737 localhost:64738
 +
 +[Install]
 +WantedBy=multi-user.target
 +</code>
 +
 +Activation :
 +<code>
 +systemctl daemon-reload
 +systemctl start mumble-web
 +systemctl enable mumble-web
 +</code>
 +==== Configuration du Nginx allo ====
 +
 +Créer les fichiers Nginx :
 +<code>
 +touch /etc/nginx/sites-available/mumble.chapril.org
 +ln -s /etc/nginx/sites-available/mumble.chapril.org etc/nginx/sites-enabled/
 +</code>
 +
 +Remplir le fichier :
 +<code>
 +server {
 +        listen 80;
 +        server_name mumble.chapril.org;
 +
 +        access_log /var/log/nginx/mumble.chapril.org/mumble.chapril.org-access.log;
 +        error_log /var/log/nginx/mumble.chapril.org/mumble.chapril.org-error.log;
 +
 +        location / {
 +                root /var/www/mumble.chapril.org/;
 +        }
 +
 +        location /ws {
 +                proxy_pass http://localhost:64737;
 +                proxy_http_version 1.1;
 +                proxy_set_header Upgrade $http_upgrade;
 +                proxy_set_header Connection $connection_upgrade;
 +        }
 +}
 +
 +map $http_upgrade $connection_upgrade {
 +        default upgrade;
 +        '' close;
 +}
 +</code>
 +
 +==== Personnalisation : la boite de dialogue ====
 +Éditer le fichier ''/var/www/mumble.chapril.org/config.local.js'' :
 +<code>
 +config.connectDialog.password = false;                                                                                            
 +config.connectDialog.token    = false;                                                                                            
 +config.settings.voiceMode     = 'ptt';                                                                                            
 +config.settings.joinDialog    = true;
 +</code>
 +
 +==== Personnalisation : franciser un peu ====
 +
 +Éditer le fichier ''/var/www/mumble.chapril.org/index.html'' :
 +<code>
 +TODO
 +</code>
 +
 +==== Personnalisation : ajouter un favicon ====
 +
 +TODO
 +
 +==== Personnalisation : remplacer l'icône GitHub ====
 +TODO
 +
 +==== Personnalisation : remplacer le lien GitHub ====
 +TODO
 +
 +==== Procédure de mise à jour ====
 +
 +Les fichiers de Mumble-web sont statiques.
 +
 +Builder les fichiers :
 +<code>
 +cd /srv/mumble.chapril.org/mumble-web
 +git fetch --all 
 +npm install
 +npm run build
 +</code>
 +
 +Désactiver mumble-web :
 +<code>
 +rm /etc/nginx/sites-enabled/mumble.chapril.org
 +systemctrl restart nginx
 +</code>
 +
 +Intégrer la nouvelle version :
 +<code>
 +cd /var/www/mumble.chapril.org/
 +git checkout master
 +git branch master-hashducommit
 +rm -f *
 +cp -a /srv/mumble-chapril.org/dist/* .
 +chown -R www-data .
 +git add .
 +git commit -m "Build hashducommit"
 +git checkout chapril-derniereversion
 +git merge master-hashducommit
 +</code>
 +
 +Ré-activer mumble-web :
 +<code>
 +ln -s /etc/nginx/sites-available/mumble.chapril.org /etc/nginx/sites-enabled/
 +systemctrl restart nginx
 +</code>
  
admin/services/mumble.chapril.org.txt · Dernière modification : 2020/03/31 23:51 de cpm