Auteur/autrice : Jan BELLON

  • Installer un serveur Matrix

    Installer un serveur Matrix

    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

    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.