Bridge Matrix to XMPP
Updated 30 Septembre 2019
Préparer un conteneur LXC
Nous conseillons d'installer le pont dans un conteneur dédié que vous aurez préparé selon le manuel.
Configurez le composant externe matrix.xmpp.example.org selon la documentation, ainsi que muc.xmpp.example.org, le composant de conférence.
Installer matrix-bifrost
Installez le paquet nodeenv :
emerge -a dev-python/nodeenv
Téléchargez la dernière version de matrix-bifrost
sur github et copiez-la dans /var/calcul :
git clone https://github.com/matrix-org/matrix-bifrost /var/calculate/matrix-bifrost
Créez et activez l'environnement virtuel NodeJS-10.15.3 dans le répertoire de l'application :
nodeenv --node=10.15.3 node-10
source node-10/bin/activate
Tant que vous êtes dans le répertoire /var/calculate/matrix-bifrost, installez l'application :
npm install
npm run build
Configuration du pont
Copiez config.sample.yaml
vers config.yaml
et configurez la passerelle avec les paramètres suivants :
matrix.example.orgest le serveur Matrixxmpp.example.orgest le serveur Jabbermatrix.xmpp.example.orgest un composant Jabber externemuc.xmpp.example.orgest le composant Jabber qui permet d'organiser des conférences.xmpp_est le préfixe utilisé pour désigner les utilisateurs et les conférences Jabber
bridge: # Your homeserver server_name. domain: "matrix.example.org" # A internally reachable endpoint for the CS api of the homeserver. homeserverUrl: "https://matrix.example.org" # Prefix of all users of the bridge. userPrefix: "xmpp_" purple: # For selecting a specific backend. One of "node-purple", "xmpp.js". Defaults to "node-purple" backend: "xmpp.js" backendOpts: # endpoint to reach the component on. The default port is 5347 service: "xmpp://xmpp.example.org:5347" # domin assigned to the component. domain: "matrix.xmpp.example.org" # password needed by the component. password: "secret" portal: # List of regexes to match a alias that can be turned into a bridge. aliases: # This matches _purple_ followed by anything "^xmpp_(.+)$": # Use the prpl-jabber protocol. protocol: "xmpp.js" properties: # Set room to the first regex match room: "regex:1" # Set the server to be conf.localhost server: "muc.xmpp.example.org" # Automatically register users with accounts if they join/get invited # a room with a protocol they are not bound to. # This is REQUIRED for xmpp.js to work. autoRegistration: enabled: true protocolSteps: # For xmpp.js, please use: xmpp-js: type: "implicit" parameters: username: "<T_MXID_SANE>@matrix.xmpp.example.org"
Créez un fichier d'enregistrement pour le service situé à matrix-xmpp.example.org :
npm run genreg -- -u http://matrix-xmpp.example.org:9555 -f registration_xmpp.yaml
Remplacez le préfixe _purple_ avec xmpp_
id: 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef hs_token: 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef as_token: 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef namespaces: users: - exclusive: true regex: '@xmpp_.*' aliases: - exclusive: true regex: '#xmpp_.*' rooms: [] url: 'http://matrix-xmpp.example.org:9555' sender_localpart: xmpp_bot rate_limited: true protocols: - xmpp
Copier registration_xmpp.yaml dans le répertoire /var/calculate/synapse sur le serveur Matrix.
scp registration_xmpp.yaml root@synapse:/var/calculate/synapse/
Ajoutez le fichier d'enregistrement à la configuration de Synapse :
... # A list of application service config file to use app_service_config_files: - registration_xmpp.yaml ...
Relancez Synapse :
/etc/init.d/synapse restart
Démarrer la passerelle
Créez un script OpenRC pour gérer le démon de la passerelle XMPP-Matrix :
#!/sbin/openrc-run # Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ name="Matrix-XMPP daemon" description="Matrix XMPP bridge daemon" command=/var/calculate/matrix-bifrost/node-10/bin/node command_args="build/src/Program.js -c config.yaml -p 9555 -f registration_xmpp.yaml" directory=/var/calculate/matrix-bifrost pidfile="/run/matrixxmpp.pid" command_background=true depend() { need net }
Définissez les privilèges :
chmod 0755 /etc/init.d/matrix-xmpp-bridge
Lancez le démon :
/etc/init.d/matrix-xmpp-bridge start
Ajoutez-le à la liste de démarrage automatique :
rc-update add matrix-xmpp-bridge
Relier XMPP à Matrix
Connecter des utilisateurs XMPP à des utilisateurs Matrix
Le JID d'un utilisateur Matrix dans XMPP est [HTML_REMOVED]_[HTML_REMOVED]@matrix.xmpp.example.org.
Pour ouvrir un dialogue avec l'utilisateur user:matrix.example.org sur XMPP, commencez-le par user_matrix.example.org@matrix.xmpp.example.org.
Le MXID d'un utilisateur XMPP est @xmpp_<XMPP_nick>=40<jabber_server>:matrix.example.org.
Pour ouvrir un dialogue avec l'utilisateur XMPP foo@xmpp.example.org sur Matrix. Veuillez le commencer avec ~~@xmpp_foo=40xmpp.example.org:matrix.example.org~.
Relier une salle Matrix à des discussions XMPP
L'alias d'une discussion XMPP dans Matrix est #xmpp_(nom):matrix.example.org
Pour créer une salle connectée à une discussion XMPP ~room@muc.xmpp.example.org tout en restant sur Matrix, rejoignez #xmpp_room:matrix.example.org~.
Relier un espace de discussion XMPP à celui sur Matrix existant
Demandez le MXID de la commande avec laquelle vous souhaitez rejoindre mychat@muc.xmpp.example.org ( !) :PHAqztyseimYIVPwqu:matrix.example.org)
Créez une discussion XMPP, nommée mychat@muc.xmpp.example.org.
Ajouter le traitement pour la salle ! au fichier d'enregistrement :PHAqztyseimYIVPwqu:matrix.example.org
... namespaces: ... rooms: - exclusive: false regex: '!PHAqztyseimYIVPwqu:matrix.example.org'
Copier registration_xmpp.yaml dans le répertoire /var/calculate/synapse sur le serveur Matrix.
scp registration_xmpp.yaml root@synapse:/var/calculate/synapse/
Redémarrez le serveur Synapse.
/etc/init.d/synapse restart
Redémarrez la passerelle :
/etc/init.d/matrix-xmpp-bridge restart
Reliez la salle Matrix actuelle à la discussion XMPP mychat@muc.xmpp.example.org en lui envoyant le message suivant :
!purple bridge xmpp-js muc.xmpp.example.org mychat