Mastodon

Comment intégrer facilement un serveur XMPP à Mastodon.

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.

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.

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.

Vous pourriez réussir à adapter l'intégration Prosody Sharky, ou utilisez la nouvelle fonctionnalité de transfert Oauth2 expliquée plus bas.

Actuellement Expérimental.

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.