serveur_hebergement:matrix:installer_un_pont_irc_-_matrix

Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
serveur_hebergement:matrix:installer_un_pont_irc_-_matrix [2022/09/07 17:29] – créée fateserveur_hebergement:matrix:installer_un_pont_irc_-_matrix [2023/08/08 14:00] (Version actuelle) – modification externe 127.0.0.1
Ligne 3: Ligne 3:
 Matrix est capable d'échanger avec d'autres protocoles grâce à des ponts.  Matrix est capable d'échanger avec d'autres protocoles grâce à des ponts. 
  
-Les étapes pour installer un pont sont plus ou moins les mêmes quelque soit le pont. On va voir comment installer un pont entre Signal et IRC, [[https://github.com/hifi/heisenbridge|heisenbridge]], qui vous permettra de recevoir/envoyer des messages de ou vers vos contacts Signal. +Les étapes pour installer un pont sont plus ou moins les mêmes quel que soit le pont. On va voir comment installer un pont entre Signal et IRC, [[https://github.com/hifi/heisenbridge|heisenbridge]], qui vous permettra de vous connecter à un serveur IRC ou à un bouncer IRC comme ZNC.
 ===== Prérequis ===== ===== Prérequis =====
  
-Il vous faut un serveur Matrix, Synapse par exemple, et PostgreSQL. Je pars du principe que vous avez suivi le tuto sur comment [[serveur_hebergement:matrix:installer_matrix|Installer Matrix]] et que vous avez déjà ces deux logiciels d'installés. +Il vous faut un serveur Matrix, Synapse par exemple. Je pars du principe que vous avez suivi le tuto sur comment [[serveur_hebergement:matrix:installer_matrix|Installer Matrix]] et que vous avez déjà ce logiciel d'installé.
-Il vous faut également ZNC, un bouncer IRC, connecté aux serveur IRC que vous souhaitez. ZNC ne sera pas traité ici.+
  
 ==== Python3 ==== ==== Python3 ====
Ligne 35: Ligne 33:
 ==== Configuration ==== ==== Configuration ====
  
-Générez le fichier heisenbridge.yaml +Générez le fichier registration.yaml, toujours dans le dossier heisenbridge : 
-<code bash>python -m heisenbridge -c /chemin/vers/synapse/config/heisenbridge.yaml --generate</code>+<code bash>python -m heisenbridge -c /chemin/vers/dossier/heisenbridge/registration.yaml --generate</code>
  
-Ouvrez le fichier config.yaml. Si votre serveur Matrix tourne sur la même machine que le pont, remplacez la ligne  +Ensuite ouvrez le fichier homeserver.yaml de votre serveur et indiquez l'emplacement du fichier registration.yaml après la ligne app_service_config_files:"
-<code>address: https://example.com</code> +
-par  +
-<code>address: http://localhost:8008</code> +
-Si le serveur Matrix tourne sur une autre machine, indiquez l'url du serveur Matrix. +
- +
-Dans la ligne +
-<code>domain: example.com</code> +
-remplacez example.com par le domaine servant à accéder à votre serveur Matrix +
- +
-Remplacer la ligne +
-<code>database: postgres://username:password@hostname/db</code> +
-par +
-<code>database: postgres://signalbridge:motdepasse@localhost:5432/signalbridge</code> +
-Mettez le mot de passe de votre choix, on créera la base de données plus tard. +
- +
-Dans la partie "permissions", adaptez les lignes à votre cas. Dans mon cas, je n'ai qu'un seul utilisateur qui est admin. +
-J'ai donc que la ligne +
-<code>'@fate:matrix.nomdedomaine.fr': admin</code> +
-Remplacez "fate" par votre nom d'utilisateur ainsi que "nomdedomaine.fr" par l'url d'accès à votre serveur Matrix. +
- +
-Dans la partie "encryption", passez les options "allow" et "default" à true pour activer le chiffrement entre le pont et le serveur Matrix +
- +
-Pour que le pont puisse accéder à Signald, il a besoin d'avoir accès au fichier socket (remplacez "pi" par l'utilisateur qui exécutera le pont) +
-<code bash>sudo chown signald:pi /var/run/signald/</code> +
- +
-L'utilisateur qui exécute le pont a besoin d'être membre du groupe signald pour accéder au répertoire (sinon vous aurez des erreurs lors d'envoi de message avec des photos) +
-<code>/var/lib/signald/</code> +
-L'utilisateur qui exécute le pont chez moi est "pi". Pour le rajouter au groupe signald, lancez la commande +
-<code bash>sudo addgroup pi signald</code> +
- +
-Passons à la base de données +
- +
-==== Création de la base de données ==== +
- +
-Connectez-vous avec l'utilisateur postgres +
-<code bash>sudo -i -u postgres</code> +
- +
-Lancez PostgreSQL +
-<code bash>psql</code> +
- +
-Créez l'utilisateur +
-<code sql>CREATE USER signalbridge WITH PASSWORD 'motdepasse';</code> +
-Mettez le même mot de passe que celui que vous avez renseigné dans le fichier config.yaml +
- +
-Créez la base de données +
-<code sql>CREATE DATABASE signalbridge OWNER signalbridge;</code> +
- +
-Quittez PostgreSQL +
-<code bash>exit</code> +
- +
-Déconnectez-vous de l'utilisateur postgres +
-<code bash>exit</code> +
- +
-==== Registration.yaml ==== +
- +
-Les ponts ont besoin d'un fichier registration.yaml pour avoir certain droits sur votre serveur. Pour le créer, lancez la commande suivante +
-<code bash>python -m mautrix_signal -g</code> +
- +
-Ensuite ouvrez le fichier homeserver.yaml de votre serveur et indiquez l'emplacement du fichier registration après la ligne "app_service_config_files:"+
 <code> <code>
 # A list of application service config file to use # A list of application service config file to use
 app_service_config_files: app_service_config_files:
-- "/home/pi/mautrix-signal/registration.yaml"+- "/chemin/vers/dossier/heisenbridge/registration.yaml"
 </code> </code>
  
-Relancez votre serveur Matrix+Relancez votre serveur Matrix :
 <code bash>sudo systemctl restart matrix-synapse.service</code> <code bash>sudo systemctl restart matrix-synapse.service</code>
  
 ===== Lancement du pont via Systemd ===== ===== Lancement du pont via Systemd =====
  
-Créez le fichier  +On va créer un script pour démarrer heisenbridge via systemd. Créez le fichier /etc/systemd/system/matrix-appservice-irc.service et ajoutez-y les lignes suivantes (modifiez le chemin et l'utilisateur) :
-<code>/etc/systemd/system/mautrix-signal.service</code> +
- +
-Copiez les lignes suivantes dedans+
 <code> <code>
- 
 [Unit] [Unit]
-Description=mautrix-signal bridge +Description=matrix-irc bridge 
-After=matrix-synapse.service postgresql.service+After=matrix-synapse.service
  
 [Service] [Service]
-# N.B. If you didn't create a user with the correct home directory, set this +WorkingDirectory=/chemin/vers/dossier/heisenbridge/ 
-#      to the directory where config.yaml is (e.g. /opt/mautrix-signal). +ExecStartPre=/bin/sleep 60 
-WorkingDirectory=/home/pi/mautrix-signal+ExecStart=/chemin/vers/dossier/heisenbridge/venv/bin/python -m heisenbridge -c registration.yaml
-ExecStart=/home/pi/mautrix-signal/bin/python -m mautrix_signal+
 User=pi User=pi
  
Ligne 129: Ligne 63:
 WantedBy=multi-user.target WantedBy=multi-user.target
 </code> </code>
-Modifier les chemins et le nom de l'utilisateur si besoin. 
  
-Activez le service au démarrage +Rechargez la configuration de systemd avec la commande : 
-<code bash>sudo systemctl enable mautrix-signal.service</code>+<code bash>sudo systemctl daemon-reload</code>
  
-Démarrez le service +Activez le démarrage automatique avec la commande : 
-<code bash>sudo systemctl start mautrix-signal.service</code>+<code bash>sudo systemctl enable matrix-appservice-irc.service</code>
  
-Dans votre client Matrix (Element), ouvrez une discussion privée avec le bot @signalbot:votre.serveur+Démarrez heisenbridge avec la commande : 
 +<code bash>sudo systemctl start matrix-appservice-irc.service</code>
  
-Dans la discussion, tapez  
-<code>link signal-bridge</code> 
-Ca va vous afficher un QR code que vous devrez scanner avec votre application Signal pour lier les deux appareils. 
  
-===== Activer le double puppeting =====+===== Utilisation du pont =====
  
-Le "double puppeting" permet que lorsque vous envoyez un message depuis l'application Signal, le message sera également présent dans Matrix et les messages marqués comme lu dans Matrix seront également marqué comme lus sur les autres appareils.+Dans votre client Matrix (Element)ouvrez une discussion privée avec le bot @heisenbridge:votre.serveur
  
-Installez Shared Secret Authenticator +Dans la discussion, tapez  
-<code bash>sudo -u matrix-synapse pip install git+https://github.com/devture/matrix-synapse-shared-secret-auth</code> +<code>help</code> 
- +Ca va vous afficher toutes les commandes et leur fonctionnement afin que vous puissiez vous connecter à un serveur IRC
-Générez un secret +Pour ajouter une connexion au serveur IRCnet par exempleil faudra taper les commandes suivantes 
-<code bash>pwgen -s 128 1</code> +
- +
-Ouvrez le fichier homeserver.yaml de Synapse et ajoutez les lignes suivantes +
-<code> +
-modules: +
-    - module: shared_secret_authenticator.SharedSecretAuthProvider +
-      config: +
-          shared_secret: "collez ici le secret généré précédemment" +
-          # By defaultonly login requests of type `com.devture.shared_secret_auth` are supported. +
-          # Below, we explicitly enable support for the old `m.login.password` login type, +
-          # which was used in v1 of matrix-synapse-shared-secret-auth and still widely supported by external software. +
-          # If you don't need such legacy support, consider setting this to `false` or omitting it entirely. +
-          m_login_password_support_enabled: true +
-</code> +
- +
-Ouvrez le fichier config.yaml et remplacez les lignes +
-<code> +
-login_shared_secret_map: +
-        example.com: foo +
-</code> +
-par+
 <code> <code>
-login_shared_secret_map: +ADDNETWORK IRCnet 
-        adresse_du_serveur_matrix: secret_généré_précédemment+ADDSERVER IRCnet ssl.ircnet.io 6697 --tls 
 +OPEN IRCnet
 </code> </code>
  
-Redémarrez Synapse et le pont Signal +Vous allez être invité dans un nouveau salon où vous pourrez vous y connecter avec la commande :  
-<code>sudo systemctl restart matrix-synapse.service</code> +<code>CONNECT</code> 
-<code>sudo systemctl restart mautrix-signal.service</code>+Et vous pourrez joindre un chan avec la commande : 
 +<code>JOIN #nom_chan</code>
  
 ===== Mise à jour ===== ===== Mise à jour =====
  
 On va créer un script pour mettre à jour le pont. On va créer un script pour mettre à jour le pont.
-Créez le fichier update_signal_bridge.sh dans le même répertoire que le dossier mautrix-signal et ajoutez-y les lignes suivantes (remplacez votreadressemail par une adresse mail valide): +Créez le fichier update_irc_bridge.sh dans le même répertoire que le dossier heisenbridge et ajoutez-y les lignes suivantes (remplacez votreadressemail par une adresse mail valide et modifiez le chemin vers le dossier heisenbridge): 
 <code bash> <code bash>
 #!/bin/bash #!/bin/bash
-errorFile="../mautrix-signalErrorUpdate+errorFile="../heisenbridgeErrorUpdate
-versionFile="../mautrix-signalVersion"+versionFile="../heisenbridgeVersion"
 adminMail="votreadressemail" adminMail="votreadressemail"
-cd mautrix-signal +cd /chemin/vers/heisenbridge 
-source ./bin/activate+source venv/bin/activate
 # Si le fichier de version existe, on récupére la version # Si le fichier de version existe, on récupére la version
 if [ -f $versionFile ]; then if [ -f $versionFile ]; then
Ligne 200: Ligne 112:
 fi fi
 # On récupère le numéro de la version présent sur le dépôt # On récupère le numéro de la version présent sur le dépôt
-repositoryVersion=$(pip show mautrix-signal |grep Version |awk '{print $2}')+repositoryVersion=$(yolk -V heisenbridge | awk '{print $2}')
 # Si la version présente sur le dépôt est plus récente, on lance la mise à jour # Si la version présente sur le dépôt est plus récente, on lance la mise à jour
 if [ $currentVersion != $repositoryVersion ]; then if [ $currentVersion != $repositoryVersion ]; then
Ligne 208: Ligne 120:
         fi         fi
         # On lance la mise à jour du paquet         # On lance la mise à jour du paquet
-        pip install --upgrade mautrix-signal[all] > /dev/null 2> $errorFile +        pip install --upgrade heisenbridge > /dev/null 2> $errorFile 
-        # Si le fichier d'erreur n'est pas vide, on envoi un mail d'erreur+        # Si le fichier d'erreur n'est pas vide, on envoie un mail d'erreur
         if [ -s $errorFile ]; then         if [ -s $errorFile ]; then
-                echo "Une erreur s'est produise lors de la mise à jour du pont Signal-Matrix (mautrix-signal). Le message d'erreur se trouve en pièce-jointe." | mutt -x -s "Erreur lors de la mise à jour du pont Signal-Matrix" -a $errorFile -- $adminMail +                echo "Une erreur s'est produite lors de la mise à jour du pont IRC-Matrix (heisenbridge). Le message d'erreur se trouve en pièce-jointe." | mutt -x -s "Erreur lors de la mise à jour du pont IRC-Matrix" -a $errorFile -- $adminMail
-        # Si le fichier d'erreur est vide, on envoi un mail de mise à jour et on met à jour le fichier de version+
         else         else
-                echo "Le pont mautrix-matrix (mautrix-signal) a été mis à jour de la version $currentVersion vers la version $repositoryVersion" | mutt -x -s "Mise à jour du pont mautrix-Matrix" -- $adminMail+        # Si le fichier d'erreur est vide, on envoie un mail de mise à jour et on met à jour le fichier de version 
 +                echo "Le pont IRC-matrix (heisenbridge) a été mis à jour de la version $currentVersion vers la version $repositoryVersion" | mutt -x -s "Mise à jour du pont IRC-Matrix" -- $adminMail
                 echo "$repositoryVersion" > $versionFile                 echo "$repositoryVersion" > $versionFile
         fi         fi
Ligne 220: Ligne 132:
 </code> </code>
  
-Le script est commenté afin qu'il soit facile de comprendre chaque bloc. Pour que ce script fonctionne pleinement il faut que votre serveur soit capable d'envoyer des e-mails, sinon les mises à jours se lanceront mais vous ne serez pas averti lors des mises à jour ou des erreurs de mise à jour.+Le script est commenté afin qu'il soit facile de comprendre chaque bloc. Pour que ce script fonctionne pleinement il faut que votre serveur soit capable d'envoyer des e-mails, sinon les mises à jours se lanceront mais vous ne serez pas averti lors des mises à jour ou des erreurs de mise à jour. Il vous faut également York pour récupérer les versions présentes sur les dépôts. Vous pouvez l'installer avec la commande suivante :  
 +<code bash>pip install yolk3k</code>
  
 On va créer une tâche cron afin que ce script se lance tous les jours. On va créer une tâche cron afin que ce script se lance tous les jours.
Ligne 226: Ligne 139:
 <code bash>crontab -e</code> <code bash>crontab -e</code>
 Ajoutez la ligne suivante (remplacez l'emplacement du répertoire) :  Ajoutez la ligne suivante (remplacez l'emplacement du répertoire) : 
-<code bash>0 * * * /home/pi/matrix_bridges/update_signal_bridge.sh+<code bash>10 0 * * * /home/pi/matrix_bridges/update_irc_bridge.sh
  
 Appuyez sur CTRL + O puis CTRL + X pour appliquer les modifications. Appuyez sur CTRL + O puis CTRL + X pour appliquer les modifications.
  
-Tous les jours à minuit, le pont se mettra à jour si une nouvelle version est disponible.+Tous les jours à minuit dix, le pont se mettra à jour si une nouvelle version est disponible.
  
  
  • serveur_hebergement/matrix/installer_un_pont_irc_-_matrix.1662571781.txt.gz
  • Dernière modification : 2023/08/08 14:01
  • (modification externe)