====== 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