Ghost und ActivityPub für Self-Hoster: Der klare Überblick
Die Verwirrung über Ghost und ActivityPub bei Self-Hosting ist verständlich – es gibt tatsächlich widersprüchliche Informationen. Nach sauberer Recherche ist die Sache aber eindeutig: ActivityPub ist ab Ghost 6.0 (August 2025) für Self-Hoster verfügbar, funktioniert aber je nach Setup unterschiedlich.[docs.ghost]
Der klare Fakt: Was ab Ghost 6 dabei ist
Ghost 6.0, veröffentlicht am 4. August 2025, bringt tatsächlich vollständig integrierte ActivityPub-Unterstützung auch für Self-Hoster. Das Feature ist nicht in ferner Zukunft geplant – es ist da. Der Grund für die widersprüchlichen Aussagen liegt in den unterschiedlichen Setup-Optionen, die unterschiedliche Anforderungen und Limitierungen haben.webpronews+1
Zwei Wege für Self-Hoster: hosted vs. self-hosted
Ghost bietet Self-Hostern zwei verschiedene Wege, ActivityPub zu nutzen. Das ist das Kernproblem der Verwirrung.
Option 1: Hosted ActivityPub Service (einfach, sofort einsatzbereit)
Der einfachere Weg ist, ap.ghost.org (Ghosts eigene Infrastruktur) zu nutzen. Das funktioniert sowohl mit Ghost CLI als auch mit Docker und erfordert nur minimale Konfiguration:
- Reverse-Proxy-Routes hinzufügen für
/.ghost/activitypub/*,/.well-known/webfingerund/.well-known/nodeinfo– alle diese Requests gehen anap.ghost.orgdigitalepfade+1 - Feature in der Ghost-Admin unter „Settings > Growth > Network" aktivieren
- Fertig
Die Sache hat aber Limitierungen (das ist kostenlos, deshalb):[docs.ghost]
- 2.000 Follower maximal
- 2.000 Following maximal
- 100 Interaktionen pro Tag (ein Post, Reply, Like oder Repost zählt als eine Interaktion)
Option 2: Vollständig Self-Hosted ActivityPub (komplex, unbegrenzt)
Für Nutzer, die kein Limit haben wollen und bereit sind, mehr zu konfigurieren, gibt es die Möglichkeit, den ActivityPub-Service selbst zu hosten. Das ist aber nur mit der Docker-Compose-Installationsmethode möglich – nicht mit Ghost CLI.nixsanctuary+1
Der Aufbau ist aufwendiger:[digitalepfade]
- Separater ActivityPub-Container (
ghcr.io/tryghost/activitypub) - Zusätzliche MySQL-Datenbank (oder separate DB für ActivityPub)
- Reverse-Proxy-Konfiguration für die lokalen Requests
- Environment-Variablen für Datenbankverbindung, Speicher-Paths und URLs
Ein funktionierendes Beispiel mit Docker Compose, das alles zusammenbringt, sieht so aus:[digitalepfade]
textservices:
ghost:
image: ghost:latest
environment:
NODE_ENV: production
url: https://yourdomain.com
database__client: mysql
database__connection__host: db
# ... weitere Config
volumes:
- ./data/ghost:/var/lib/ghost/content
activitypub:
image: ghcr.io/tryghost/activitypub:1.1.0
expose:
- "8080"
environment:
NODE_ENV: production
PORT: 8080
MYSQL_HOST: db
MYSQL_DATABASE: activitypub
LOCAL_STORAGE_PATH: /opt/activitypub/content/images/activitypub
LOCAL_STORAGE_HOSTING_URL: https://yourdomain.com/content/images/activitypub
depends_on:
db:
condition: service_healthy
db:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: secure_password
MYSQL_DATABASE: ghost
MYSQL_MULTIPLE_DATABASES: activitypub
volumes:
- ./data/db:/var/lib/mysql
Der ActivityPub-Container muss dann im Reverse Proxy (Nginx, Caddy, etc.) konfiguriert werden, um die Requests zu bekommen:[technodabbler]
text/.ghost/activitypub/* → http://activitypub:8080
/.well-known/webfinger → http://activitypub:8080
/.well-known/nodeinfo → http://activitypub:8080
Vorteil: Keine Limitierungen. Nachteil: Deutlich komplexer, und diese Methode ist noch im Preview-Status.[docs.ghost]
Warum es Probleme gibt: Die reale Komplexität
Die Aussagen, dass ActivityPub für Self-Hoster „nicht funktioniert" oder „später kommt", kommen wahrscheinlich daher, dass viele Nutzer mit Setup-Problemen kämpfen. Das ist real und dokumentiert.
Häufige Fehler bei Self-Hosted:
- Reverse-Proxy-Konfiguration ist falsch – Das ist der häufigste Grund. Wenn die Routes zu
/.ghost/activitypub/*,/.well-known/webfingerund/.well-known/nodeinfonicht richtig durchkommen, gibt Ghost einen 403 oder 404 zurück statt JSON. Das ist besonders bei Nginx tückisch, wo dieContent-Type-Header falsch behandelt werden können.[lunzai] - Docker-Container-Bugs – Nutzer auf subaud.io berichten, dass der offizielle ActivityPub-Container einen Bug hat, der Self-Hosted-Deployments zum Scheitern bringt. Die Lösung war, den Container selbst zu bauen.[subaud]
- ARM-Architektur-Probleme – Die offiziellen Container sind nur für x86 gebaut. ARM-Nutzer (z.B. auf Raspberry Pi oder ARM VPS) müssen den Container selbst bauen.[reddit]
- Admin-Domain-Probleme – Wenn Admin-Panel und Blog-Domain unterschiedlich sind, braucht es zusätzliche Redirects und sorgfältige Proxy-Konfiguration.
Ein User hat das gut zusammengefasst: Nach 48 Stunden Debugging und mehreren Versuchen mit Cloudflare Tunnel, Nginx Proxy Manager und Docker bekam er es zum Laufen – aber nur nach sehr sorgfältiger Konfiguration.[reddit]
Ghost CLI vs. Docker Compose: Was sollte ich nutzen?
Für einfaches Setup mit ap.ghost.org (Ghost CLI):
Wenn du Ghost über Ghost CLI installiert hast (die klassische Methode) und du die 2.000er-Limits akzeptierst, dann:
- Reverse-Proxy-Konfiguration updaten (3 Routes hinzufügen)
- Feature aktivieren
- Fertig
Das ist wirklich das einfachste Setup.[forum.ghost]
Für vollständig Self-Hosted (Docker Compose):
Wenn du bereits Docker nutzt oder willst, dass alles lokal läuft ohne Limits:
- Docker Compose ist neu und noch in Preview
- Ghost empfiehlt langfristig Docker Compose statt Ghost CLI (CLI wird eingestellt)[forum.ghost]
- Es braucht mehr Verständnis für Container, Networking und Reverse Proxy
Was noch nicht funktioniert: Bekannte Einschränkungen
Keine einheitliche Timeline – ActivityPub-Posts und Blog-Posts sind getrennt. Du kannst in Ghost Notizen im Fediverse posten, aber diese erscheinen nicht automatisch auf deinem Blog.[forum.ghost]
Keine offizielle Migration – Wenn du bereits einen ActivityPub-Account irgendwo anders hast, kannst du nicht einfach dorthin migrieren. Du brauchst einen neuen Handle auf deinem Ghost-Blog (@[email protected]).ghost+1
Nur mit Docker Compose für vollen Self-Hosting – Ghost CLI hat keine native Unterstützung für vollständig selbst gehostete ActivityPub-Server. Du musst zum Docker-Setup wechseln, wenn dir die Limits nicht genügen.[nixsanctuary]
Fazit: So siehst du es klar
| Aspekt | Ghost(Pro) | Self-Hosted mit ap.ghost.org | Vollständig Self-Hosted |
|---|---|---|---|
| Ab Ghost-Version | 6.0 | 6.0 | 6.0 |
| Funktioniert jetzt | ✅ | ✅ | ⚠️ (Preview) |
| Komplexität | Keine | Niedrig | Hoch |
| Follower/Following Limit | Unbegrenzt | 2.000 je | Unbegrenzt |
| Interactions/Tag Limit | Unbegrenzt | 100 | Unbegrenzt |
| Installation | Nicht nötig | Proxy-Routes | Docker Compose + Proxy |
| Bekannte Bugs | Keine | Selten (mit richtiger Config) | Einige (Container, ARM) |
Die widersprüchlichen Aussagen ergeben also Sinn: ActivityPub ist ab Ghost 6 da, funktioniert aber von der Komplexität her sehr unterschiedlich. Mit der einfachen Hosted-Lösung sollte es bei den meisten Self-Hostern funktionieren. Wer volle Kontrolle will und keine Limits braucht, muss sich mit Docker Compose und den aktuellen Bugs auseinandersetzen.