Qu’est ce que Matrix ?
Le protocole Matrix est un standard ouvert pour la communication en temps réel, conçu pour permettre l’interopérabilité entre diverses plateformes de messagerie et de communication. Il a été développé par la société matrix.org et est particulièrement axé sur la décentralisation, ce qui signifie qu’il permet à des utilisateurs d’héberger leurs propres serveurs et de communiquer avec des utilisateurs d’autres serveurs.
Composants
Le protocole Matrix se compose de plusieurs composants clés qui collaborent pour permettre aux clients de communiquer entre eux.
Voici une liste de ses principaux éléments
- Serveurs (homeservers) :
- Connus aussi sous le nom de homeservers, les serveurs Matrix hébergent les données des utilisateurs, les historiques de conversation et facilitent la communication entre les utilisateurs. Chaque serveur peut interragir avec d’autres serveurs, permettant aux utilisateurs de différents serveurs de communiquer entre eux.
- Clients :
- Il existe divers clients, les plus connus sont Element (anciennement Riot), Cinny et FluffyChat. Elles peuvent s’installer sur PC, sur mobile ou peuvent être accédées directement dans un navigateur.
- Serveurs d’identité :
- Le rôle d’un serveur d’identité est de stocker les informations sur l’identité des utilisateurs. Il stocke les associations des identifiants d’un utilisateur présent sur différents serveurs Matrix.
- Serveurs d’application
- Les serveurs d’application, sont des modules qui interagissent avec les serveurs Matrix pour apporter des fonctionnalités supplémentaires.
Voici une architecture globale de l’environnement Matrix.

Installer un serveur Matrix Synapse
Ressources hardware
Configuration minimale :
- 1 vCPU
- 1 Gb de RAM
- 16Go de SSD
Sous vous prévoyez d’utiliser votre serveur de manière intense avec beaucoup d’utilisateurs, je vous conseille d’augmenter ces ressources.
Voici les specs du serveur Matrix Synapse qui tourne actuellement chez moi :
- 2 vCPU
- 2 Gb de RAM
- 32 Go de SSD
Installation
Mettez à jour votre dépot
$ sudo apt update && sudo apt upgrade -y
Installez lsb-release et apt-transport-https
$ sudo apt install -y lsb-release wget apt-transport-https
Ajoutez le dépôt Matrix
$ sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg
$ 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
$ sudo apt update
Installez Matrix Synapse
$ sudo apt install matrix-synapse-py3
Editez la configuration de Matrix
$ sudo nano /etc/matrix-synapse/homeserver.yaml
Changez bind-addresses par ‘0.0.0.0’
bind_addresses: ['0.0.0.0']
Relancez matrix synapse
$ sudo systemctl restart matrix-synapse
Vérifiez que votre instance tourne bien en accédant à http://<ip matrix>:8008 sur un navigateur

Création de comptes
Vous pouvez créer un compte utilisateur directement depuis le terminal.
register_new_matrix_user --user admin --password P@ssw0rd --config /etc/matrix-synapse/homeserver.yaml
Vous pouvez aussi autoriser la création de comptes en générant une paire de clés API sur la console recaptcha puis en ajoutant ces lignes dans homeserver.yaml.
recaptcha_public_key: <Clé publique>
recaptcha_private_key: <Clé privée>
enable_registration_captcha: true
Installer Element Web (facultatif)
Si vous le souhaitez, vous pouvez aussi installer le client Element Web sur votre serveur.
Installez apache2
$ sudo apt install apache2
Ajoutez le dépôt element
$ sudo wget -O /usr/share/keyrings/element-io-archive-keyring.gpg https://packages.element.io/debian/element-io-archive-keyring.gpg
$ echo "deb [signed-by=/usr/share/keyrings/element-io-archive-keyring.gpg] https://packages.element.io/debian/ default main" | sudo tee /etc/apt/sources.list.d/element-io.list
$ sudo apt update
Installez element-web
sudo apt install element-web
Editez la configuration
sudo nano /etc/element-web/config.json
Remplacez les balises <domaine> par le domaine de votre instance
{
"default_server_config": {
"m.homeserver": {
"base_url": "https://<domaine>",
"server_name": "<domaine>"
},
"m.identity_server": {
"base_url": "https://vector.im/"
}
},
"disable_custom_urls": false,
"disable_guests": false,
"disable_login_language_selector": false,
"disable_3pid_login": false,
"force_verification": false,
"brand": "Element",
"integrations_ui_url": "https://scalar.vector.im/",
"integrations_rest_url": "https://scalar.vector.im/api",
"integrations_widgets_urls": [
"https://scalar.vector.im/_matrix/integrations/v1",
"https://scalar.vector.im/api",
"https://scalar-staging.vector.im/_matrix/integrations/v1",
"https://scalar-staging.vector.im/api",
"https://scalar-staging.riot.im/scalar/api"
],
"default_widget_container_height": 280,
"default_country_code": "GB",
"show_labs_settings": false,
"features": {},
"default_federate": true,
"default_theme": "light",
"room_directory": {
"servers": ["<domaine>"]
},
"enable_presence_by_hs_url": {
"https://matrix.org": false,
"https://matrix-client.matrix.org": false
},
"setting_defaults": {
"breadcrumbs": true
},
"jitsi": {
"preferred_domain": "<domaine>"
},
"element_call": {
"url": "https://<domaine>",
"participant_limit": 8,
"brand": "Element Call"
},
"map_style_url": "https://api.maptiler.com/maps/streets/style.json?key=fU3vlMsMn4Jb6dnEIFsx"
Créez un nouveau site apache2
$ sudo nano /etc/apache2/sites-available/element.conf
Collez ce contenu et remplacez <url> par le domaine sur lequel vous souhaitez accéder à element. Vous pouvez mettre le même domaine que matrix ou un domaine différent.
<VirtualHost *:80>
ServerName <url>
DocumentRoot /usr/share/element-web
ErrorLog ${APACHE_LOG_DIR}/error-element.log
CustomLog ${APACHE_LOG_DIR}/access-element.log combined
</VirtualHost>
Activez le site
sudo a2ensite element.conf
Relancez apache2
sudo systemctl reload apache2
Activer le SSL
Avant d’activer le SSL assurez-vous que votre serveur est accessible sur internet et que votre domaine est publique.
Installez certbot
$ sudo apt install certbot
Pour obtenir un certificat SSL et passer le site en HTTPS
$ sudo certbot --apache
Séléctionnez votre domaine puis appuyez sur entrée.
Vous pouvez vérifier que votre serveur element tourne bien en accédant à https://<url>

Essayez de vous connecter avec un compte matrix créé précédemment.