VT2020-Matrix-Demo

From air
Jump to navigation Jump to search

L'objectif de cette démonstration est dans un premier temps vous expliquez comment mettre en place un serveur Synapse qui utilise le protocole Matrix, avant de visualiser un exemple de Bridge avec la plateforme Discord.

Serveur Synapse

Installation

Dans un premier temps, il est primordial d'avoir un nom de domaine accessible qui correspondra au nom de votre serveur Matrix. Dans notre cas, nous utiliserons une VM Azure afin d'en avoir un en plus que ce dernier soit hebergé.

Nous allons développer notre serveur Matrix sur une plateforme Debian/Ubuntu donc des prérequis sont nécessaires :

sudo apt-get install build-essential python3-dev libffi-dev \
                    python3-pip python3-setuptools sqlite3 \
                    libssl-dev virtualenv libjpeg-dev libxslt1-dev

Maintenant, nous allons telecharger et installer Synapse :

sudo apt install -y lsb-release wget apt-transport-https
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
sudo apt install matrix-synapse-py3

Au cours de l’installation, nous serons invité à entrer un nom de serveur, qui devrait être notre nom de domaine. Nous serons également invité à choisir si nous souhaitons ou non envoyer à Matrix des statistiques anonymisées sur notre serveur domestique.

Puis nous lançons le serveur Synapse :

sudo systemctl start matrix-synapse.service
sudo systemctl enable matrix-synapse.service

Mise en place du TLS

Matrix Synapse nécessite désormais TLS activé par défaut pour permettre au serveur d'être utilisé en toute sécurité. Le moyen le plus simple de configurer TLS est d'obtenir des certificats SSL auprès d'une autorité de certification de confiance telle que Let's Encrypt.

Dans ce cas nous allons installer le client Certbot de Let's Encrypt, en fonction de votre distribution Linux :

  • Ubuntu18 :
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot python-certbot-nginx
  • Debian 10 :
sudo apt-get install certbot python-certbot-nginx

Enfin, nous devons également disposer d'un serveur Web que Certbot pourra utiliser pour valider le certificat. Danc ce cas, nous allons installer Nginx.

sudo apt-get installer nginx

Maintenant que Cerbot et Nginx sont installés, nous allons créer un certificat à l'aide de la commande suivante :

sudo certbot certonly --nginx -d matrix.example.com

Configuration d'un reverse Proxy avec Nginx

Matrix recommande de configurer un proxy inverse, tel que nginx, Apache ou HAProxy, devant votre serveur Synapse. Cela vise à simplifier les connexions client en permettant à Matrix d'utiliser le port HTTPS commun 443 tout en conservant les connexions serveur à serveur sur le port 8448.

Nous allons dans ce cas aller créer un fichier pour activer Nginx comme reverse Proxy :

sudo nano /etc/nginx/conf.d/matrix.conf

Entrez ensuite ce qui suit pour activer le proxy avec terminaison SSL sans oublier de changer matrix.example.com par votre nom de domaine :

server {
    listen 80;
	listen [::]:80;
    server_name matrix.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name matrix.example.com;

    ssl on;
    ssl_certificate /etc/letsencrypt/live/matrix.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/matrix.example.com/privkey.pem;

    location / {
        proxy_pass http://localhost:8008;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}
server {
    listen 8448 ssl default_server;
    listen [::]:8448 ssl default_server;
    server_name matrix.example.com;

    ssl on;
    ssl_certificate /etc/letsencrypt/live/matrix.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/matrix.example.com/privkey.pem;
    location / {
        proxy_pass http://localhost:8008;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}

Sans oublier bien sur de redémarrer Nginx pour mettre à jour nos modifications.

sudo systemctl restart nginx
sudo systemctl enable nginx

Login sur notre serveur Matrix

Maintenant nous pouvons nous connecter à notre serveur à l'adresse suivante et vérifier si notre serveur est bien opérationnel

https://matrix.example.com
Screen Serveur Matrix

Maintenant, il ne vous reste plus qu'à utiliser un Client Web comme Riot ou Element pour nous connecter à notre serveur sans oublier de se créer un compte.

Bridge avec Discord

VT2020