dorfteich/docs/de/manual/site-admin-guide.md
Claude Fable 5 2fe9374f16
All checks were successful
CI / Import/export fidelity gate (pull_request) Successful in 54s
CI / Lint, typecheck, test (pull_request) Successful in 4m25s
CD / Build and push images (push) Successful in 17s
Release / Build release images and notes (push) Successful in 1m18s
CD / Smoke tests against Test (push) Successful in 1m18s
CI / Build container images (push) Has been skipped
CI / Import/export fidelity gate (push) Successful in 59s
CI / Build container images (pull_request) Successful in 3m49s
CI / Auth e2e pack (pull_request) Successful in 6m47s
CD / Deploy to Test (push) Successful in 11s
CD / Promote to Int (push) Successful in 11s
Release / Release-candidate operations QA (push) Successful in 45s
Prod deploy / Deploy the released images to Prod (push) Successful in 15s
CI / Lint, typecheck, test (push) Successful in 4m36s
CI / Auth e2e pack (push) Successful in 6m54s
Doku: Excalidraw als sechstes Standard-Plugin ergänzt
- Tutorial K19: neue Sektion „Excalidraw — Skizzen wie von Hand" mit
  Nadias Bühnenplan-Beispiel (konzerte-live); Intro fünf→sechs Plugins.
- Tutorial K18: fünf→sechs Standard-Plugins.
- Site-Admin-Guide (en+de): Referenzliste + Build-Namensliste +
  Build-Hinweis (~16-MiB-ZIP aus npm).
- plugin-architecture.md: Referenz-Eintrag excalidraw (npm-Library-
  Spielart des Bundled-App-Pfads, {scene, svg}).
- developer/extending (en+de): Excalidraw als zweite Bundled-App-Variante.

Holt die in #136 zugesagten Doku-Ergänzungen nach. Screenshot für K19
folgt nach dem CSP-Deploy (damit die Handschrift korrekt rendert).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155v2aT8AG1kZDQEZiCLBWC
2026-07-19 22:27:17 +02:00

7.3 KiB

Site-Admin-Handbuch

Englisches Original: docs/manual/site-admin-guide.md

Wie du eine Dorfteich-Instanz aus dem Browser verwaltest. Installation, Updates und Betrieb auf Host-Ebene behandelt das Self-Hosting-Handbuch (englisch); hier geht es um die beiden Admin-Seiten: Admin → Einstellungen (/admin) und Admin → System (/admin/system).

Ein Site-Admin sieht und darf alles — nutze für die tägliche Arbeit ein normales Konto.

Erster Kontakt: der Einrichtungsassistent

Eine frische Instanz begrüßt dich mit einem Assistenten in sechs Schritten: Sprache → das Site-Admin-Konto → Instanzname und Standardsprache → SMTP-Relay (mit Live-Testmail; überspringbar) → Registrierungsmodus → fertig. Bis er abgeschlossen ist, antwortet die Instanz auf alles mit 503 setup_required. Unbeaufsichtigte Installationen befüllen den Assistenten vorab über SETUP_ADMIN_*-Umgebungsvariablen.

Admin → Einstellungen

Instanz

  • Name (erscheint in der Kopfleiste und in Mails) und Standardsprache (gilt für anonyme Besucher und server-gerenderte Seiten).
  • Registrierungsmodus: open (jeder darf sich registrieren, mit E-Mail-Bestätigung) oder closed (nur bestehende Konten melden sich an).

Kontingente

Instanzweite Standardwerte: Bearbeiter/Leser pro Teich, zusätzliche geteilte Teiche pro Person (Standard 0 — erhöhe ihn oder vergib Pro-Person-Overrides, damit Leute gemeinsame Teiche anlegen können), Speicher pro Teich, maximale Dateigröße. Der Kontingent-Manager darunter setzt Overrides pro Person/Teich, die die Standardwerte überstimmen.

Uploads

Die Allow-Liste der Nicht-Bild-Dateiendungen, die Nutzer anhängen dürfen, und die SVG-Richtlinie (sanitize entfernt Skripte aus hochgeladenen SVGs, reject lehnt sie ab).

Öffentliche API und MCP

Zwei unabhängige Hauptschalter, beide standardmäßig aus:

  • Öffentliche REST-API: erlaubt Nutzern, persönliche API-Tokens anzulegen und /api/public/v1 zu verwenden (siehe das API-Handbuch).
  • Eingebauter MCP-Endpoint: stellt /api/mcp für KI-Assistenten bereit (MCP-Handbuch).

Keiner der Schalter wirkt allein pro Teich — jeder Teich stimmt zusätzlich über seine Teich-Einstellungen zu. Aus heißt: Die Endpoints antworten mit 404.

Rechtsseiten

Impressum und Datenschutzerklärung als Markdown, veröffentlicht unter /legal/imprint und /legal/privacy und aus jeder Fußzeile verlinkt. Eine Vorlage mit Prüf-Checkliste liegt in docs/self-hosting/legal-template.md. Bis sie konfiguriert sind, zeigen die Seiten einen Hinweis (und dir ein Warnbanner).

