OS : Debian11 (!!! KO sur Debian 10 Buster)

Objectif : Installer une passerelle (bridge) Matrix <-> Signal Messenger.

1) Ajout des depots et dependances:

apt update

apt install gnupg

wget -O - https://updates.signald.org/apt-signing-key.asc | apt-key add -

echo deb https://updates.signald.org master main > /etc/apt/sources.list.d/signal.list

apt update

2) Installation SIGNALD

=> https://gitlab.com/signald/signald/-/blob/main/docs/install/debian.md

apt install signald

3) Installation MAUTRIX-SIGNAL (!!! KO sur Debian 10 Buster)

en tant que root:

apt install python3-olm python3-pip libolm-dev virtualenv git postgresql

pip3 install --upgrade 'git+https://github.com/tulir/mautrix-signal.git#egg=mautrix-signal[all]'

4) Configuration de MAUTRIX-SIGNAL

=> https://github.com/tulir/mautrix-signal/wiki/Bridge-setup

Création de la base de donnée pour le bridge:

psql -c "CREATE USER "useraccount" WITH PASSWORD 'userpassword';"

psql -c "CREATE DATABASE nomdelabase ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' template=template0 OWNER "useraccount";"

Configuration du bridge:

adduser --disabled-login mautrix

su - mautrix

cp /usr/local/lib/$(ls /usr/local/lib/ | sort | tail -n 1)/dist-packages/mautrix_signal/example-config.yaml /home/mautrix/config.yaml

touch /home/mautrix/mautrix-signal.log

Modification des droits:

chown signald:mautrix /home/mautrix/mautrix-signal.log

chown signald:mautrix /home/mautrix/config.yaml

Mettre à jour le fichier en fonction de votre configuration

5) Configuration du serveur synapse pour activation du service mautrix

Génération du fichier registration.yaml:

python3 -m mautrix_signal -g

Mettre le chemin du fichier registration.yaml dans le fichier homeserver.yaml (ici /etc/matrix-synapse/registration.yaml):

app_service_config_files:
    - /etc/matrix-synapse/registration.yaml

6) Lancer le bridge

su - mautrix

python3 -m mautrix_signal -c /home/mautrix/config.yaml

7) Création du service systemd

vi /etc/systemd/system/mautrix-signal.service

ajouter:

[Unit]
Description=mautrix-signal Daemon
After=network-online.target

[Service]
Type=simple
User=signald
Group=mautrix
WorkingDirectory=/home/mautrix/
ExecStartPre=/bin/sleep 10
ExecStart=/usr/bin/python3 -m mautrix_signal -c /home/mautrix/config.yaml
Restart=on-failure
RestartSec=10
SyslogIdentifier=mautrix
StandardOutput=syslog
StandardError=syslog

[Install]
WantedBy=multi-user.target

Activation du service:

systemctl enable mautrix-signal

systemctl start mautrix-signal

8) Lier son compte MATRIX avec son ID Signal

Se connecter avec votre client [MATRIX] (ex: Element)

Commencer une nouvelle conversation avec le bot (dans mon cas : @signalbot:matrix.underworld.fr)

Lui dire "link". Il doit vous retourner un QRCode

Se connecter avec votre client SIGNAL sur smartphone, "Parametres"/"Appareils reliers"/"Relier un nouvel appareil" et scanner le QRCode

Si tout va bien, vous devriez voir vos conversations apparaitre (moyennant quelques secondes de synchro) dans votre client [MATRIX].

9) Ce qui fonctionne

Dans SIGNAL, on peut creer des GROUPE, ou discuter en "DIRECT" avec une personne (1to1).

Ce qui fonctionne pour moi:

  • Dans un groupe:
    • matrix -> signal = OK
    • signal -> matrix = OK
  • Dans un 1to1:
    • matrix -> signal = OK
    • signal -> matrix = OK SAUF pour mes propres messages (https://github.com/tulir/mautrix-signal/wiki/Authentication#double-puppeting)

Pour resoudre cela:

Se connecter avec votre client [MATRIX] (ex: Element)

Commencer une nouvelle conversation avec le bot (dans mon cas : @signalbot:matrix.underworld.fr)

lui dire "login-matrix

NOTA: ce jeton/token étant spécifique à votre session Element, il faut renouveller l'opération a chaque fois que vous changez de session (déconnection). Ce qui est donc "un peu ennuyeux à date".

And voila!

10) Merci

Il aura fallu 12h pour réaliser/éprouver/corriger ce tuto.

Un grand MERCI à  -> @thomas:lgy.fr [Matrix]