ActivityPub
Informations générales
Comment utiliser ActivityPub
Pour utiliser ActivityPub (AP) vous devrez avoir un acteur accessible en public. Le format de votre acteur doit être en JSON-LD. Votre acteur doit ressembler à ceci : exemple acteur sur le site communecter partir développement.
L'id doit correspond à l'URL du document, tous les liens doivent être en HTTPS.
Vous aurez besoin d'une inbox car les instances qui utilisent AP ont besoin de savoir si un acteur possède une inbox. Chaque acteur doit avoir une paire de clés (publique et privée) qui peut être générée avec openssl.
JSON ne prend en charge les sauts de ligne, on doit remplacer les sauts de ligne par \n
(pour la partie publicKeyPEM).
Le Webfinger permet de demander à un site web s'il a un utilisateur correspondant au nom recheché. Ce dernier doit répondre au webfinger en renvoyant les liens de ressource correspondants. Le noeud final d'un Webfinger se trouve toujours en /.well-known/webfinger
et recevoir des requêtes telles que /.well-known/webfinger?resource=acct:name@my-example.com
.
Pour pouvoir envoyer un message (par exemple avec le verbe Create
), il est nécessaire d'avoir l'inbox de la personne concernée et d'utiliser une signature HTTP qui permettra d'authentifier l'utilisateur envoyant le message.
Une signature HTTP est un en-tête HTTP signé par la paire de clés RSA. Pour avoir plus d'information sur la création d'une signature HTTP, visitez le lien suivant : How to implement a basic ActivityPub server.
Liens pratiques :
- Setting Up a WebFinger Server
- How to implement a basic ActivityPub server
- ActivityPub W3
- Decentralizing Social Interactions with ActivityPub
Développement en cours (Tony et Pierre)
Réalisation d'un acteur AP sur Communecter
J'ai créé une API qui permet de générer un acteur AP sur communecter, vous pouvez trouver un exemple en cliquant ici. Petite précision : la clé publique est au format brute.
Comment ça fonctionne : Vous devrez indiquer dans le lien l'ID de la personne ici : http://dev.communecter.org/api/activitypub/actor/id/ + id
.
Fichier modifié : TranslateActivityStream.php
/ Rest.php
. Fichier créé : ActivityPubController.php
/ ActorAction.php
.
Création d'un client mastodon
Nous avons créé avec Pierre un client Mastodon qui permet de poster/récupérer les statuts, récupérer les followers et voir la timeline publique en utilisant l'API REST de Mastodon. Cette preuve de concept se base sur la librairie mastodon.js par Kirschn. Vous pouvez retrouver nos codes sur le gitlab de l'adullact: mastodon_api
Test d'un serveur express-activitypub en nodejs
J'ai suivi ce tutoriel là pour pouvoir envyer un message sur mamot.fr : Decentralizing Social Interactions with ActivityPub. Pierre a détaillé plus en bas comment réaliser le tutoriel.
Remarque constatée : Pour pouvoir voir un message sur mamot.fr, nous étions dans l'obligation de suivre notre acteur créé par express activitypub. Sans cela, il nous est impossible de voir nos message dans la timeline. Ce problème est réccurent quand on a tenté avec un compte Pixelfed de communiquer avec mamot.fr.
La réalisation d'une inbox (non fonctionnelle)
Je me suis basé sur le script crée par Darius Kazemi sur son tutoriel Decentralizing Social Interactions with ActivityPub. Malheureusement je n'arrive pas à faire fonctionner mon inbox car je n'arrive pas a encoder la signature.
Création d'un client Mastodon
Utilisation de l'API Mamot pour pouvoir afficher les timelines publiques, locales et ajouter un post.
Mon code source est disponible sur gitlab Code Source
Ajout d'un acteur ActivityPub sur l'API de Communecter
Afin d'avoir un aperçu du format d'un acteur ActivityPub en ajoutant votre id a la fin du lien mon lien pour accéder à l'acteur + id
Test d'envoi d'un message sur Mamot
- Taper la commande
git clone https://github.com/dariusk/express-activitypub.git
dans votre terminal.- Installer ngrok, en suivante les instructions https://ngrok.com/download.
- Taper la commande
/.ngrok/http 3000
- Ensuite allez dans le dossier
express-activityPub
, modifier le dossierconfig.json
dans route. - Mettre un nom d'utilisateur
- Mettre un mot de passe
- Le port sera 3000, et le domain sera l'adresse en https de ngrok, mais il faut retirer le https, pour obtenir ceci exemple:
d40f1818.ngrok.io
- Taper la commande
node index.js
- Acceder a l'url du site en https et rajouter admin exemple:
[https://d40f1818.ngrok.io/admin](https://d40f1818.ngrok.io/admin)
- Crée un compte test saisissez le nom d'utlisateur et le mot de passe, ensuite il y aura des données qui seront générés, afficher le account WebFinger url, copier le suject sans la acct:
- Connecter vous a https://mamot.fr.
- Rechercher le webfinger url, cliquer sur le bouton pour follow.
- Ensuite saisir test dans account name, Copier coller l'API Key, et saisir votre message exemple : Hello world !
Et vous pourrez voir le message envoyer sur mtps://mamot.fr