Mastodon #
Status #
Deployment #
Quelle #
Die Anwendung wird als generisches app-template Helm-Chart von BJW-S Labs bereitgestellt. Die verwendeten Docker-Images sind die offiziellen Mastodon-Images von ghcr.io/mastodon/mastodon.
Dokumentation #
Die offizielle Dokumentation von Mastodon ist unter docs.joinmastodon.org zu finden.
Funktion #
Diese Mastodon-Instanz läuft unter der Domain kirchner.social. Sie besteht aus mehreren Prozessen, die in einem einzigen Pod als Container laufen:
- Web: Der Ruby-on-Rails-Webserver, der die Haupt-Weboberfläche und die API bereitstellt.
- Streaming: Ein Node.js-Server, der Echtzeit-Updates über WebSockets an die Clients sendet.
- Sidekiq: Ein Hintergrundprozess-Worker, der rechenintensive Aufgaben wie das Versenden von E-Mails oder das Föderieren von Beiträgen abarbeitet.
- PostgreSQL: Die primäre Datenbank für alle Mastodon-Daten.
- Redis: Wird für Caching und die Verwaltung der Sidekiq-Warteschlangen verwendet.
Lokale Anpassungen #
Die Konfiguration erfolgt über Umgebungsvariablen, die in einer ConfigMap in der values.yaml-Datei definiert sind.
Wichtige Umgebungsvariablen #
LOCAL_DOMAIN: Die Domain der Instanz.DB_*/REDIS_*: Konfiguration für die Verbindung zur PostgreSQL-Datenbank und zu Redis.OIDC_*: Konfiguriert die Authentifizierung über Authentik (OIDC) als Alternative zur passwortbasierten Anmeldung.VAPID_*: Schlüssel für die Web-Push-Benachrichtigungen.SECRET_KEY_BASE,OTP_SECRET: Geheime Schlüssel für die Anwendungssicherheit.
Wichtige Einstellungen #
- Ingress: Der Zugriff auf die Weboberfläche und die Streaming-API wird über einen Ingress mit einem Hostnamen ermöglicht.
- Speicher: Alle persistenten Daten (PostgreSQL-DB, Redis-DB, hochgeladene Medien) werden auf einem NFS-Share gespeichert.
Installation #
Die Anwendung wird mittels Kustomize und Helm durch ArgoCD im Kubernetes-Cluster bereitgestellt. Die Konfiguration befindet sich im apps/mastodon-Verzeichnis. Eine manuelle Installation kann mit folgendem Befehl durchgeführt werden:
1kubectl kustomize --enable-helm apps/mastodon | kubectl apply -n mastodon -f -
Abhängigkeiten #
- Traefik: Wird als Ingress-Controller für den externen Zugriff benötigt.
- cert-manager: Wird für die automatische Bereitstellung von TLS-Zertifikaten benötigt.
- Authentik: Wird für die optionale Benutzerauthentifizierung via OIDC benötigt.
- NFS: Ein NFS-Server wird für das persistente Speichern aller Daten benötigt.