Table des matières

Installer un pont Discord - Matrix

Pour créer un pont entre Matrix et Discord, nous allons utiliser mautrix-discord

Prérequis

Il vous faut un serveur Matrix, Synapse par exemple, et PostgreSQL. Je pars du principe que vous avez suivi le tuto sur comment Installer Matrix et que vous avez déjà ces deux logiciels d'installés.

Lancez la commande suivante pour installer Libolm, nécessaire au chiffrement :

sudo aptitude install libolm-dev python3-dev build-essential

Installation

Récupérez le fichier binaire correspondant à votre architecture ici

L'installation est finie (c'était rapide), on peut passer à la configuration

Configuration

Créez une copie du fichier example-config.yaml

cp config.sample.yaml config.yaml

Ouvrez le fichier config.yaml.

remplacez la ligne

domain: "localhost"

par

domain: "votrenomdedomaine"

Si le serveur Matrix tourne sur une autre machine, indiquez l'url du serveur Matrix.

Remplacer la ligne

uri: postgres://user:password@host/database?sslmode=disable

par

uri: postgresql://discordbridge:motdepasse@localhost:5432/discordbridge?sslmode=disable"

Mettez le mot de passe de votre choix, on créera la base de données plus tard.

Dans la partie “permissions”, adaptez les lignes à votre cas. Dans mon cas, je n'ai qu'un seul utilisateur qui est admin. J'ai donc que la ligne

"@fate:matrix.nomdedomaine.fr": admin

Remplacez “fate” par votre nom d'utilisateur ainsi que “nomdedomaine.fr” par l'url d'accès à votre serveur Matrix.

Dans la partie “encryption”, passez les options “allow” et “default” à true pour activer le chiffrement entre le pont et le serveur Matrix

Passons à la base de données

Création de la base de données

Connectez-vous avec l'utilisateur postgres

sudo -i -u postgres

Lancez PostgreSQL

psql

Créez l'utilisateur

CREATE ROLE discordbridge LOGIN PASSWORD 'mot_de_passe';

Mettez le même mot de passe que celui que vous avez renseigné dans le fichier config.yaml

Créez la base de données

CREATE DATABASE discordbridge OWNER discordbridge;

Quittez PostgreSQL

exit

Déconnectez-vous de l'utilisateur postgres

exit

Registration.yaml

Les ponts ont besoin d'un fichier registration.yaml pour avoir certain droits sur votre serveur. Pour le créer, lancez la commande suivante

./mautrix-discord -g

Le fichier généré doit être visible par l'utilisateur exécutant Matrix :

chmod 644 registration.yaml

Ensuite ouvrez le fichier homeserver.yaml de votre serveur et indiquez l'emplacement du fichier registration après la ligne “app_service_config_files:”. Par exemple :

# A list of application service config file to use
app_service_config_files:
- "/home/pi/mautrix-discord/registration.yaml"

Relancez votre serveur Matrix

sudo systemctl restart matrix-synapse.service

Lancement du pont via Systemd

Créez le fichier

/etc/systemd/system/mautrix-discord.service

Copiez les lignes suivantes dedans (adaptez les chemins et utilisateur) :

[Unit]
Description=mautrix-discord bridge

[Service]
Type=exec
Restart=on-failure
RestartSec=30s
WorkingDirectory=/home/pi/mautrix-discord/
ExecStart=/home/pi/mautrix-discord/mautrix-discord
User=pi

# Optional hardening to improve security
ReadWritePaths=/home/pi/mautrix-discord
NoNewPrivileges=yes
MemoryDenyWriteExecute=true
PrivateDevices=yes
PrivateTmp=yes
ProtectSystem=strict
ProtectControlGroups=true
RestrictSUIDSGID=true
RestrictRealtime=true
LockPersonality=true
ProtectKernelLogs=true
ProtectKernelTunables=true
ProtectHostname=true
ProtectKernelModules=true
PrivateUsers=true
ProtectClock=true
SystemCallArchitectures=native
SystemCallErrorNumber=EPERM
SystemCallFilter=@system-service

[Install]
WantedBy=multi-user.target

Modifier les chemins et le nom de l'utilisateur si besoin.

Activez le service au démarrage

sudo systemctl enable mautrix-discord.service

Démarrez le service

sudo systemctl start mautrix-discord.service

Configurer le pont

Installez l'application mobile Discord et connectez-vous à votre compte.

Dans votre client Matrix (Element), lancez une conversation avec @discordbot:matrix.domaine.fr. Tapez la commande

login

Scannez le code-barre qui apparaît avec l'application mobile Discord.

Pour afficher les serveurs discords auxquels vous êtes connectés, tapez la commande

guilds status

Pour se connecter avec le pont à un serveur, tapez

guilds bridge IdDuServeur