===== Créer et maintenir son bridge Whatsapp sur une instance Yunohost ===== Pour gérer votre bridge Whatsapp sur votre instance Yunohost, voici ce dont vous aurez besoin : ==Applications Yunohost== - Application Synapse : https://github.com/YunoHost-Apps/synapse_ynh (Maintenu par la communauté) - Client Element : https://github.com/YunoHost-Apps/element_ynh (Maintenu par la communauté) - Bridge Signal : https://github.com/YunoHost-Apps/mautrix_signal_ynh (jusque 03/2022 maintenu par gaut d'ARN (gaut) - Bridge Whatsapp : https://github.com/YunoHost-Apps/mautrix_whatsapp_ynh (jusque 03/2022 maintenu par gaut d'ARN (gaut) ==Documentation== - Documentation de déploiement et maintenance : https://wiki.arn-fai.net/benevoles:procedures:sans-nuage - Documentation utilisateur (cette doc) : https://wiki.arn-fai.net/documentation:sans-nuage:whatsapp ===== Fonctionnement ===== * Le bridge est basé sur Whatsapp Web, une page web permettant de discuter via navigateur sur Whatsapp. * //Whatsapp n'autorise pas une connexion principale sur le client 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 active.// * Mais, pour éviter l'utilisation d'un téléphone, il est possible d'utiliser l'application sur une machine virtuelle Android. ===== Maintenance ===== * Se connecter avec le compte robot "@//Compte administrateur défini à l'installation//" sur le client Element. Vérifier l'état du bridge avec les commandes dans la discussion "WhatsApp Bridge Bot" * OU Aller sur n'importe quel salon bridgé WhatsApp avec un compte administrateur du bridge * Taper la commande "!wa ping" pour vérifier l'état de la connexion * Si la connexion semble problématique, Entrer la commande "!wa reconnect" Dans le cas d'un échec des commandes ! * Vérifier s'il existe une mise à jour pour le bridge, voir la section " //**Mettre à jour les paquets**// " * Vérifier s'il existe une mise à jour de l'application Whatsapp sur le téléphone ou la machine virtuelle, voir la section " **//Se connecter au système Android//** " * Si le bridge semble ne plus être connecté à l'application WhatsApp du téléphone ou de la machine virtuelle LineageOS, voir le point suivant * Si le bridge est à jour, connecté à une application Whatsapp, elle aussi à jour, nous allons chercher de l'aide : * Regarder les logs /var/log/mautrix_whatsapp/mautrix_whatsapp.log et /var/log/matrix-synapse/homeserver.log * Envoyer les erreurs sur le salon de support du bridge whatsapp : https://matrix.to/#/#whatsapp:maunium.net ===== 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 " - En comparant les deux versions, via le lien suivant : https://github.com/mautrix/whatsapp/compare/v0.2.4...v0.3.0 , en prenant soin de vérifier les deux versions concernées. - 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 ===== Se connecter au système Android ===== - Se connecter à l'hôte qui fait tourner la VM - si ''lsvps | grep lineageos'' n'indique pas ''running'', Démarrer la VM : ''gnt-instance start lineageos'' - Créer un pont ssh entre un port de la VM Android WhatsApp de l'infrastructure et votre PC - Installer Tight VNC (vncviewer) - Lancer VNC : ''vncviewer localhost:5001'' - Rentrer dans l'app Whatsapp et vérifier que tout roule - Entrer le mdp pour déverouiller lineageOS, attention à la casse. Parfois il faut cliquer avec le clavier virtuel Android plutot qu'utiliser le clavier pour que le mdp passe. - L'app WA est protégée contre l'ouverture, il faut cliquer sur une notification ou aller dans Aurora Store pour l'ouvrir - puis rentrer le schéma pour déverrouiller l'app - vérifier dans Aurora Store que l'app WhatsApp est à jour - vérifier dans l'app WA que le Bridge apparaît dans les appareils connectés. Sinon, la partie difficile commence. ===== Déployement 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 - créer une VM d'infra à l'aide du script create-vm-arn 5GoSSD 1Go RAM - Monter l'ISO de LineageOS (anciennement CyanogenMod) 14.1 https://www.android-x86.org/releases/releasenote-cm-x86-14-1-r4.html par exemple cm-x86_64-14.1-r4-k419.iso - 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 - 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 - Configurer LineageOS, surtout le réseau VirtWifi en DHCP - 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.