Comment installer Matrix Synapse sur Ubuntu 16.04

introduction

Matrix est un standard ouvert pour la communication décentralisée. C’est un ensemble de serveurs et de services utilisés pour la messagerie en ligne qui utilisent une API standardisée qui se synchronise en temps réel.

Matrix utilise homeservers pour stocker les informations de votre compte et l’historique des discussions. Ils fonctionnent de la même manière qu’un client de messagerie se connecte aux serveurs de messagerie via IMAP / SMTP. Tout comme le courrier électronique, vous pouvez utiliser un serveur domestique Matrix hébergé par quelqu’un d’autre ou héberger le vôtre et maîtriser vos propres informations et communications.

En suivant ce guide, vous installerez Synapse, l’implémentation de serveur de référence de Matrix. Lorsque vous aurez terminé, vous pourrez vous connecter à votre serveur domestique via n’importe quel client Matrix et communiquer avec d’autres utilisateurs via d’autres serveurs domestiques fédérés Matrix.

Conditions préalables

Avant de commencer ce guide, vous aurez besoin des éléments suivants:

  • Un serveur Ubuntu 16.04 a été configuré en suivant les https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-16-04 (guide de configuration initiale du serveur), y compris un utilisateur sudo non root. et un pare-feu.

  • Nginx installé sur votre serveur (autorisant le trafic HTTPS); Vous pouvez le faire en suivant this Nginx on Ubuntu 16.04 tutoriel.

  • Un nom de domaine enregistré configuré avec les enregistrements DNS appropriés en suivant https://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-digitalocean&this nom d’hôte tutoriel]. Les enregistrements DNS dont vous avez besoin dépendent de la manière dont vous utilisez votre domaine.

  • Si vous utilisez votre domaine exclusivement pour Synapse, ou si vous utiliserez le même serveur pour héberger votre site Web et Synapse, vous n’avez besoin que d’un enregistrement A avec le nom d’hôte + @ +.

  • Si vous installez Synapse sur un serveur distinct, vous aurez besoin d’un enregistrement A avec le nom d’hôte défini sur le sous-domaine que vous souhaitez utiliser, comme + matrix. +, Et d’un enregistrement SRV avec le nom d’hôte + _matrix._tcp + pointant vers le même sous-domaine sur le port + 8448 +, avec la priorité par défaut et les poids de 10 et 100 respectivement. Cela indiquera aux clients et aux serveurs domestiques Matrix où trouver votre installation Synapse.

Étape 1 - Installation de Matrix Synapse

Connectez-vous à votre serveur en tant qu’utilisateur non root pour commencer.

Avant de commencer à installer quoi que ce soit, assurez-vous que votre index de package local est à jour.

sudo apt-get update

Ensuite, ajoutez le référentiel Matrix officiel à APT.

sudo add-apt-repository https://matrix.org/packages/debian/

Pour vous assurer que votre serveur reste sécurisé, vous devez ajouter la clé du référentiel. Cela permettra de vérifier que les installations et les mises à jour ont été signées par les développeurs et d’empêcher l’installation de packages non autorisés sur votre serveur.

wget -qO - https://matrix.org/packages/debian/repo-key.asc | sudo apt-key add -

Vous verrez le résultat suivant:

OutputOK

Après avoir ajouté le référentiel, mettez à jour l’index de package local afin qu’il inclue le nouveau référentiel.

sudo apt-get update

Avec le référentiel ajouté, l’installation de Synapse est aussi simple que d’exécuter une seule commande APT.

sudo apt-get install matrix-synapse

Au cours de l’installation, vous serez invité à entrer un nom de serveur, qui devrait être votre nom de domaine. Vous serez également invité à choisir si vous souhaitez ou non envoyer à Matrix des statistiques anonymisées sur votre serveur domestique. Ensuite, Synapse s’installera.

Une fois terminé, utilisez + systemctl + pour démarrer automatiquement Synapse au démarrage de votre serveur.

sudo systemctl enable matrix-synapse

Cette commande ne démarre que Synapse au démarrage de l’ensemble du serveur. Votre serveur est déjà en cours d’exécution, utilisez donc + systemctl + manuellement pour démarrer Synapse maintenant.

sudo systemctl start matrix-synapse

Synapse est maintenant installé et fonctionne sur votre serveur, mais vous devez créer un utilisateur avant de pouvoir l’utiliser.

Étape 2 - Création d’un utilisateur pour Synapse

