Installer Matrix
Matrix est un protocole de communication ouvert. Le côté intéressant est qu'il permet de créer des ponts pour discuter avec des personnes utilisant d'autres logiciels de communication comme Whatsapp, Signal, Telegram, etc.
On va donc voir comment installer un serveur Matrix sur un Raspberry Pi 4.
Comme d'habitude, toutes les commandes doivent être lancées en root ou avec sudo.
Prérequis
Il vous faudra un sous-domaine pour le serveur Matrix, matrix.memodugeek.info par exemple. Je ne vais pas traiter ici comment créer ce sous-domaine.
Il vous faut également PostgreSQL
sudo aptitude install postgresql
Installation de Synapse
Synapse est le serveur Matrix que l'on peut auto-héberger.
La version présente dans les dépôts étant assez vieille, on va installer le dépôt backports de Debian. Le dépôt backports contient des paquets provenant des branches Testing (pour la majorité) et Unstable. Cela permet d'avoir des versions plus récentes lorsque c'est nécessaire.
Ouvrez le fichier
/etc/apt/sources.list
Ajoutez la ligne
# dépôt backports deb http://ftp.debian.org/debian bookworm-backports main
Mettez à jour les paquets
sudo aptitude update
Installez Synapse
sudo aptitude install matrix-synapse -t bookworm-backports
L'option “-t bookworm-backports” sert à forcer l'installation depuis le dépôt backports
Il vous sera demandé le sous-domaine qui sera utilisé par le serveur Matrix (matrix.memodugeek.info par exemple).
Il vous sera également demandé si vous souhaitez envoyer des données statistiques anonymes. Répondez oui ou non.
Passons à la configuration.
Configuration
Configuration de Synapse
Ouvrez le fichier
/etc/matrix-synapse/homeserver.yaml
Remplacez le chemin du certificat et de la clé TLS par les vôtres si vous en avez (voir Let’s Encrypt, Certbot et SSL sur Debian si vous voulez en créer)
Décommentez la ligne
registration_shared_secret
Créez le secret avec la commande
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1
Remplacez la ligne
# public_baseurl: https://example.com:8448/
par
public_baseurl: https://matrix.nomdedomaine.fr/
Si vous voulez que des gens puissent s'inscrire sur votre serveur, remplacez la ligne
enable_registration: false
par
enable_registration: true
Pour activer la confirmation d'inscription par mail, remplacez les lignes
# registrations_require_3pid: # - email # - msisdn
par
registrations_require_3pid: - email
Si vous activez la confirmation par mail, vous aurez besoin de configurer l'envoi de mail. Remplacez les lignes
#email: # enable_notifs: false # smtp_host: "localhost" # smtp_port: 25 # smtp_user: "exampleusername" # smtp_pass: "examplepassword" # require_transport_security: False # notif_from: "Your Friendly %(app)s Home Server <noreply@example.com>" # app_name: Matrix # template_dir: res/templates # notif_template_html: notif_mail.html # notif_template_text: notif_mail.txt # notif_for_new_users: True # riot_base_url: "http://localhost/riot"
par
email: smtp_host: "adresse_smtp" smtp_port: 587 smtp_user: "identifiant_smtp" smtp_pass: "motdepasse_smtp" require_transport_security: true enable_tls: true notif_from: "Your Friendly %(app)s Home Server <noreply@domaine.fr>" app_name: Matrix notif_for_new_users: True client_base_url: "https://matrix.nomdedomaine.fr"
Pour modifier le serveur proposé par défaut, remplacez la ligne
#default_identity_server: https://matrix.org
par
default_identity_server: https://matrix.nomdedomaine.fr
Supprimez ou commentez les lignes suivantes qui ne servent plus
trusted_third_party_id_servers: - matrix.org - vector.im - riot.im
Modifier la partie “Database configuration” afin d'avoir comme suit (au lieu de Sqlite on va utiliser PostgreSQL)
# Database configuration database: name: psycopg2 args: user: synapse password: motdepasse database: synapse host: localhost cp_min: 5 cp_max: 10
Retenez le mot de passe.
Créez le fichier suivant :
/etc/matrix-synapse/conf.d/server_name.yaml
Ajoutez la ligne suivante (remplacez le sous-domaine par le vôtre) :
server_name: "matrix.domaine.fr"
On va créer le fichier de configuration Apache.
Configuration d’Apache
Créez le fichier
/etc/apache2/sites-available/matrix.nomdedomaine.fr.conf
Remplacez nomdedomaine.fr par votre nom de domaine
Collez les lignes suivantes dedans (en remplaçant de nouveau nomdedomaine.fr par votre nom de domaine)
<VirtualHost *:80> ServerName matrix.nomdedomaine.fr Redirect / https://matrix.nomdedomaine.fr/ </VirtualHost> <VirtualHost *:443> ServerName matrix.nomdedomaine.fr LogLevel warn CustomLog ${APACHE_LOG_DIR}/matrix.access.log combined ErrorLog ${APACHE_LOG_DIR}/matrix.error.log SSLEngine on SSLCertificateFile /etc/letsencrypt/live/nomdedomaine.fr/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/nomdedomaine.fr/privkey.pem RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME} AllowEncodedSlashes NoDecode ProxyPreserveHost on ProxyPass /_matrix http://127.0.0.1:8008/_matrix nocanon ProxyPassReverse /_matrix http://127.0.0.1:8008/_matrix ProxyPass /_synapse/client http://127.0.0.1:8008/_synapse/client nocanon ProxyPassReverse /_synapse/client http://127.0.0.1:8008/_synapse/client </VirtualHost> <VirtualHost *:8448> SSLEngine on ServerName matrix.nomdedomaine.fr SSLProxyEngine On SSLCertificateFile /etc/letsencrypt/live/nomdedomaine.fr/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/nomdedomaine.fr/privkey.pem RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME} AllowEncodedSlashes NoDecode ProxyPass /_matrix http://127.0.0.1:8008/_matrix nocanon ProxyPassReverse /_matrix http://127.0.0.1:8008/_matrix </VirtualHost>
Activez le fichier de conf Apache
a2ensite matrix.nomdedomaine.fr.conf
Redémarrez Apache
systemctl restart apache2
Il ne nous reste plus qu'à créer la base de données.
Création de la base de données
Connectez-vous avec l'utilisateur postgres
sudo -i -u postgres
Lancez PostgreSQL
psql
Créez l'utilisateur synapse_user
CREATE ROLE synapse LOGIN PASSWORD 'mot_de_passe';
Mettez le même mot de passe que celui que vous avez renseigné dans le fichier homeserver.yaml
Créez la base de données
CREATE DATABASE synapse ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' template=template0 OWNER synapse;
Quittez PostgreSQL
exit
Déconnectez-vous de l'utilisateur postgres
exit
Création du compte admin
Lancez Synapse
sudo systemctl enable matrix-synapse
sudo systemctl start matrix-synapse
Passons à la création de votre compte
Lancez la commande
/usr/libexec/matrix-synapse/register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008
Répondez comme suit
New user localpart [pi]: nom_utilisateur_souhaité Password: motdepasse Confirm password: motdepasse Make admin [no]: yes Sending registration request... Success!
Vous pouvez maintenant vous connecter à votre serveur avec ce compte via le client Element que vous pouvez installer soit sur votre smartphone soit sur votre PC
Activer la sauvegarde sécurisée
Vos clés de chiffrement permettant d'accéder à vos messages chiffrés peuvent être sauvegardées sur le serveur Matrix. Dans votre client, allez dans les paramètres puis dans Sécurité et vie privée. Activez la sauvegarde sécurisée et choisissez une phrase de sécurité (choisissez-en une suffisamment forte). Sauvegardez la clé de sécurité qui va s'afficher. Quand vous vous connecterez, cette phrase de sécurité vous sera demandée pour pouvoir afficher les messages chiffrés