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:16] cpm
Ligne 16: Ligne 16:
 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 111: Ligne 111:
     * remplir le formulaire     * remplir le formulaire
     * …     * …
 +
 +===== 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 ''@all'' non italique ;
 +  * cocher la colonne ''Autoriser'' pour la ligne ''Créer des temporaires'' ;
 +  * cliquer sur ''OK''.
  
  
 ===== Configuration certificat ===== ===== Configuration certificat =====
-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.+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.
  
-À CONTINUER… <3+<code>apt install dehydrated dnsutils ntp</code>
  
 +Temporairement, le temps de tester la configuration on va utiliser le serveur ACME de staging.
 +
 +<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 ===== ===== Configuration web sur Bastion =====
  
Ligne 136: Ligne 244:
   * 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.
  
 +
 +===== 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