Avant de pouvoir utiliser Synapse, vous devez ajouter un compte utilisateur. Avant de pouvoir ajouter un nouvel utilisateur, vous devez configurer un secret partagé. Un secret secret partagé est une chaîne qui peut être utilisée par quiconque le connaît pour s’enregistrer, même si l’enregistrement est désactivé.

Utilisez la commande suivante pour générer une chaîne de 32 caractères.

cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1

Copiez la chaîne que vous créez, puis ouvrez le fichier de configuration Synapse avec + nano + ou votre éditeur de texte préféré.

sudo nano /etc/matrix-synapse/homeserver.yaml

Dans la section registration, recherchez la clé + registration_shared_secret +. Mettez à jour sa valeur avec la chaîne aléatoire que vous avez copiée, en l’insérant entre guillemets (" "). N’oubliez pas d’activer la clé en supprimant la mise en commentaire de la ligne (c’est-à-dire supprimer le + # + au début de la ligne).

Si vous souhaitez également activer l’enregistrement public, vous pouvez mettre à jour la valeur de + enable_registration + en + + True + ici.

/etc/matrix-synapse/homeserver.yaml

. . .

## Registration ##

# Enable registration for new users.
enable_registration:

# If set, allows registration by anyone who also has the shared
# secret, even if registration is otherwise disabled.
registration_shared_secret: ""

. . .

Enregistrez et fermez le fichier.

Après avoir modifié la configuration, vous devez redémarrer Synapse pour que les modifications prennent effet.

sudo systemctl restart matrix-synapse

Une fois redémarré, utilisez la ligne de commande pour créer un nouvel utilisateur. L’indicateur + -c + spécifie le fichier de configuration et utilise l’instance Synapse locale qui écoute sur le port + 8448 +.

register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml https://localhost:8448

Vous serez invité à choisir un nom d’utilisateur et un mot de passe. On vous demandera également si vous souhaitez que l’utilisateur devienne administrateur ou non; c’est à vous, mais un administrateur n’est pas nécessaire pour ce tutoriel.

Une fois votre utilisateur créé, assurez-vous que le serveur Web est en mesure de répondre aux demandes Synapse.

Étape 3 - Configuration de Nginx et SSL

Les clients matriciels adressent des requêtes à + ​​https: /// _ matrix / + pour se connecter à Synapse. Vous devrez configurer Nginx pour écouter ces demandes et les transmettre à Synapse, qui écoute localement sur le port + 8008 +. Vous sécuriserez également votre configuration par using SSL avec le support de Let’s Encrypt.

Pour ce faire, vous allez créer un fichier de configuration Nginx personnalisé pour votre site Web. Créez ce nouveau fichier de configuration.

sudo nano /etc/nginx/sites-available/

Le bloc + location / _matrix + ci-dessous indique comment Nginx doit gérer les demandes des clients Matrix. En plus du traitement de la demande, le bloc + /. Well-known + met le répertoire du même nom à la disposition de Let’s Encrypt.

Copiez et collez le texte suivant dans le fichier.

/etc/nginx/sites-available/example.com

server {
   listen 80;
   listen [::]:80;

   root /var/www/html;
   index index.html index.htm index.nginx-debian.html;

   server_name  www.;

   location /_matrix {
       proxy_pass http://localhost:8008;
   }

   location ~ /.well-known {
       allow all;
   }
}

Ce tutoriel sur les blocs de serveur Nginx contient de plus amples informations sur comment fonctionnent des fichiers comme ceux-ci. Une fois le serveur configuré, vous pouvez enregistrer et fermer le fichier.

Pour activer cette configuration, créez un lien symbolique pour ce fichier dans le répertoire + / etc / nginx / sites-enabled +.

sudo ln -s /etc/nginx/sites-available/ /etc/nginx/sites-enabled/

Testez votre fichier de configuration pour les erreurs de syntaxe en exécutant la commande.

sudo nginx -t

Corrigez la syntaxe en fonction de la sortie d’erreur, le cas échéant. Si aucune erreur n’est signalée, utilisez + systemctl + reload Nginx pour que les modifications prennent effet.

sudo systemctl reload nginx

Pour terminer la sécurisation de Nginx avec un certificat Let’s Encrypt, suivez la page https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-16-04. Encryptons pour Nginx sur Ubuntu 16.04 tutoriel]. N’oubliez pas d’utiliser + / etc / nginx / sites-available / + à la place du fichier de configuration par défaut. Vous avez déjà ajouté le bloc + ~ / .well-known + mentionné à l’étape 2 de ce tutoriel.

Une fois que Let’s Encrypt est configuré, vous pouvez passer à la configuration du pare-feu afin de permettre au trafic nécessaire à Synapse de communiquer avec d’autres serveurs de maison.

