Fehlerbehebung¶
Lösungen zu häufigen Problemen bei Installation, Betrieb und Nutzung von Kamerplanter. Die Hinweise gelten für die Docker-Compose- und die Kubernetes-Umgebung.
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 | ArangoDB nicht erreichbar | ArangoDB-Container prüfen (docker compose ps) |
AUTH_EXCEPTION | Falsches ArangoDB-Passwort | ARANGODB_PASSWORD in .env prüfen |
redis.exceptions.ConnectionError | Redis/Valkey nicht erreichbar | Redis-Container neu starten |
pydantic_settings.SettingsError | Fehlende Pflicht-Umgebungsvariable | Alle Pflicht-Variablen in .env setzen |
Cannot import name 'X' | 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üfen Sie:
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üfen Sie 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
Prüfen Sie:
- 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 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üfen Sie 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:
- Navigieren Sie zu Pflanzenschutz > Behandlungsanwendungen.
- Prüfen Sie 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üfen Sie, ob alle Ernteindikatoren für die Pflanzenart konfiguriert sind. Navigieren Sie zu Stammdaten > [Art] > Ernteindikatoren und tragen Sie mindestens einen Indikator ein.
Kalender und iCal¶
iCal-Feed zeigt keine Ereignisse
Prüfen Sie:
- 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üfen Sie ob Ihre Kalenderanwendung Zeitzonen korrekt interpretiert.
Kalenderansicht lädt nicht oder zeigt keine Daten
Navigieren Sie zu Kalender und prüfen Sie:
- 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üfen Sie 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:
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üfen Sie:
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üfen Sie:
Alternativ: Frontend separat als Nginx-Container deployen.
Diagnosewerkzeuge¶
API-Gesundheit prüfen¶
ArangoDB direkt abfragen¶
Öffnen Sie http://localhost:8529 im Browser (Standard-Credentials: root / Wert aus ARANGO_ROOT_PASSWORD).