L'infrastructure du CHATONS sans-nuage.fr de Alsace Réseau Neutre
sans-nuage.fr est un serveur YunoHost installé sur une machine virtuelle “VM” sur le cluster de serveur d'ARN. Notre infrastructure Matrix et les bridges qui vont avec repose donc sur des paquets d'application YunoHost :
-
-
-
-
-
-
-
Maintenance du Bridge WhatsApp
Le bridge est basé sur Whatsapp Web, une page web permettant de discuter via navigateur sur Whatsapp.
Whatsapp ne permet une connexion principale sur le web, il est nécessaire de se connecter sur un téléphone régulièrement toutes les 2 semaines afin de maintenir la session web actif.
L'application peut être maintenue sur une machine virtuelle Android.
Si le bridge est bien à jour, bien login à l'App whatsapp de la VM et que celle ci est bien à jour, alors
Regarder les logs /var/log/mautrix_whatsapp/mautrix_whatsapp.log et /var/log/matrix-synapse/homeserver.log
-
Perte de connexion
Se connecter avec le compte robot “@arnmessager:sans-nuage.fr”sur le client Element. Vérifier l'état du bridge avec les commandes dans la discussion “WhatsApp Bridge Bot”
-
Taper la commande “!wa ping” pour vérifier l'état de la connexion
Si la connexion semble problématique, Entrer la commande “!wa reconnect”
Vérifier s'il existe une mise à jour pour le bridge, voir la section “ Mettre à jour les paquets ”
Si le bridge semble ne plus etre login à l'App WhatsApp de la VM LineageOS, voir le point suivant
Connexion à la VM LineageOS et l'app WhatsApp
Installer Tight VNC (vncviewer) et Java sur votre poste si ce n'est pas déja fait
Se connecter à l'hôte qui fait tourner la VM: hwhost-1
ou -2
si lsvps | grep lineageos
n'indique pas running
, Démarrer la VM : gnt-instance start lineageos
Une fois démarrée, ouvrez un terminal sur votre poste pour vous y connecter.
Créer un pont ssh entre un port de la VM Android WhatsApp de l'infrastructure et votre PC : ssh -L 11020:127.0.0.1:11020 -N -f -p 2222 nomutilisateur@hwhost-1.arn-fai.net
Lancer VNC : vncviewer localhost::11020
Sur l'écran de déverrouillage, appuyez sur la touche espace afin d'ouvrir l'interface de saisie de mot de passe
Utiliser le mot de passe du trousseau Sans-nuage et le clavier virtuel proposé par le système
Pour lancer l'application Whatsapp
L'application Whatsapp est protégée contre l'ouverture, il faut cliquer sur une notification ou aller dans Aurora Store pour l'ouvrir
Rentrer le schéma présent dans le trousseau Sans-nuage pour déverrouiller l'app
vérifier dans l'app WA que le Bridge apparaît dans les appareils connectés. Si non, les ennuis commencent :D
⇒ Voir à partir du point 7. de la section “Déployement VM LineageOS/WhatsApp sur l'infra”
Installation du Bridge WhatsApp sur sans-nuage
-
Administrateur @arnmessager:sans-nuage.fr
User domain
ou sans-nuage.fr
(devrait être égal)
Connexion à chat.sans-nuage.fr avec arnmessager
Invitation du robot WA @whatsappbot:sans-nuage.fr
Configuration/upgrade du bridge
Pour changer l'avatar du bridge il faut d'abord upload un avatar dans un salon, puis récupérer son ID (clic droit, copier l'adresse de l'image), puis le rajouter dans la config du bridge.
Dans /opt/yunohost/mautrix_whatsapp/config.yaml
Nota - Laissé par défaut allow_user_invite: false
Permissions
Correction de l'administrateur “@arnmessager:sans-nuage.fr”: admin
Ajout de `matrix.fdn.fr: user`
Définition de @arnmessager:sans-nuage.fr comme invité relai
Changement de l'avatar de whatsappbot dans config.yaml (mettre le lien récupéré
Tant que https://github.com/YunoHost-Apps/mautrix_whatsapp_ynh/issues/33 n'est pas résolu, après une màj du bridge, il faut mettre à jour le fichier “ opt/yunohost/mautrix_whatsapp/config.yaml ” avec les valeurs de l'instance de sans-nuage.fr listées ci-dessus
Les logs de la mise à jour Yunohost montrent les anciennes valeurs du fichier à reprendre
A priori pas besoin car tous les utilisateurs sans-nuage sont autorisés à le faire :
Ajout de droits administrateur synapse pour pouvoir créer des communautés
sudo yunohost app action run synapse set_admin_user -a username=whatsappbot
Configuration du robot-relai mautrix-whatsapp
cf. https://github.com/tulir/mautrix-whatsapp/wiki/Relaybot
Prérequis sur l'interface admin de sans-nuage https://sans-nuage.fr/yunohost/admin/ :
synapse installé sur le domaine matrix.sans-nuage.fr
element installé sur chat.sans-nuage.fr
mautrix_whatsapp installé pour l'instance synapse matrix.sans-nuage.fr
ARN-Messager installé
Utilisateur arnmessager créé
Se connecter sur chat.sans-nuage.fr (Element) avec le compte d'administration des bots mautrix d'ARN mautrix_admin
Restart mautrix_whatsapp puis Inviter @whatsappbot:sans-nuage.fr
Mautrix répond ``This is the relaybot management room. Send `!wa help` to get a list of commands.``
écrire ``!wa login`` dans ce salon
-
Flash le QR-code avec la VM whatsapp puis transfère la VM sur l'infra
Autorisation de nouveaux utilisateurs à bridger des salons, càd à “utiliser whatsappbot”. Ajouter une ligne avec niveau d'autorisation 10 dans /opt/yunohost/mautrix_whatsapp/config .yaml
permissions:
'*': 5
'@arn:sans-nuage.fr': 100
matrix.fdn.fr: 10
sans-nuage.fr: 10
L'autorisation 100 permet d'administrer le bridge, donc lui envoyer des commandes !wa login, etc.
You may also want to set allow_user_invite to true so that you can invite more users to portals created by the bridge. The option is not applied retroactively, but you can use !wa set-pl to make yourself admin in existing rooms.
Mettre à jour les paquets YunoHost des bridges
Dans le cas de modifications mineures, sur Github
Mettre à jour le paquet Upstream.
Modifier les sources des fichiers dans “conf/xxx.src” pour que le paquet aille chercher les nouvelles sources automatiquement.
Changer l'
URL de la source
Le Checksum SHA 256
La valeur SUM correspondante
rmq: le paquet yunohost télécharge les sources du paquet upstream (synapse, mautrix_whatsapp,..).
Mettre à jour le fichier “conf/config.yaml ”
-
Le but est de conserver les paramètres du paquet Yunohost (ENCRYPTION,…) en mettant à jour les lignes concernées par les nouvelles mises à jour.
Modifier le numéro de version dans le “manifest.json” du paquet concerné.
Rmq: les paquets yunohost sont toujours centrés sur 5 scripts, backup, … etc et donc entre version de yunohost ça peut changer genre upgrade de bullseye.
La partie settings:
il y a la liste des messages autorisés que le bot doit prendre en compte.
Si tu en mets un en commentaire ça le supprime de la liste des messages autorisés. Permet entre autre de ne pas relayer les messages du bot whatsapp vers signal et vice-versa
Déploiement VM LineageOS/WhatsApp sur l'infra
!!! Attention à toujours bien vérifier que suffisamment de place est dispo lors de la création et de déplacement des disques virtuels
Pour quelques indications plus visuelles, voir https://sans-nuage.fr/file/f/131980 (ce serait cool de rajouter des screenshots dans ce tuto)
créer une VM d'infra à l'aide du script create-vm-arn 5GoSSD 1Go RAM
-
Installer LineageOS sans fioritures (ext4, puis GRUB, et /system en mode read-write pas nécessaire sauf pour bidouiller en
avancé ⇒ auto-install
francais
configurer en tant que nouvel appareil
configurer le réseau VirtWifi
IP statique
89.234.141.76
Passerelle : 169.254.42.1
longueur préfixe : 32
-
-
Trouver l'ID du disque virtuel associé (.disk0_data
)
Compresser le disque virtuel au format qcow2: qemu-img convert -p -O qcow2 -c /dev/vg0/801c39ab-c6fc-47d3-9e55-3225f8f8f754.disk0_data lineage_ganeti_5GB_compressed.qcow2
Déplacer le disque virtuel vers un laptop avec webcam. Depuis le laptop taper : scp user@serveur.fr:~/lineage_ganeti_5GB_compressed.qcow2 ~/
Créer la VM sur l'hyperviseur du laptop, (testé avec VirtualBox) à partir du disque virtuel précédent
Pour cela, reconvertissez la VM au format .vdi, puis utilisez le fichier comme support de stockage de la machine virtuelle
Configurer LineageOS, surtout le réseau VirtWifi en DHCP
Webcam : Clic droit sur les périphériques et activez la webcam
-
-
flasher le QR code fourni par le bot mautrix_whatsapp
Vérifier que tout fonctionne au niveau du bridge.
Eteindre la VM sur l'hyperviseur du laptop
Compresser le disque virtuel au format qcow2 si besoin
vérifier que suffisamment de place est dispo sur l'host où vous voulez upload le disque
Replacer le disque de la VM configurée sur l'host primaire de la VM lineageOS sur l'infra. Depuis le laptop taper : scp ~/lineage_ganeti_5GB_compressed.qcow2 user@serveur.fr:~/lineage_ganeti_5GB_compressed_bridge_loggedin.qcow2
Si vous avez copié sur le mauvais host, faites gnt-cluster copyfile lineage_ganeti_10GB_compressed_20210109_loggedin.qcow2
Décompresser le disque virtuel vers le LV originellement créé par ganeti: qemu-img convert -p -O raw lineage_ganeti_5GB_compressed_bridge_loggedin.qcow2 /dev/vg0/801c39ab-c6fc-47d3-9e55-3225f8f8f754.disk0_data
Repasser sur master le cas échéant puis démarrer la VM
Rentrer le mot de passe lineage au démarrage de la VM.