Seconde tentative pour moi connecté au fediverse, j'ai jusqu'ici essayé d'héberger ma propre instance mastodon ainsi qu'une instance peertube. J'ai décidé d'arrêter mes expériences au bout d'un certains temps: Mastodon, un colosse, prenait trop de ressources sur ma machine, ensuite, Peertube était inutile pour moi ne faisant pas de production vidéo. Maintenir à jour les deux plateformes étaient fatigant et à tout moment la moindre bourde me faisait passer des heures à faire des rollbacks de base de données. Ça ne me convenait pas du tout, j'ai donc claqué la porte de l'auto hébergé pour ça.

Jusqu'au jour où Ghost a commencé à communiquer sur le fait d'intégrer Activity Pub à son CMS... Ce qui m'intriguait au plus au point ! On rejoignait enfin la logique dont j'ai pu évoquer avec Threads en ayant des réseaux qui s'imbriquent via des micro plateforme où l'on peut produire son contenu. Plateforme qui peuvent être plus ou moins grandes: Blog, journaux, récits et autres peuvent ainsi se mêler dans un flux perso et où il est possible d'apporter sa patte avec son site ou alors de simplement consommer via Mastodon.

En tout cas voilà, après avoir attendu puis pesté pendant la mise en place, voici un premier billet partagé simultanément sur le blog ainsi qu'en publiant une partie dans le fediverse.


Comment cela se passe pour avoir Ghost qui communique avec ActivityPub ?

J'ai dû passer par quelques chemins de traverses afin d'adapter leur solutions à la façon dont je voulais opérer. En effet, ils proposent bien un fichier compose mais qui utilise caddy comme reverse proxy, or, j'ai déjà traefik qui s'affaire à rediriger les flux et qui gère les certifs.

Dans le cas où l'hébergement se fait sur la machine host, il faut ajouter manuellement une DB liée à activity pub dont j'ai autorisé l'user ghost à pouvoir écrire et lire dessus. Il faut ensuite ajouter les variables d'environnements ici et là de leur documentation ainsi que les service activitypub et activitypub-migrate.

Il est important de ne pas oublier de catch avec traefik de cette manière:

  activitypub:
    ...
    labels:
    ...
      traefik.http.routers.activitypub.rule: "Host(`${GHOST_URL}`) && (PathPrefix(`/.ghost/activitypub`) || PathPrefix(`/.well-known/webfinger`) || PathPrefix(`/.well-known/nodeinfo`))"
      ...
      traefik.docker.network: "traefik"
      ...
      traefik.http.services.activitypub.loadbalancer.server.port: "8080"
      ...

On voit que je me sers de l'host principal et que j'ajoute les Path lié à ActivityPub.

Dans le cas où on ne voudrait pas héberger soit même la DB, il est possible d'utiliser leur serveur (qui limite un peu l'utilisation globale à un nombre de requêtes précis) en redirigeant les paths qu'on attrape vers ap.ghost.org (voir dans ce cas la doc de traefik pour ça car je n'ai pas opté pour cette solution).


J'espère que les prochaines mises à jour ne seront pas chiantes à réaliser.