Comment installer Matrix Synapse sur Ubuntu 16.04

De Get Docs
Aller à :navigation, rechercher

Introduction

Matrix est une norme ouverte pour la communication décentralisée. Il s'agit d'un ensemble de serveurs et de services utilisés pour la messagerie en ligne qui parlent 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. Comme le courrier électronique, vous pouvez soit utiliser un serveur domestique Matrix hébergé par quelqu'un d'autre, soit héberger le vôtre et contrôler vos propres informations et communications.

En suivant ce guide, vous installerez Synapse, l'implémentation de serveur domestique 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 sur 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 configuré en suivant ce 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 ce tutoriel Nginx sur Ubuntu 16.04.
  • Un nom de domaine enregistré configuré avec les enregistrements DNS appropriés en suivant ce didacticiel sur les noms d'hôte. Les enregistrements DNS dont vous avez besoin dépendent de la façon dont vous utilisez votre domaine.
    • Si vous utilisez votre domaine exclusivement pour Synapse, ou si vous utilisez 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 séparé, 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.example.com, et 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é et les poids par défaut de 10 et 100 respectivement. Cela indiquera aux clients Matrix et aux serveurs domestiques 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 vérifiera que toutes les installations et mises à jour ont été signées par les développeurs et empêchera l'installation de tout package non autorisé 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

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

Une fois terminé, utilisez systemctl pour démarrer automatiquement Synapse chaque fois que votre serveur démarre.

sudo systemctl enable matrix-synapse

Cette commande ne démarre Synapse que lorsque tout le serveur démarre. 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 devrez créer un utilisateur avant de pouvoir commencer à l'utiliser.

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

Avant de pouvoir commencer à utiliser Synapse, vous devrez ajouter un compte utilisateur. Avant de pouvoir ajouter un nouvel utilisateur, vous devez configurer un secret partagé. Un secret partagé est une chaîne qui peut être utilisée par toute personne qui la 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 d'enregistrement, 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 décommentant la ligne (c'est-à-dire en supprimant le # en début de ligne).

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

/etc/matrix-synapse/homeserver.yaml

. . .

## Registration ##

# Enable registration for new users.
enable_registration: False

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

. . .

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. Le drapeau -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. Il vous sera également demandé si vous souhaitez faire de l'utilisateur un administrateur ou non ; c'est à vous de décider, mais un administrateur n'est pas nécessaire pour ce tutoriel.

Une fois votre utilisateur créé, assurons-nous que le serveur Web est capable de répondre aux requêtes Synapse.

Étape 3 - Configuration de Nginx et SSL

Les clients Matrix font des demandes à https://example.com/_matrix/ pour se connecter à Synapse. Vous devrez configurer Nginx pour écouter ces requêtes et les transmettre à Synapse, qui écoute localement sur le port 8008. Vous sécuriserez également votre configuration en à l'aide de SSL soutenu par 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/example.com

Le bloc location /_matrix ci-dessous spécifie comment Nginx doit gérer les requêtes des clients Matrix. En plus de la gestion des requêtes, le bloc /.well-known met le répertoire du même nom à disposition de Let's Encrypt.

Copiez et collez ce qui suit 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 example.com www.example.com;

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

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

Ce didacticiel sur les blocs de serveur Nginx contient plus d'informations sur le fonctionnement de fichiers comme ceux-ci. Lorsque vous avez configuré le serveur, 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/example.com /etc/nginx/sites-enabled/example.com

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. Lorsqu'aucune erreur n'est signalée, utilisez systemctl rechargez Nginx pour que les modifications prennent effet.

sudo systemctl reload nginx

Pour finir de sécuriser Nginx avec un certificat Let's Encrypt, suivez ce tutoriel Let's Encrypt pour Nginx sur Ubuntu 16.04. N'oubliez pas d'utiliser /etc/nginx/sites-available/example.com au lieu du fichier de configuration par défaut. Vous avez déjà ajouté le bloc ~/.well-known mentionné à l'étape 2 de ce didacticiel.

Une fois Let's Encrypt configuré, vous pouvez passer à la configuration du pare-feu pour permettre au trafic nécessaire à Synapse de communiquer avec d'autres serveurs domestiques.

É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). Cependant, 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 l'état d'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é à travers 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écurisation de 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/example.com/fullchain.pem /etc/matrix-synapse/fullchain.pem
sudo cp /etc/letsencrypt/live/example.com/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 le modifier.

sudo crontab -e

Et ajoutez les lignes suivantes :

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

Ensuite, 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: "/etc/matrix-synapse/fullchain.pem"

# PEM encoded private key for TLS
tls_private_key_path: "/etc/matrix-synapse/privkey.pem"

# PEM dh parameters for ephemeral keys
tls_dh_params_path: "/etc/ssl/certs/dhparam.pem"

. . .

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

sudo systemctl restart matrix-synapse

Tout est configuré, vous pouvez donc maintenant vous connecter à votre serveur domestique avec n'importe quel client Matrix et commencer à communiquer avec les autres. Par exemple, vous pouvez utiliser le client sur le site Web de Matrix.

Entrez ce qui suit dans les champs appropriés :

  • Votre Matrix ID est au format @user:server_name (par exemple @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 Home Server est le nom de 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.

À partir de là, vous pouvez vous connecter aux salons et commencer à discuter. La salle d'assistance officielle pour Matrix est #matrix:matrix.org.

Conclusion

Dans ce guide, vous avez installé en toute sécurité Matrix Synapse avec Nginx, soutenu par des certificats SSL de Let's Encrypt. Il existe de nombreux clients Matrix que vous pouvez utiliser pour vous connecter à votre serveur domestique, et vous pouvez même écrire votre propre client Matrix ou vous impliquer dans le projet d'une autre manière .