VT2020-Matrix-Demo

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 : 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
 * Ubuntu18 :

sudo apt-get install certbot python-certbot-nginx
 * Debian 10 :

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



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=

Pour mettre en place un Bridge avec Discord sur votre serveur Matrix, je vous conseille de suivre le git suivant : [Bridge Discord]

Une fois réalisé, suivé les instructions suivantes :
 * Dans votre salle Matrix (en créer une si nécessaire), invitez @_discord_bot:t2bot.io et attendez qu'il se joigne.
 * Utilisez le lien suivant pour inviter le bot sur votre server Discord : https://discordapp.com/api/oauth2/authorize?client_id=309408702530846730&scope=bot&permissions=607251456
 * Ouvrez le canal de texte dans l'application Web Discord.
 * Dans la barre d'adresse, il devrait y avoir une URL comme https://discordapp.com/channels/ServerID/ChannelID utilisez-la comme référence pour dire dans votre salle Matrix !discord bridge ServerID ChannelID.
 * Le pont demandera une confirmation aux administrateurs du serveur Discord pour terminer le pont. Une fois approuvé, tous est prêt.

= VT2020 =


 * Année : VT2020
 * Sujet : Matrix
 * Fiche : VT2020 - Matrix - Fiche
 * Auteurs : Gaëtan Rival