Backups

Siehe Admin → System → Backups unten.

Plugins

Installiere Plugins per ZIP-Upload (alternativ: das ZIP in den _dropzone/-Ordner auf dem Plugins-Volume legen — ein Watcher installiert es binnen Sekunden und verschiebt abgelehnte Pakete mit Begründung nach _quarantine/).

Jedes installierte Plugin hat einen Instanz-Modus:

Modus Bedeutung
disabled überall inaktiv (der Standard nach dem Installieren)
optional Teich-Admins entscheiden pro Teich
required in jedem Teich aktiv, kein Opt-out

Jedes Plugin hat eine gesandboxte Vorschau-Seite zum Ausprobieren vor dem Aktivieren. Deinstallieren ist blockiert, solange ein Plugin required ist; Dokumente behalten ihre Plugin-Blöcke in jedem Fall und zeigen den Fallback-Text des Plugins, wenn es fehlt.

Mitgelieferte Referenz-Plugins: toc (Inhaltsverzeichnis), page-index (label-gefilterte Seitenliste), mermaid (Diagramm-Blöcke), drawio (vollwertiges draw.io-Bearbeiten), excalidraw (handgezeichnete Skizzen), section-styles-basic (farbige Hinweiskästen).

Woher kommen die ZIPs der Referenz-Plugins? Sie liegen den Server-Images nicht bei — sie werden aus dem Repository gebaut (Node 22 und pnpm, einmalig pnpm install im Repo-Wurzelverzeichnis):

cd packages/plugins/<name>   # toc | page-index | mermaid | drawio | excalidraw | section-styles-basic
pnpm build                   # → dist/<id>-<version>.zip — diese Datei hochladen

Der drawio-Build lädt beim ersten Lauf sein gepinntes Editor-Bundle von GitHub und packt ein ~27-MiB-ZIP (innerhalb des 64-MiB-Limits für Plugin-Uploads); excalidraw bündelt seinen Editor aus npm in ein ~16-MiB-ZIP; die übrigen vier bauen offline in Sekunden.

Typischer Ablauf: ZIP hochladen, die abgeschottete Vorschau prüfen, den Instanz-Modus auf optional stellen und das Plugin dann je Teich aktivieren (Teich-Einstellungen → Plugins — in persönlichen Teichen macht das der Eigentümer selbst).

Personen

Die Personenverwaltung: Konten suchen, deaktivieren/aktivieren, Bestätigungsmails erneut senden, Site-Admins ernennen/absetzen und Konten löschen. Die Löschung bietet Pseudonymisierung an: Das Konto und seine persönlichen Daten verschwinden, aber geteilte Inhalte überleben, einem neutralen Platzhalter zugeschrieben. Schutzmechanismen verhindern, dich selbst zu deaktivieren oder den letzten Site-Admin zu entfernen.

Admin → System

Der Blick des Betreibers auf einen Schirm:

  • Wartungsjobs: jeder Wartungsjob (Papierkorb-Bereinigung, Versions-Ausdünnung, Seiten-Kompaktierung, Datenexport-Bereinigung, Benachrichtigungs-Digests) mit Takt, letztem Lauf, Dauer und Ergebnis — plus manuellem Ausführen-Knopf (selbst audit-geloggt).
  • Backups: Die Status-Karte spiegelt den letzten Lauf des Sidecars und sein Frische-Urteil, mit einem Jetzt sichern-Knopf. Darunter:
    • Backup-Einstellungen: lokale Aufbewahrung (überstimmt den Container-Standard) und das Nextcloud-Ziel — Server-Adresse, Benutzername, App-Passwort (liegt im dateibasierten Secret-Store auf dem Secrets-Volume, nie in der Datenbank), Ordner, Upload-Zeitplan (nach jedem Backup / wöchentlich / manuell), entfernte Aufbewahrung und ein Verbindung testen-Knopf, der die Zugangsdaten prüft und den Ordner anlegt.
    • Wiederherstellung: listet lokale und Nextcloud-Sets; beim Wiederherstellen tippst du die Backup-ID zur Bestätigung ein, dann geht die Instanz in den Wartungsmodus, stellt sich wieder her und startet neu. Alles Weitere zu Backups (Spiegel auf einen privaten Host, Disaster Recovery) steht im Self-Hosting-Handbuch und im Restore-Runbook (beide englisch).
  • Audit-Log: administrative und Auth-Ereignisse (Zugriffsregeln, Mitglieder, Personenverwaltung, Kontingente, Plugins, Einstellungen, Einrichtung, Tokens, API-Schreibzugriffe, Backup-Aktionen) mit Filtern nach Akteur/Aktion/Zeit, 50 pro Seite.
  • Speicher: die zwanzig größten Teiche und die Instanz-Summe.

Health, Monitoring, Go-Live

  • GET /api/v1/readyz ist die Eigendiagnose der Instanz; überwache sie (Down-vs.-Degraded-Semantik und ein fertiges Monitor-Set: deploy/monitoring.md).
  • Go-Live-Checkliste für eine frische Produktionsinstanz: deploy/go-live.md.