Betriebs-Fehlerbehebung¶
Lösungen zu häufigen technischen Problemen bei Installation, Betrieb und Nutzung von Kamerplanter — für Entwickler und Self-Hoster. Die Hinweise gelten für die Docker-Compose- und die Kubernetes-Umgebung.
Suchst du Hilfe zu einer kranken Pflanze?
Diese Seite behandelt technische Probleme der Kamerplanter-Anwendung selbst (Installation, Login, Fehlermeldungen). Geht es stattdessen um Symptome an einer deiner Pflanzen (gelbe Blätter, Schädlinge, Wachstumsprobleme), findest du Hilfe unter Meiner Pflanze geht es schlecht.
Backend und Dienste starten nicht¶
Das Backend startet nicht — wie diagnostiziere ich das Problem?
Schritt 1 — Logs prüfen:
Typische Fehlermeldungen und Lösungen:
| Fehlermeldung | Ursache | Lösung |
|---|---|---|
Connection refused: arangodb:8529 (Verbindung verweigert) | ArangoDB nicht erreichbar | ArangoDB-Container prüfen (docker compose ps) |
AUTH_EXCEPTION | Falsches ArangoDB-Passwort | ARANGODB_PASSWORD in .env prüfen |
redis.exceptions.ConnectionError (Verbindungsfehler) | Redis/Valkey nicht erreichbar | Redis-Container neu starten |
pydantic_settings.SettingsError | Fehlende Pflicht-Umgebungsvariable | Alle Pflicht-Variablen in .env setzen |
Cannot import name 'X' (Importfehler) | Fehlende Python-Abhängigkeit | pip install -r requirements.txt im Container |
ArangoDB-Container startet nicht
Häufigste Ursache ist ein Datenvolume aus einer alten ArangoDB-Version. Prüfe:
Wenn "Invalid version" oder "upgrade required" erscheint:
Datenverlust
Das Löschen des Volumes löscht alle Datenbankdaten. Nur in Entwicklungsumgebungen ohne wichtige Daten durchführen.
Celery-Worker läuft nicht — Aufgaben werden nicht generiert
Prüfe den Worker-Status:
Häufige Ursache: REDIS_URL nicht gesetzt oder Redis nicht erreichbar. Redis-Verbindung testen:
Datenbankprobleme¶
Datenbank-Collections fehlen oder Fehler 'collection not found'
Kamerplanter legt beim Start automatisch alle Collections an. Wenn Collections fehlen, wurde der Startup-Hook nicht ausgeführt. Backend neu starten:
Alternativ in der ArangoDB-Web-UI (Standard: http://localhost:8529) prüfen, ob die Datenbank kamerplanter und der Graph kamerplanter_graph existieren.
Migration schlägt fehl — Seed-Daten werden nicht geladen
Kamerplanter führt Seed-Migrationen beim Startup aus (seed_data, seed_starter_kits, seed_location_types). Bei Fehler im Log:
- Vollständigen Stack-Trace aus den Backend-Logs entnehmen.
- Häufige Ursache: ArangoDB startet langsamer als das Backend — Healthcheck-Intervall erhöhen oder depends_on mit
condition: service_healthynutzen. - Backend erneut starten nach vollständig gestartetem ArangoDB.
AQL-Query schlägt fehl mit 'graph not found'
Der Named Graph kamerplanter_graph wird beim ersten Start erstellt. Wenn er fehlt, wurde die ensure_collections()-Initialisierung übersprungen. Backend neu starten oder manuell in der ArangoDB-Web-UI unter "Graphs" den Graph anlegen.
Authentifizierung und Benutzer¶
Login schlägt fehl — 401 Unauthorized (keine Berechtigung)
Prüfe:
- Korrekte E-Mail und Passwort? Demo-Account:
demo@kamerplanter.local/demo-passwort-2024 - E-Mail-Verifikation erforderlich? Wenn
REQUIRE_EMAIL_VERIFICATION=truegesetzt ist, muss die E-Mail bestätigt sein. In der Entwicklungsumgebung auffalsesetzen. - JWT-Schlüssel geändert? Alle aktiven Tokens verlieren ihre Gültigkeit. Neu anmelden.
Registrierung schlägt fehl — 'Email already registered'
Die E-Mail-Adresse existiert bereits im System. Passwort-zurücksetzen verwenden oder die E-Mail in der ArangoDB-Web-UI unter users-Collection prüfen.
Token abgelaufen — ständige Abmeldungen
JWT-Access-Token läuft nach 15 Minuten ab (Standard). Der Frontend-Client erneuert den Token automatisch per Refresh-Token (gültig 30 Tage). Wenn Refresh-Token-Erneuerung fehlschlägt:
JWT_SECRET_KEYin der Umgebung prüfen — wenn dieser Wert geändert wurde, werden alle Refresh-Tokens ungültig.- Browser-Cookies prüfen — HttpOnly-Cookie
refresh_tokenmuss gesetzt sein.
CORS-Fehler im Browser¶
CORS-Fehler bei API-Aufrufen aus dem Browser
CORS-Fehler (Zugriffssperre durch Browser-Sicherheitsrichtlinie) erscheinen in der Browser-Konsole als:
Lösung: Den Origin des Frontend in CORS_ORIGINS eintragen:
Format: JSON-Array als String. Mehrere Einträge durch Komma trennen.
Keine Wildcards in Produktion
CORS_ORIGINS=["*"] erlaubt alle Origins — nur für lokale Entwicklung geeignet. In Produktionsumgebungen immer konkrete URLs angeben.
CORS-Fehler trotz korrekter CORS_ORIGINS-Konfiguration
Prüfe den tatsächlich gesendeten Origin-Header:
- Browser DevTools → Network → Request-Header →
Origin - Diesen Wert exakt (inkl.
http://vs.https://und Port) inCORS_ORIGINSeintragen. - Backend neu starten nach Konfigurationsänderung.
Ernte und IPM¶
Ernte wird blockiert (422 Karenzzeit-Verletzung)
Eine aktive IPM-Behandlung hat eine offene Karenzzeit (Pre-Harvest Interval). Die Ernte ist bis zum Ende der Karenzzeit gesperrt.
Vorgehen:
- Navigiere zu Pflanzenschutz > Behandlungsanwendungen.
- Prüfe aktive Behandlungen mit dem Status "aktiv" oder "karenzzeit".
- Das System zeigt das früheste mögliche Erntedatum an.
Karenzzeit nicht umgehen
Die Karenzzeit ist eine gesetzliche Anforderung (CanG, PflSchG). Das System verhindert die Ernte bewusst — eine manuelle Umgehung ist nicht vorgesehen.
Beobachtung kann nicht als Erntereif markiert werden
Prüfe, ob alle Ernteindikatoren für die Pflanzenart konfiguriert sind. Navigiere zu Stammdaten > [Art] > Ernteindikatoren und trage mindestens einen Indikator ein.
Kalender und iCal¶
iCal-Feed zeigt keine Ereignisse
Prüfe:
- Feed-Token gültig? Unter Kalender > iCal-Feeds prüfen ob der Feed aktiv ist.
- Kalender-App: URL muss das Format
https://[host]/api/v1/calendar/ical/[token]haben. - Zeitzone: iCal-Feeds verwenden UTC. Prüfe ob deine Kalenderanwendung Zeitzonen korrekt interpretiert.
Kalenderansicht lädt nicht oder zeigt keine Daten
Navigiere zu Kalender und prüfe:
- Sind Pflanzdurchläufe oder Aufgaben im gewählten Zeitraum vorhanden?
- Sind die Filter (Phase, Kategorie) zu eng gesetzt?
- Backend-API-Fehler in den Browser DevTools (F12 → Network →
/api/v1/...)?
Onboarding-Wizard¶
Onboarding-Wizard schlägt in Schritt 3 (Starter-Kit) fehl
Prüfe ob Starter-Kit-Seeddaten geladen wurden:
Wenn "0 starter kits loaded" erscheint, Seed-Migration manuell auslösen:
Nach dem Onboarding erscheint kein Mandant in der Auswahl
Der persönliche Mandant wird automatisch bei der Registrierung erstellt. Falls er fehlt:
GET /api/v1/t/— prüfen ob der Tenant-Endpoint Daten zurückliefert.- Falls leer: Onboarding erneut durchlaufen oder Mandant manuell unter Einstellungen > Mandanten anlegen.
Leistungs- und Verbindungsprobleme¶
API-Anfragen sind langsam (> 2 Sekunden)
Häufige Ursachen:
| Ursache | Prüfung | Lösung |
|---|---|---|
| ArangoDB-Index fehlt | ArangoDB-Web-UI → Collection → Indexes | ensure_collections() erneut ausführen |
| Zu viele Graph-Traversal-Schritte | AQL EXPLAIN-Query in Web-UI | Query-Tiefe reduzieren |
| Redis-Cache kalt | Erste Anfrage nach Neustart | Normal — Cache wärmt sich auf |
503 Service Unavailable beim Zugriff auf die API
Der Backend-Container läuft nicht oder besteht den Healthcheck nicht:
docker compose ps
# Status "unhealthy" oder "Exit X" → Container neu starten
docker compose up -d backend
Healthcheck-Endpunkt direkt prüfen:
Kubernetes: Pod startet nicht¶
Pod im Status 'CrashLoopBackOff'
CrashLoopBackOff (Kubernetes-Fehler: Container startet wiederholt und schlägt fehl) bedeutet, dass der Container kurz nach dem Start abstürzt. Logs des letzten Absturzes abrufen:
Häufige Ursachen: fehlende Umgebungsvariablen, Datenbankverbindung nicht erreichbar oder fehlerhafte Konfigurationsdatei. Die Fehlermeldung im Log gibt in der Regel den genauen Grund an.
Light-Modus vs. Full-Modus¶
Authentifizierung wird trotz Light-Modus verlangt
Im Light-Modus (KAMERPLANTER_MODE=light) entfällt die Token-Authentifizierung für die meisten Endpunkte. Prüfe:
KAMERPLANTER_MODE=lightin der Backend-Umgebung gesetzt?- Backend nach der Änderung neu gestartet?
- Anfrage geht tatsächlich an den Backend-Port (8000) und nicht an einen Proxy?
Häufige Fehler nach Update¶
Nach einem Versions-Update schlagen Datenbankabfragen fehl
Bei neuen Collections oder Kanten-Definitionen aktualisiert ensure_collections() den Graphen. Falls alte Collections fehlen oder neue hinzugekommen sind:
- Backend-Logs auf Startup-Fehler prüfen.
- Sicherstellen, dass der Backend-Container beim Update vollständig neugestartet wurde.
- ArangoDB-Collections manuell über die Web-UI prüfen.
Frontend zeigt '404 Not Found' nach Deployment
Bei Kubernetes-Deployments wird der Frontend-Build als Static Files durch das Backend ausgeliefert. Prüfe:
Alternativ: Frontend separat als Nginx-Container deployen.
Diagnosewerkzeuge¶
API-Gesundheit prüfen¶
ArangoDB direkt abfragen¶
Öffne http://localhost:8529 im Browser (Standard-Credentials: root / Wert aus ARANGO_ROOT_PASSWORD).
Backend-Logs mit Zeitstempel¶
Alle Dienste-Status anzeigen¶
Siehe auch¶
- Umgebungsvariablen
- Lokales Setup
- Deployment
- Meiner Pflanze geht es schlecht — Symptom-Diagnose für Pflanzenprobleme statt technischer Fehler