Étape 4 - Autoriser Synapse à travers le pare-feu

Le trafic client se connecte à Synapse via le port HTTPS + 443 + (qui est déjà ouvert dans votre pare-feu à partir du guide Nginx). Toutefois, le trafic provenant d’autres serveurs se connecte directement à Synapse sur le port + 8448 + sans passer par le proxy Nginx. Vous devez donc également autoriser ce trafic à travers le pare-feu.

sudo ufw allow 8448

Vérifiez le statut de UFW.

sudo ufw status

Ça devrait ressembler à ça:

OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx Full                 ALLOW       Anywhere
8448                       ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx Full (v6)            ALLOW       Anywhere (v6)
8448 (v6)                  ALLOW       Anywhere (v6)

Cela signifie que tout le trafic nécessaire est autorisé à traverser votre pare-feu. La dernière étape à franchir consiste à améliorer la sécurité de Synapse en mettant à jour ses certificats SSL.

Étape 5 - Sécuriser la fédération avec SSL (recommandé)

Maintenant que Synapse est configuré et peut communiquer avec d’autres serveurs domestiques, vous pouvez augmenter sa sécurité en utilisant les mêmes certificats SSL que vous avez demandés à Let’s Encrypt à la fin de l’étape 3. Par défaut, Synapse utilise des certificats auto-signés qui font le travail, mais comme vous avez déjà demandé les certificats Let’s Encrypt, il est simple de les utiliser et d’améliorer la sécurité.

Copiez les certificats dans votre répertoire Synapse:

sudo cp /etc/letsencrypt/live//fullchain.pem /etc/matrix-synapse/fullchain.pem
sudo cp /etc/letsencrypt/live//privkey.pem /etc/matrix-synapse/privkey.pem

Pour que ces certificats soient mis à jour lors de leur renouvellement, vous devez ajouter ces commandes à votre onglet cron. Ouvrez-le pour l’édition.

sudo crontab -e

Et ajoutez les lignes suivantes:

crontab entry35 2 * * 1 sudo cp /etc/letsencrypt/live//fullchain.pem /etc/matrix-synapse/fullchain.pem
35 2 * * 1 sudo cp /etc/letsencrypt/live//privkey.pem /etc/matrix-synapse/privkey.pem
36 2 * * 1 sudo systemctl restart matrix-synapse

Puis enregistrez et fermez le fichier. Ensuite, ouvrez votre fichier de configuration Synapse avec + nano + ou votre éditeur de texte préféré.

sudo nano /etc/matrix-synapse/homeserver.yaml

En utilisant le même certificat que vous avez demandé à Lets Encrypt à l’étape 3, remplacez les chemins dans le fichier de configuration.

/etc/matrix-synapse/homeserver.yaml

. . .

tls_certificate_path: ""

# PEM encoded private key for TLS
tls_private_key_path: ""

# PEM dh parameters for ephemeral keys
tls_dh_params_path: ""

. . .

Redémarrez Synapse pour que les modifications de configuration prennent effet.

sudo systemctl restart matrix-synapse

Tout est configuré pour que vous puissiez maintenant vous connecter à votre serveur domestique avec n’importe quel client Matrix et commencer à communiquer avec d’autres. Par exemple, vous pouvez utiliser the client sur le site Web de Matrix.

Entrez les informations suivantes pour les champs appropriés:

  • Votre * ID de matrice * est au format + @ utilisateur: nom_serveur + (p. Ex. + @ sammy: example.com +). D’autres serveurs fédérés l’utilisent pour trouver où votre serveur domestique est hébergé.

  • Votre * mot de passe * est le mot de passe sécurisé que vous avez défini lors de la création de cet utilisateur.

  • Votre * serveur domestique * est le nom du serveur que vous avez choisi à l’étape 1.

Si vous avez activé l’enregistrement public à l’étape 2, vous pouvez également cliquer sur le lien * Créer un compte * pour créer un nouveau compte ou autoriser d’autres personnes à créer un nouveau compte sur votre serveur domestique.

De là, vous pouvez vous connecter aux salles et commencer à discuter. Le support officiel pour Matrix est + # matrix: matrix.org +.

Conclusion

Dans ce guide, vous avez installé Matrix Synapse avec Nginx de manière sécurisée, soutenu par des certificats SSL de Let’s Encrypt. Il y a many clients Matrix que vous pouvez utiliser pour vous connecter à votre serveur domestique, et vous pouvez même http://matrix.org/docs /guides/client-server.html[write votre propre client Matrix] ou get impliqué dans le projet d’une autre manière.