Table des matières

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