serveur_hebergement:matrix:installer_un_pont_signal_-_matrix

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édentes Révision précédente
Prochaine révision
Révision précédente
serveur_hebergement:matrix:installer_un_pont_signal_-_matrix [2022/09/21 06:36] – [Mise à jour] fateserveur_hebergement:matrix:installer_un_pont_signal_-_matrix [2026/01/16 17:51] (Version actuelle) fate
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 Matrix, [[https://github.com/mautrix/signal|matruix-signal]], 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 Matrix, [[https://github.com/mautrix/signal|matruix-signal]], qui vous permettra de recevoir/envoyer des messages de ou vers vos contacts Signal.
  
 ===== Prérequis ===== ===== Prérequis =====
Ligne 12: Ligne 12:
  
 Installez Python3 ainsi que pip et virtualenv Installez Python3 ainsi que pip et virtualenv
-<code bash>sudo aptitude install python3 virtualenv python3-pip</code>+<code bash>sudo aptitude install python3 virtualenv python3-pip git</code>
  
-==== Signald ====+Installez le module shared-secret-authenticator :
  
-Il va nous falloir également installer [[https://gitlab.com/signald/signald|Signald]], un logiciel qui permet d'interagir avec Signal (comme la version desktop de Signal). +<code bash>sudo /opt/venvs/matrix-synapse/bin/python -m pip install git+https://github.com/devture/matrix-synapse-shared-secret-auth</code>
-Créez le fichier +
-<code>/etc/apt/sources.list.d/signald.list</code> +
- +
-Ajoutez les ligne suivante puis enregistrez +
-<code>deb https://updates.signald.org unstable main</code> +
- +
-Ajoutez les clés du dépôt +
-<code bash>curl https://updates.signald.org/apt-signing-key.asc | sudo apt-key add -</code> +
- +
-Mettez à jours les paquets +
-<code bash>sudo aptitude update</code> +
- +
-Installez Signald +
-<code bash>sudo aptitude install signald</code>+
  
 ==== Libolm et bibliothèques dev ==== ==== Libolm et bibliothèques dev ====
  
-Lancez la commande suivante+Lancez la commande suivante pour installer Libolm, nécessaire au chiffrement :
 <code bash>sudo aptitude install libolm-dev python3-dev build-essential</code> <code bash>sudo aptitude install libolm-dev python3-dev build-essential</code>
  
Ligne 42: Ligne 28:
  
 Créez un répertoire et accédez-y Créez un répertoire et accédez-y
-<code bash>mkdir mautrix-signal && cd mautrix-signal</code> +<code bash>sudo -u matrix-synapse mkdir -p /var/lib/matrix-synapse/matrix_bridges/mautrix-signal && cd /var/lib/matrix-synapse/matrix_bridges/mautrix-signal</code>
- +
-Créez l'environnement Python +
-<code bash>virtualenv -p /usr/bin/python3 .</code>+
  
-Activez-le +Télécharger la dernière version correspondant à votre architecture (modifier le lien selon votre architecture):  
-<code bash>source ./bin/activate</code>+<code bash>sudo -u matrix-synapse wget https://github.com/mautrix/signal/releases/latest/download/mautrix-signal-amd64</code>
  
-Installez le pont +Le rendre executable:  
-<code bash>pip install --upgrade mautrix-signal[all]</code>+<code bash>sudo chmod +x mautrix-signal-amd64</code>
  
 L'installation est finie, on peut passer à la configuration L'installation est finie, on peut passer à la configuration
Ligne 57: Ligne 40:
 ==== Configuration ==== ==== Configuration ====
  
-Créez une copie du fichier example-config.yaml +Créez un fichier de configuration config.yaml 
-<code bash>cp example-config.yaml config.yaml</code>+<code bash>sudo -u matrix-synapse ./mautrix-signal-amd64 -e</code>
  
 Ouvrez le fichier config.yaml. Si votre serveur Matrix tourne sur la même machine que le pont, remplacez la ligne  Ouvrez le fichier config.yaml. Si votre serveur Matrix tourne sur la même machine que le pont, remplacez la ligne 
Ligne 89: Ligne 72:
 <code>/var/lib/signald/</code> <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 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>+<code bash>sudo adduser pi signald</code>
  
 Passons à la base de données Passons à la base de données
Ligne 102: Ligne 85:
  
 Créez l'utilisateur Créez l'utilisateur
-<code sql>CREATE USER signalbridge WITH PASSWORD 'motdepasse';</code>+<code sql>CREATE ROLE signalbridge LOGIN PASSWORD 'mot_de_passe';</code>
 Mettez le même mot de passe que celui que vous avez renseigné dans le fichier config.yaml Mettez le même mot de passe que celui que vous avez renseigné dans le fichier config.yaml
  
Ligne 128: Ligne 111:
 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>
 +
 +===== Activer le double puppeting =====
 +
 +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és comme lus sur les autres appareils.
 +
 +Créez un fichier doublepupetting.yaml dans le répertoire du pont et copiez les lignes suivantes :
 +<code>
 +# The ID doesn't really matter, put whatever you want.
 +id: doublepuppet
 +# The URL is intentionally left empty (null), as the homeserver shouldn't
 +# push events anywhere for this extra appservice. If you use a
 +# non-spec-compliant server, you may need to put some fake URL here.
 +url:
 +# Generate random strings for these three fields. Only the as_token really
 +# matters, hs_token is never used because there's no url, and the default
 +# user (sender_localpart) is never used either.
 +as_token: votre_token
 +hs_token: votre_token
 +sender_localpart: votre_token
 +# Bridges don't like ratelimiting. This should only apply when using the
 +# as_token, normal user tokens will still be ratelimited.
 +rate_limited: false
 +namespaces:
 +  users:
 +  # Replace your\.domain with your server name (escape dots for regex)
 +  - regex: '@.*:votre\.domaine\.fr'
 +    # This must be false so the appservice doesn't take over all users completely.
 +    exclusive: false
 +</code>
 +
 +Vous pouvez générer un token avec la commande suivante (les 3 tokens doivent être différents) : 
 +<code bash>pwgen -s 128 1</code>
 +
 +Ouvrez le fichier config.yaml du pont et ajoutez les lignes suivantes dans la section double_puppet:
 +<code>
 +# Shared secrets for automatic double puppeting.
 +    # See https://docs.mau.fi/bridges/general/double-puppeting.html for instructions.
 +    secrets:
 +        votre.domaine.fr: as_token:votre_token_as
 +</code>
 +
 +Enfin, ouvrez le fichier de config de Matrix et ajoutez dans la section app_service_config_files le chemin vers votre fichier doublepupetting.yaml
 +
 +Redémarrez Synapse et le pont Signal
 +<code>sudo systemctl restart matrix-synapse.service</code>
 +<code>sudo systemctl restart mautrix-signal.service</code>
  
 ===== Lancement du pont via Systemd ===== ===== Lancement du pont via Systemd =====
Ligne 144: Ligne 173:
 # N.B. If you didn't create a user with the correct home directory, set this # N.B. If you didn't create a user with the correct home directory, set this
 #      to the directory where config.yaml is (e.g. /opt/mautrix-signal). #      to the directory where config.yaml is (e.g. /opt/mautrix-signal).
-WorkingDirectory=/home/pi/mautrix-signal/ +WorkingDirectory=/var/lib/matrix-synapse/matrix_bridges/mautrix-signal/ 
-ExecStart=/home/pi/mautrix-signal/bin/python -m mautrix_signal +ExecStart=/var/lib/matrix-synapse/matrix_bridges/mautrix-signal/mautrix-signal-amd64 
-User=pi+User=matrix-synapse
  
 [Install] [Install]
Ligne 164: Ligne 193:
 <code>link signal-bridge</code> <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. Ca va vous afficher un QR code que vous devrez scanner avec votre application Signal pour lier les deux appareils.
- 
-===== Activer le double puppeting ===== 
- 
-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. 
- 
-Installez Shared Secret Authenticator 
-<code bash>sudo -u matrix-synapse pip install git+https://github.com/devture/matrix-synapse-shared-secret-auth</code> 
- 
-Générez un secret 
-<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 default, only 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> 
-login_shared_secret_map: 
-        adresse_du_serveur_matrix: secret_généré_précédemment 
-</code> 
- 
-Redémarrez Synapse et le pont Signal 
-<code>sudo systemctl restart matrix-synapse.service</code> 
-<code>sudo systemctl restart mautrix-signal.service</code> 
  
 ===== Mise à jour ===== ===== Mise à jour =====
Ligne 208: Ligne 199:
 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 et modifiez le chemin vers le dossier mautrix-signal):  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 et modifiez le chemin vers le dossier mautrix-signal): 
 <code bash> <code bash>
-#!/bin/bash +#! /bin/bash 
-errorFile="../mautrix-signalErrorUpdate" +# Go to the Signal bridge folder 
-versionFile="../mautrix-signalVersion" +cd /home/pi/matrix_bridges/mautrix-signal/ 
-adminMail="votreadressemail" +# Check if a new version is available 
-cd /chemin/vers/mautrix-signal +newVersion=`curl -Ls -o /dev/null -w %{url_effective} https://github.com/mautrix/signal/releases/latest/download/mautrix-signal-arm64 --max-redirs 1 |cut -d / -f 8` 
-source ./bin/activate +currentVersion=`cat currentVersion` 
-# Si le fichier de version existe, on récupére la version +if [ ! "$newVersion" "$currentVersion" ]; then 
-if [ -f $versionFile ]; then +        # remove old version 
-                currentVersion=$(cat $versionFile) +        rm  mautrix-signal-arm64 
-#S'il n'existe pas, on force la version à 0 +        # Download latest version 
-else +        wget https://github.com/mautrix/signal/releases/latest/download/mautrix-signal-arm64 
-        currentVersion="0" +        # Make the file executable 
-fi +        chmod +x mautrix-signal-arm64 
-# On récupère le numéro de la version présent sur le dépôt +        # Restart the service 
-repositoryVersion=$(yolk -V mautrix-signal | awk '{print $2}'+        systemctl restart mautrix-signal.service 
-# Si la version présente sur le dépôt est plus récente, on lance la mise à jour +        # Update the file currentVersion with the new version 
-if [ $currentVersion != $repositoryVersion ]; then +        echo $newVersion > "currentVersion
-        # On supprime l'ancien fichier d'erreur s'il existe +        # Send a notification email 
-        if [ -f $errorFile ]; then +        echo "Le pont Mautrix-Signal a été mis à jour" | mutt -x -s "Mise à jour pont Mautrix-Signal" -- votreadressemail 
-                rm -f $errorFile +
-        fi +
-        # On lance la mise à jour du paquet +
-        pip install --upgrade mautrix-signal[all] > /dev/null 2> $errorFile +
-        # Si le fichier d'erreur n'est pas vide, on envoi un mail d'erreur +
-        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 +
-        # Si le fichier d'erreur est vide, on envoi un mail de mise à jour et on met à jour le fichier de version +
-        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 +
-                echo "$repositoryVersion" > $versionFile +
-        fi+
 fi fi
 </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. 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 :  +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. 
-<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.
 Ouvrez le fichier cron avec la commande  Ouvrez le fichier cron avec la commande 
-<code bash>crontab -e</code>+<code bash>sudo 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 0 * * * /home/pi/matrix_bridges/update_signal_bridge.sh <code bash>0 0 * * * /home/pi/matrix_bridges/update_signal_bridge.sh
  • serveur_hebergement/matrix/installer_un_pont_signal_-_matrix.1663742172.txt.gz
  • Dernière modification : 2023/08/08 14:01
  • (modification externe)