Depuis 1 mois, je me suis pris un VPS pour gérer différents services pour de l’auto-hébergement, parce que je ne peux gérer ces services avec le simple hébergement mutualisé web que j'avais. J'ai donc installé sur ce VPS, une Debian 9 Stretch et la surcouche Yunohost, parce que pour débuter, c'est simple à administrer et rapide à mettre en place.
Afin de consulter les salons IRC de n'importe où, il y a différents webclient IRC proposés par Yunohost : The Lounge (https://thelounge.chat/), KiwiIRC 'https://kiwiirc.com/) et Shout (http://shout-irc.com/). J'ai installé The Louge, qui est un bon webClient IRC en soi, simple à installer et à configurer. Mais pour jouer et avoir une solution légère et utilisable sur plusieurs supports (web, appli smartphone, client lourd, ...), je me suis lancé dans la mise en place du couple Weechat (https://weechat.org) et son frontend web Glowing Bear (https://www.glowing-bear.org).
Pré-requis
Avoir créé auprès de votre registrar, un sous-domaine weechat.exemple.ovh puis l'avoir enregistrer dans Yunohost > Domaines
Installation de Weechat
Installez Weechat (voir les Instructions d'installation sur https://weechat.org/download/debian/active/) sur votre VPS, via un terminal en SSH.
Installation de Glowing-bear
Installez Glowing-Bear depuis Yunohost :
dans Yunohost > Application > +Installer (dans les paquets Community)
Installez-le sur le sous-domaine 'weechat.exemple.ovh' et dans le dossier '/' (voir les explications ici : https://yunohost.org/#/dns_subdomains_fr)
Configurer Weechat
Il s'agit de configurer les paramètres de l’application et les différents serveurs IRC que vous voulez joindre. (voir le Guide de démarrage rapide WeeChat : https://weechat.org/files/doc/stable/weechat_quickstart.fr.html). Toutes ces commandes sont à taper dans l'interface Weechat.
Voici quelques options définies par défaut, mais qui peuvent être personnalisées par serveur IRC :
/set irc.server_default.nicks "mathdatech,MathDaTech,mathDatech,MathdaTech,Mathdat3ch" /set irc.server_default.username "mathdatech" /set irc.server_default.realname "Math DaTech" /set irc.server_default.ssl on
Voici comment enregistrer les principaux serveurs IRC (en mode SSL) :
- Freenode :
/server add freenode chat.freenode.net /set irc.server.freenode.addresses "chat.freenode.net/6697" /set irc.server.freenode.ssl on /set irc.server.freenode.autojoin "#python-fr,#laquadrature,#fedora-fr" /set irc.server.freenode.autoconnect on
- OFTC :
/server add oftc irc.oftc.net /set irc.server.oftc.addresses "irc.oftc.net/6697" /set irc.server.oftc.ssl on /set irc.server.oftc.autojoin "#osm-fr" /set irc.server.oftc.autoconnect on
- GeekNode :
/server add geeknode irc.geeknode.org /set irc.server.geeknode.addresses "irc.geeknode.org/6697" /set irc.server.geeknode.ssl on /set irc.server.geeknode.autojoin "#fdn,#labriqueinter.net,#geeknode" /set irc.server.geeknode.autoconnect on
D'autres options sont possibles, pour cela voir le Guide utilisateur WeeChat (https://weechat.org/files/doc/stable/weechat_user.fr.html).
Configurer Weechat en mode relay
Dans cette configuration, Weechat tourne en arrière plan, et vous venez vous y connecter via une application dédiée déportée. Ils vont echangés les informations dans un protocole propre à Weechat, l'application dédiée n'étant qu'un reflet de ce qui se passe dans Weechat. (pour plus d'informations, c'est par là https://weechat.org/files/doc/stable/weechat_user.fr.html#relay_plugin)
Nous allons avoir besoins d'ouvrir les ports TCP du VPS pour accéder à Weechat en mode relay : Yunohost > Outils > Pare-feu : ouvrir les ports TCP 9001 (non-SSL) et 9002 (SSL)
Pour activer le mode relay de Weechat en version non chiffrée, voici les commandes à lui donner :
/set relay.network.password yourpassword /relay add weechat 9001
A partir de là, vous pouvez déjà vous connecter à Weechat avec Glowing-bear en remplissant les informations nécessaires et le mot de passe.
Pour plus de confidentialité, vous pouvez chiffrer les échanges en SSL. La méthode décrite dans la documentation officielle ne fonctionne plus, car le certificat est auto-signé et les navigateurs modernes rejettent la connexion par mesure de sécurité. Je me permet d'insister sur l'importance d'établir des communications chiffrées sur internet, pour vous protéger et protéger vos interlocuteurs ainsi que les données qui transitent entre vous et entre les applications de communication. C'est pour cela qu'il est important de mettre en place ce système de relais chiffré que nous allons voir par la suite.
Nous allons donc générer un certificat SSL avec Let's Encrypt et le fournir à Weechat.
Générer un certificat Let's Encrypt
Il faut préalablement avoir installer le client Certbot de Let's Encrypt (sudo apt-get install certbot)
D'abord, arrêtez le serveur Nginx car Certbot à besoin de la connexion sur les ports 80 et 443.
# yunohost service stop nginx
On génère un certificat/clé sur le serveur pour le domaine weechat.exemple.ovh avec la commande :
# certbot certonly --standalone -d weechat.exemple.ovh -m mathdatech@exemple.ovh
On peut redémarrer le serveur Nginx
# yunohost service start nginx
On vérifie que cela à créer différents dossiers dans le répertoire de Let's Encrypt :
# ls -l /etc/letsencrypt/ total 24 drwx------ 3 root root 4096 Jul 29 18:26 accounts drwx------ 3 root root 4096 Jul 29 19:19 archive drwxr-xr-x 2 root root 4096 Jul 29 19:19 csr drwx------ 2 root root 4096 Jul 29 19:19 keys drwx------ 3 root root 4096 Jul 29 19:19 live drwxr-xr-x 2 root root 4096 Jul 29 19:19 renewal
On vérifie la présence du certificat et de la clé dans le répertoire du domaine déclaré :
# ls -l /etc/letsencrypt/live/weechat.exemple.ovh/ total 4 lrwxrwxrwx 1 root root 47 Jul 29 19:19 cert.pem -> ../../archive/weechat.exemple.ovh/cert1.pem lrwxrwxrwx 1 root root 48 Jul 29 19:19 chain.pem -> ../../archive/weechat.exemple.ovh/chain1.pem lrwxrwxrwx 1 root root 52 Jul 29 19:19 fullchain.pem -> ../../archive/weechat.exemple.ovh/fullchain1.pem lrwxrwxrwx 1 root root 50 Jul 29 19:19 privkey.pem -> ../../archive/weechat.exemple.ovh/privkey1.pem -rw-r--r-- 1 root root 543 Jul 29 19:19 README
Le fichier de chiffrement qu'à besoin Weechat est un agrégat du certificat "fullchain.pem" et de la clé "privkey.pem" généré avec Let's Encrypt.
D'abord, créez le répertoire qui va contenir ce fichier pour Weechat :
mkdir -p ~/.weechat/ssl cd ~/.weechat/ssl
Puis, copiez y le fichier relay.pem depuis le certificat et la clé Let's Encrypt :
cat /etc/letsencrypt/live/weechat.exemple.ovh/fullchain.pem /etc/letsencrypt/live/weechat.exemple.ovh/privkey.pem > relay.pem
Si vous faites tourner Weechat sur un utilisateur weechat fictif, il faut penser à lui attribuer les droits sur le fichier :
chown weechat.weechat ~weechat/.weechat/ssl/relay.pem
Afin d'activer la prise en compte par Weechat du certificat SSL, il suffit de renseigner les options suivantes dans l'interface Weechat :
/set relay.network.password yourpassword (si vous ne l'aviez pas défini plus haut) /relay sslcertkey /relay add weechat 9002
Laissez tourner Weechat. Maintenant, vous pouvez vous y connecter avec Glowing Bear via https://weechat.exemple.ovh
Programmer le renouvellement des certificats Let's Encrypt
Ce genre de certificat a une durée de vie limitée, il faut le renouveller entre 60 et 90 jours avant la date d'échéance (qui est de 3 mois). Pour cela, un petit script shell va nous aider à faire le job. Créez le script :
nano /usr/local/sbin/renew.sh
puis copiez-y les instructions suivantes :
#!/bin/bash certbot renew -q cat /etc/letsencrypt/live/weechat.example.com/privkey.pem \ /etc/letsencrypt/live/weechat.example.com/fullchain.pem > \ ~weechat/.weechat/ssl/relay.pem chown weechat.weechat ~weechat/.weechat/ssl/relay.pem
Restes à le programmer dans une tache cron, tous les dimanches à 12h00, le programme Certbot va vérifier si le renouvellement est à faire, et si c'est le cas, provoquer le renouvellement automatique du certificat.
crontab -e
Ajoutez-y la ligne :
0 12 * * 0 /usr/local/sbin/renew.sh
Pour en savoir plus :
- Aaron Toponce : Weechat Relay With Let's Encrypt Certificates https://pthree.org/2016/05/20/weechat-relay-with-lets-encrypt-certificates/
- doing it the hard way — Using Let’s Encrypt for a Weechat Relay http://r4v5.info/post/135607311300/using-lets-encrypt-for-a-weechat-relay
- Setting up a trusted secure WeeChat relay with StartSSL https://4z2.de/2014/07/06/weechat-trusted-relay
- Configuring weechat relay for IRC http://techlinux.net/2014/11/weechat-irc-client-unattended-relay/
1 De lord -
C'est tout bien mais il manque juste un ptit truc :-)
Quand le certif sera renouvellé, il faut le dire à weechat.
Pour ça tu peux utiliser le plugin fifo de weechat qui va te permettre de lui envoyer des commandes depuis l'extérieur :
Dans ton script de renew à la fin tu peux donc rajouter :
printf '%b' '*/relay sslcertkey\n' > ~/.weechat/weechat_fifo
Et hop ton weechat recevra la commande de reload comme il faut :-)