Mastodon
Comment intégrer facilement un serveur XMPP à Mastodon.
Intégration de base de données
La manière la plus simple de lier un serveur Ejabberd à une instance Mastodon sur le même serveur est d'utiliser un script d'authentification externe qui intéragie directement avec la base de données Postgresql de Mastodon. Cette méthode ne fonctionne de manière sécurisée que sur le réseau local, mais a été bien testée sur une instance Mastodon de taille moyenne.
Bot Mastodon pour Ejabberd
Une autre option simple est d'utiliser un bot sur votre instance Mastodon avec lequel intéragir pour enregistrer des comptes via l'API de Ejabberd. Vous pouvez trouver le logiciel du bot ici. Ce bot possède également d'autres fonctionnalités intéressantes pour obtenir des détails d'Ejabberd, il peut donc valoir la peine de l'installer même si une autre méthode d'intégration de compte est utilisée.
Via LDAP
If you are setting up a new Mastodon instance, you might also consider managing the accounts via a separate LDAP database as explained in the official Mastodon documentation here. Please refer to our dedicated LDAP tutorial for the XMPP server part.
Prosody
Vous pourriez réussir à adapter l'intégration Prosody Sharky, ou utilisez la nouvelle fonctionnalité de transfert Oauth2 expliquée plus bas.
L'intégration d'un serveur Prosody avec Mastodon peut aussi être faite via OAuth2. Le nouveau module mod_auth_oauth_external est nécessaire pour ça (et il nécessite un build nightly récent de Prosody).
Tout d'abord, une nouvelle application doit être enregistrée du côté
Mastodon. Ça peut être fait sur Mastodon → Settings → Development → New
application. L'URI de redirection n'importe pas. Prosody à besoin du scope
read:accounts
, rien d'autre.
Puis ces lignes doivent être ajoutées à la configuration de Prosody :
1authentication = "oauth_external"
2oauth_external_token_endpoint = "https://mastodon.example/oauth/token"
3oauth_external_validation_endpoint = "https://mastodon.example/api/v1/accounts/verify_credentials"
4oauth_external_username_field = "account name"
5oauth_external_scope = "read:accounts"
6oauth_external_client_id = "Get client_id from https://mastodon.example/settings/applications"
7oauth_external_client_secret = "Get client_secret from https://mastodon.example/settings/applications"
Now people can login with this name: email\40example.com@xmpp.example.org
,
which is composed of the email address they are registered with on the
Mastodon server (with the @
escaped as \40
) and the domain of
the XMPP server behind the second @
. Hopefully this complex login name
can be simplified in the future.