Synapse
Updated 4 Juin 2020
Introduction
Matrix est un protocole libre et gratuit pour une messagerie distribuée en temps réel. Il peut être utilisé pour la messagerie instantanée, les appels audio et vidéo via WebRTC, l'Internet des objets et tout ce qui nécessite une API HTTP standard pour publier et s'abonner à des mises à jour tout en conservant l'historique des communications. Matrix est un réseau fédéré, ou distribué complet, vous permettant de communiquer de manière transparente, de créer des salles partagées pour les utilisateurs sur différents serveurs, ainsi que de passer des appels audio et vidéo.
Il existe actuellement plusieurs serveurs supportés par ce protocole, dont le plus populaire est Synapse.
Préparer un conteneur LXC
Nous conseillons d'installer Synapse dans un conteneur dédié, en le configurant comme décrit dans le manuel.
Installer et configurer PostgreSQL
Installez et configurez PostgreSQL pour l'authentification par les pairs, conformément au manuel. Créez un utilisateur et une base de données tous deux appelés synapse, comme suit :
psql -U postgres
Password for user postgres: psql (11.2) Type "help" for help. postgres=# create role synapse with login; CREATE ROLE postgres=# \password synapse Enter new password: Enter it again: postgres=# CREATE DATABASE synapse ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' template=template0 OWNER synapse; CREATE DATABASE
Installation et configuration de Synapse
Créez l'utilisateur synapse :
useradd -d /var/calculate/synapse synapse
Créez et activez un environnement virtuel pour Python :
su - synapse
python3 -m venv env
echo 'source ~/env/bin/activate' >> ~/.bashrc
source env/bin/activate
Installer Synapse et le module PostgreSQL dans l'environnement virtuel :
pip install --upgrade pip
pip install --upgrade setuptools
pip install matrix-synapse[all]
pip install psycopg2-binary
Créez une configuration Synapse :
python -m synapse.app.homeserver --server-name matrix.example.org --config-path homeserver.yaml --generate-config --report-stats=yes
Quitter la séance utilisateur :
exit
Configurez Synapse pour pouvoir vous connecter à la base de données :
... # Database configuration database: # The database engine name name: "psycopg2" # Arguments to pass to the engine args: # Path to the database database: synapse host: localhost user: synapse password: "secret" ...
Ajoutez la possibilité de rechercher parmi tous les utilisateurs du serveur :
... # User Directory configuration # # 'search_all_users' defines whether to search all users visible to your HS # when searching the user directory, rather than limiting to users visible # in public rooms. Defaults to false. If you set it True, you'll have to run # UPDATE user_directory_stream_pos SET stream_id = NULL; # on your database to tell it to rebuild the user_directory search indexes. # user_directory: search_all_users: true ...
Si Nginx sera configuré sur un serveur distinct par la suite, vous devez autoriser l'interaction avec Synapse en utilisant une autre interface que celle de bouclage :
...
listeners:
- port: 8008
tls: false
bind_addresses: ['0.0.0.0']
type: http
x_forwarded: true
...
Obtenir le certificat Let's Encrypt
Obtenez le certificat de domaine matrix.example.org pour Nginx, comme expliqué dans le manuel.
Installer et configurer Nginx
Installez et configurez le serveur Web Nginx comme proxy inverse, en vous référant au manuel. Ajoutez les paramètres suivants pour matrix.example.org:
server { listen 443 ssl; server_name matrix.example.org; include ssl.conf; ssl_certificate /etc/nginx/ssl/matrix.example.org/fullchain.pem; ssl_certificate_key /etc/nginx/ssl/matrix.example.org/privkey.pem; client_max_body_size 1000M; location / { proxy_pass http://localhost:8008; proxy_set_header X-Forwarded-For $remote_addr; } }
Pour joindre la fédération de votre serveur Matrix, ajoutez les paramètres suivants :
server { listen 8448 ssl; server_name matrix.example.org; include ssl.conf; ssl_certificate /etc/nginx/ssl/matrix.example.org/fullchain.pem; ssl_certificate_key /etc/nginx/ssl/matrix.example.org/privkey.pem; location / { proxy_pass http://localhost:8008; proxy_set_header X-Forwarded-For $remote_addr; } }
Pour rendre votre serveur visible aux clients et aux autres serveurs via le protocole distribué, ajoutez une entrée SRV au DNS de ~matrix.example.org~ :
_matrix._tcp.matrix.example.org. 3600 IN SRV 10 0 8448 matrix.example.org.
Lancer Synapse
Créer un script OpenRC pour gérer le démon Synapse :
#!/sbin/openrc-run # Copyright 2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 name="Synapse daemon" description="Synapse daemon" command=/var/calculate/synapse/env/bin/synctl command_user=synapse command_args="${synapse_args}" directory=/var/calculate/synapse pidfile="/var/calculate/synapse/homeserver.pid" depend() { use net need postgresql nginx } start() { ebegin "Starting Synapse" start-stop-daemon -u "${command_user}" -S "${command}" \ -d "${directory}" -p "$pidfile" \ -- start &>/dev/null eend $? } stop() { ebegin "Stopping Synapse" start-stop-daemon -u "${command_user}" -K "${command}" \ -d "${directory}" -p "$pidfile" -- stop eend $? }
Définissez les droits d'accès :
chmod 0755 /etc/init.d/synapse
Démarrez le démon Synapse :
/etc/init.d/synapse start
Ajoutez Synapse au démarrage automatique :
rc-update add synapse
Félicitations, votre serveur Matrix est opérationnel ! Mais il vous reste encore des choses à faire. N'hésitez pas à découvrir d'autres fonctionnalités intéressantes de votre serveur Matrix personnel.
Ajouter des utilisateurs
Pour ajouter un nouvel utilisateur myuser, exécutez :
su - synapse
register_new_matrix_user -c homeserver.yaml http://localhost:8008
New user localpart [root]: myuser Password: Confirm password: Make admin [no]: no Sending registration request... Success!
Mise à jour
Actualisez les bibliothèques Python pour l'utilisateur :
su - synapse
pip install --upgrade matrix-synapse[all]
exit
Redémarrez le serveur Synapse
/etc/init.d/synapse restart
Passerelles
Pour configurer l'intégration de Matrix avec d'autres services de messagerie, reportez-vous à la rubrique « Passerelles Matrix ».