====== 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 [[serveur_hebergement:apache2: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 "
# 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 "
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)
ServerName matrix.nomdedomaine.fr
Redirect / https://matrix.nomdedomaine.fr/
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
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
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