Mise en place d’un serveur Matrix avec Synapse

Bon, pour le fun j’ai réinstallé une VM avec un serveur Matrix avec Synapse. Un rappel pour ceux du fond, Matrix est un protocole de tchat décentralisé (ça ressemble à IRC). Perso, je trouve que c’est une usine à gaz comparé a XMPP (Jabber) mais bon … La procédure est pompé sur la documentation officiel qui fonctionne (oui oui…).

Apres avoir installer une VM dans les règles de l’art (oué bon j’ai chié un template LXC Ubuntu 24.04 sur mon Proxmox, voila).

1. Installation de Synapse-Matrix

Installation de ce qu’il faut:

sudo apt install -y lsb-release wget apt-transport-https 

Récupération des clefs nécessaire a l’accès au dépôt de paquets Synapse:

sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg

Ajout du dépôt de paquets a APT:

echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/matrix-org.list 

On met a jour APT:

sudo apt update 

On installe Synapse:

sudo apt install matrix-synapse-py3

Bon, Synapse est installé et en principe il devrait déjà pouvoir fonctionner comme ça. MAIS il tourne avec une base sqlite et c’est casse-gueul. En gros ce système de BDD est tellement lent que c’est quasi inutilisable en l’etat, uniquement pour TEST. Du coup on va mettre en place une BDD plus performante.

2. PostgreSQL

Installation PostgreSQL:

sudo apt install postgresql

Ensuite on configure la bdd, on switch sur l’user « postgres »:

sudo -u postgres bash

Creation de l’user dans la BDD, « synapse_user » est a changer :

createuser --pwprompt synapse_user

Creation de la BDD avec des droits sur l’utilisateur créer précédemment :

createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse

« synapse » en fin de ligne est le nom de la BDD, a modifier selon vos besoins.

Ensuite, on va éditer le fichier de config « /etc/matrix-synapse/homeserver.yaml » et on va remplacer:

database:
 name: sqlite3
 args:
 database: /var/lib/matrix-synapse/homeserver.db

par :

database: 
 name: psycopg2 
 args: 
  user: <user> 
  password: <pass> 
  dbname: <db> 
  host: <host> 
  cp_min: 5 
  cp_max: 10

Les valeurs sont a modifier selon les besoins bien entendu !! (en host , mettez « localhost » si tout est sur la même machine bande de nOOb). On relance Synapse et ont prie le seigneur pour que ça passe ( « service matrix-synapse restart » , toujours pour ceux du fond.). Si c’est passé, il reste un dernier truc, le reverse proxy qui gère le HTTPS (sinon, pas de fédération avec les autres serveurs).

3. Le reverse proxy de ses morts !!!! (NGINX)

Moi je passe par une machine (VM) différente qui me sert de reverse proxy NGINX « globale » mais la config reste identique. Il faut juste adapté.

Si vous avez pas installer certbot, installez le (Certificat let’s encrypt) :

apt install -y certbot python3-certbot-nginx

Ensuite, pour créer le certificat dans un premier temps, je met un « template » de reverse proxy par défaut (dans « /etc/nginx/sites-enabled » ) genre :

server{
# Port listen
listen 80;
server_name matrix.ton_domaine.fuck;

# Open block for process forward request
location /{
# Server where traffic is transferred
proxy_pass http://IP_SYNAPSE:8008;
# Include file proxy_params with general param
include proxy_params;
}
}

« IP_SYNAPSE » peut être « localhost » si tout est sur la même machine/VM.

Et je crée le certificat avec :

sudo certbot --nginx

Et quand le certificat est crée, je retourne dans le fichier de config du reverse et je le met au propre, ça devrait ressemblé a ça grosso merdo :

server{
# For the federation port
listen 8448 ssl default_server;
listen [::]:8448 ssl default_server;

server_name matrix.ton_domaine.fuck;

location /{
# note: do not add a path (even a single /) after the port in `proxy_pass`,
# otherwise nginx will canonicalise the URI and cause signature verification
# errors.
proxy_pass http://IP_SYNAPSE:8008;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host:$server_port;

# Nginx by default only allows file uploads up to 1M in size
# Increase client_max_body_size to match max_upload_size defined in homeserver.yaml
client_max_body_size 50M;

# Synapse responses may be chunked, which is an HTTP/1.1 feature.
proxy_http_version 1.1;
}

listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/matrix.ton_domaine.fuck/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/matrix.ton_domaine.fuck/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

On redémarre NGINX ( « service nginx restart ») et on remet un cierge pour le seigneur pour que ça passe. Pour info, le port 8448 c’est pour la fédération avec les autres serveurs.

De base, la création d’utilisateur n’est pas activé, on doit donc passer par la commande pour crée un utilisateur :

register_new_matrix_user -c homeserver.yaml http://localhost:8008

Il pose des questions, tu y réponds et voila. Si tout va bien, ton serveur Matrix fonctionne (ou pas), il suffit de t’y connecter avec un client genre : app.element.io

Commentaires, pouce bleu et la cloche!

tontonayo

Bonjour, je fais de la merde sur internet et sinon je suis technicien informatique. Voila

Vous aimerez aussi...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.