Zum Hauptinhalt springen
  1. Beiträge/
  2. Kleines Homelab/
  3. k3s-prod: Kubernetes Cluster Konfiguration und Anwendungsbereitstellung/

Mastodon

Inhaltsverzeichnis

Mastodon
#

Status
#

Status
Uptime
Ping
Avg Response Time
Certificate Expiration
Response Time

Deployment
#

Argo 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.
Per E-Mail antworten
Fabrice Kirchner
Autor
Fabrice Kirchner
stolzer Vater, Nerd, Admin