Fehlerbehebung
Dieser Leitfaden behandelt häufige Probleme und deren Lösungen. Für Diagnoseinformationen starten Sie immer mit:
docplatform doctor
Serverstart
Server startet nicht: „address already in use"
Ursache: Ein anderer Prozess belegt den konfigurierten Port.
Lösung:
# Herausfinden, was Port 3000 belegt
lsof -i :3000 # macOS/Linux
ss -tlnp | grep 3000 # Linux
# Option 1: Den anderen Prozess stoppen
# Option 2: Einen anderen Port verwenden
docplatform serve --port 8080
Server startet nicht: „permission denied"
Ursache: Der Prozess hat keine Lese-/Schreibrechte für das Datenverzeichnis.
Lösung:
# Eigentümer prüfen
ls -la .docplatform/
# Eigentümer korrigieren (wenn als docplatform-Benutzer ausgeführt)
sudo chown -R docplatform:docplatform .docplatform/
# Berechtigungen korrigieren
chmod 700 .docplatform/
Server startet nicht: „database is locked"
Ursache: Ein anderer DocPlatform-Prozess läuft, oder ein vorheriger Prozess wurde nicht sauber heruntergefahren.
Lösung:
# Auf andere docplatform-Prozesse prüfen
ps aux | grep docplatform
# Wenn ein Prozess hängt, beenden
kill -SIGTERM <pid>
# Wenn die Lock-Datei nach dem Ende aller Prozesse bestehen bleibt
# SQLite WAL-Modus handhabt dies automatisch beim Neustart
docplatform serve
Git-Synchronisation
„Permission denied (publickey)" bei Git-Synchronisation
Ursache: Der SSH-Schlüssel ist nicht konfiguriert oder hat keinen Zugriff auf das Repository.
Lösung:
-
Überprüfen Sie, ob der Schlüssel existiert:
ls -la $GIT_SSH_KEY_PATH -
Überprüfen Sie, ob der Schlüssel zu den Deploy-Keys des Repositories hinzugefügt wurde:
ssh -T -i $GIT_SSH_KEY_PATH [email protected] -
Stellen Sie sicher, dass der Schreibzugriff auf dem Deploy-Key aktiviert ist (erforderlich zum Pushen)
Git-Synchronisation zeigt „no changes", aber Dateien wurden aktualisiert
Ursache: Änderungen wurden an Dateien außerhalb des docs/-Verzeichnisses vorgenommen, das DocPlatform nicht indiziert.
Lösung: Stellen Sie sicher, dass Ihre Markdown-Dateien im docs/-Verzeichnis des Workspace liegen. Dateien in anderen Verzeichnissen werden in Git beibehalten, aber nicht von DocPlatform verfolgt.
Konflikt: HTTP 409 beim Speichern
Ursache: Die Seite wurde von einem anderen Benutzer oder über einen Git-Push zwischen Ihrem Laden und Speichern geändert.
Lösung:
- Die Web-Oberfläche zeigt ein Konflikt-Banner mit beiden Versionen
- Klicken Sie auf Download both, um beide Dateien herunterzuladen
- Führen Sie die Änderungen manuell zusammen
- Speichern Sie die zusammengeführte Version
Vorbeugung:
- Aktivieren Sie Webhooks für schnellere Synchronisation (verkleinertes Konfliktfenster)
- Verwenden Sie Präsenzindikatoren, um zu sehen, wer was bearbeitet
- Weisen Sie Seitenverantwortung zu, um gleichzeitige Bearbeitungen zu vermeiden
Git-Push schlägt fehl: „remote rejected"
Ursache: Der Deploy-Key hat keinen Schreibzugriff, oder Branch-Schutzregeln verhindern direkte Pushes.
Lösung:
- Überprüfen Sie, ob der Deploy-Key Schreibzugriff in Ihren Repository-Einstellungen hat
- Prüfen Sie Branch-Schutzregeln — DocPlatform pusht direkt auf den konfigurierten Branch
- Wenn Branch-Schutz erforderlich ist, konfigurieren Sie DocPlatform so, dass es auf einen ungeschützten Branch pusht
Authentifizierung
„401 Unauthorized" bei jeder Anfrage
Ursache: Der JWT-Access-Token ist abgelaufen (standardmäßig 15 Minuten Lebensdauer).
Lösung: Der Web-Editor handhabt die Token-Aktualisierung automatisch. Wenn Sie die API direkt verwenden, rufen Sie den Refresh-Endpunkt auf:
curl -X POST http://localhost:3000/api/v1/auth/refresh \
-H "Content-Type: application/json" \
-d '{"refresh_token": "your-refresh-token"}'
Anmeldung nach JWT-Schlüsselrotation nicht möglich
Ursache: Alle Token wurden invalidiert, als der JWT-Schlüssel gelöscht und neu generiert wurde.
Lösung: Dies ist das erwartete Verhalten. Alle Benutzer müssen sich nach einer Schlüsselrotation erneut anmelden. Löschen Sie Ihre Browser-Cookies/Speicher und melden Sie sich mit Ihrem Passwort an.
OIDC-Anmeldung leitet zu einer Fehlerseite weiter
Ursache: Die OAuth-Callback-URL stimmt nicht mit der in Google/GitHub konfigurierten überein.
Lösung:
- Prüfen Sie die Callback-URL in den Einstellungen Ihres OAuth-Anbieters
- Sie sollte lauten:
https://your-domain.com/api/v1/auth/callback/google(oder/github) - Stellen Sie sicher, dass die Umgebungsvariablen
OIDC_*_CLIENT_IDundOIDC_*_CLIENT_SECRETkorrekt gesetzt sind - Starten Sie den Server nach dem Ändern von OIDC-Umgebungsvariablen neu
Erster Benutzer ist nicht Super Admin
Ursache: Die Datenbank enthielt bereits Benutzerdatensätze aus einer vorherigen Installation.
Lösung:
# WARNUNG: Dies löscht alle Daten
docplatform serve # zuerst stoppen
rm .docplatform/data.db
docplatform serve
# Registrieren Sie Ihr Admin-Konto
Tun Sie dies nur bei einer Neuinstallation. Für bestehende Installationen verwenden Sie die Datenbank, um Benutzerrollen direkt zu aktualisieren (fortgeschritten).
Suche
Suche gibt keine Ergebnisse zurück
Ursache: Der Suchindex ist möglicherweise leer oder nicht synchron.
Lösung:
# Suchstatus prüfen
docplatform doctor
# Wenn der Index nicht synchron ist, neu aufbauen
docplatform rebuild
Suchergebnisse sind veraltet (spiegeln aktuelle Bearbeitungen nicht wider)
Ursache: Der asynchrone Indizierungsjob wurde noch nicht verarbeitet (typischerweise < 1 Sekunde Verzögerung).
Lösung: Warten Sie einen Moment und versuchen Sie es erneut. Wenn das Problem weiterhin besteht:
- Prüfen Sie die Server-Logs auf Indizierungsfehler
- Führen Sie
docplatform rebuildaus, um eine vollständige Neuindizierung zu erzwingen
Suche ist langsam
Ursache: Sehr große Workspaces (1000+ Seiten) mit komplexen Abfragen.
Lösung:
- Verwenden Sie spezifischere Suchbegriffe
- Verwenden Sie Tag-Filter, um den Bereich einzugrenzen
- Zukünftige Releases werden Meilisearch für Hochleistungssuche unterstützen
Datenwiederherstellung
Seite versehentlich gelöscht
Option 1: Git-Historie (wenn Git-Synchronisation aktiviert ist)
cd .docplatform/workspaces/{id}/docs/
git log --all -- path/to/deleted-page.md
git checkout <commit-hash> -- path/to/deleted-page.md
Führen Sie dann docplatform rebuild aus, um neu zu indizieren.
Option 2: Datenbank-Backup
# Backups auflisten
ls .docplatform/backups/
# Aus Backup wiederherstellen (Server vorher stoppen)
cp .docplatform/backups/{latest}.db .docplatform/data.db
docplatform serve
Datenbank ist beschädigt
Lösung:
- Server stoppen
- Nach einem aktuellen Backup suchen:
ls -la .docplatform/backups/ - Aus Backup wiederherstellen:
cp .docplatform/backups/{latest}.db .docplatform/data.db - Wenn kein Backup verfügbar ist, aus dem Dateisystem neu aufbauen:
rm .docplatform/data.db docplatform rebuild - Server starten
Das Dateisystem (.md-Dateien) ist die Quelle der Wahrheit. Selbst wenn die Datenbank verloren geht, erstellt rebuild sie aus Ihren Dateien neu.
JWT-Schlüssel verloren
Ursache: Die jwt-key.pem-Datei wurde gelöscht.
Auswirkung: Alle Benutzersitzungen werden invalidiert. Benutzer müssen sich erneut anmelden.
Lösung: Starten Sie den Server — ein neuer Schlüssel wird automatisch generiert. Keine Daten gehen verloren, aber alle Benutzer müssen sich erneut authentifizieren.
Frontmatter-Fehler
Seite wird nach Frontmatter-Bearbeitung unzugänglich
Ursache: Ungültiges YAML im Frontmatter-Block. DocPlatform verwendet standardmäßig den Strict-Modus — wenn das Frontmatter-Parsing fehlschlägt, wird die Seite auf Admin-only-Zugriff beschränkt, um zu verhindern, dass ein YAML-Tippfehler versehentlich eine private Seite öffentlich macht.
Symptome:
- Seite verschwindet aus Suchergebnissen
- Seite wird aus veröffentlichter Dokumentation ausgeschlossen
- Nicht-Admin-Benutzer erhalten 403 Forbidden
- Admin sieht ein Warnbanner auf der Seite
Lösung:
- Melden Sie sich als Admin oder Super Admin an
- Öffnen Sie die betroffene Seite im Web-Editor
- Wechseln Sie zum Raw-Markdown-Modus (
</>Umschalter) - Korrigieren Sie das YAML-Frontmatter (häufige Probleme: fehlende Anführungszeichen bei Werten mit Doppelpunkten, falsche Einrückung, nicht geschlossene Klammern)
- Speichern — die Seite wird neu indiziert und der Zugriff wiederhergestellt
Wenn Sie keinen Zugriff auf den Web-Editor haben, korrigieren Sie die Datei direkt auf der Festplatte:
# Markdown-Datei bearbeiten
nano .docplatform/workspaces/{id}/docs/{path-to-page}.md
# Neu aufbauen, um zu reindizieren
docplatform rebuild
Frontmatter-Fehlermodi verstehen
| Modus | Verhalten bei ungültigem YAML | Wann zu verwenden |
|---|---|---|
| Strict (Standard) | Seite auf Admin beschränkt, aus Suche und veröffentlichter Dokumentation ausgeschlossen | Produktion — verhindert versehentliche Freigabe |
| Lenient | Zuletzt bekanntes gültiges Frontmatter aus der Datenbank beibehalten, Warnung anzeigen | Entwicklung — weniger Unterbrechung beim Bearbeiten |
Der Strict-Modus stellt sicher, dass ein YAML-Tippfehler niemals versehentlich eine eingeschränkte Seite öffentlich macht. Dies ist ein bewusstes Sicherheitsdesign.
Speicherplatz
„Low disk space"-Warnung von Doctor
Ursache: DocPlatform warnt, wenn der freie Speicherplatz unter 1 GB fällt.
Auswirkung: SQLite benötigt freien Speicherplatz für WAL (Write-Ahead-Log)-Operationen. Wenn die Festplatte vollständig gefüllt ist, schlagen Schreibvorgänge fehl und Daten können beschädigt werden.
Lösung:
- Festplattennutzung prüfen:
df -h - Alte Backups bereinigen:
BACKUP_RETENTION_DAYSreduzieren oder alte Dateien in{DATA_DIR}/backups/manuell löschen - Datenverzeichnis auf eine größere Festplatte verschieben:
DATA_DIRaktualisieren und das Verzeichnis verschieben - Bei Docker die Volume-Größe erhöhen
Leistung
Hoher Speicherverbrauch
Erwartet: < 80 MB im Leerlauf, < 200 MB unter Last.
Wenn der Speicherverbrauch 200 MB überschreitet:
- Prüfen Sie die Anzahl aktiver WebSocket-Verbindungen
- Prüfen Sie die Workspace-Anzahl und Gesamtseitenanzahl
- Große Git-Repositories (>5.000 Dateien) verbrauchen mehr Speicher — die hybride Engine wechselt automatisch zur nativen Git-CLI, wenn go-git 512 MB RSS überschreitet
Langsame Seiten-Renders
Erwartet: < 50ms p99.
Wenn Seiten-Renders langsam sind:
- Prüfen Sie die Festplatten-I/O — SQLite-Leistung hängt von der Festplattengeschwindigkeit ab
- Verwenden Sie eine SSD für das Datenverzeichnis
- Prüfen Sie, ob die Datenbankdatei auf einem Netzwerk-Dateisystem (NFS/CIFS) liegt — auf lokale Festplatte verschieben
Hilfe erhalten
Wenn Sie ein Problem nicht lösen können:
- Führen Sie
docplatform doctor --bundleaus, um ein Diagnose-Bundle zu generieren - Prüfen Sie die Server-Logs auf Fehlermeldungen
- Erstellen Sie ein Issue auf GitHub mit dem Diagnose-Bundle und relevanten Log-Einträgen
Das Diagnose-Bundle enthält keine Seiteninhalte, Passwörter oder API-Token — nur strukturelle Metadaten und Konfiguration (mit geschwärzten Secrets).