Betriebsprofile¶
Kamerplanter ist modular aufgebaut. Du entscheidest selbst, welche Komponenten du brauchst — von einer schlanken Installation auf dem Raspberry Pi bis zum vollstaendigen Multi-Tenant-Setup auf Kubernetes. Diese Seite hilft dir, das richtige Profil fuer deinen Anwendungsfall zu finden.
Komponentenuebersicht¶
Jede Kamerplanter-Installation besteht aus einem Kern (immer erforderlich) und optionalen Komponenten, die du je nach Bedarf aktivierst.
Kern (immer aktiv)¶
| Komponente | Aufgabe |
|---|---|
| Backend (FastAPI) | REST-API, Geschaeftslogik, Phasensteuerung, Duengeplaene |
| Frontend (React) | Web-Oberflaeche |
| ArangoDB | Primaere Datenbank (Dokumente + Graph-Abfragen) |
| Valkey (Redis-kompatibel) | Cache und Celery-Broker |
| Celery Worker + Beat | Hintergrundaufgaben (Pflegeerinnerungen, Datenanreicherung, KI-Tipps) |
Optionale Komponenten¶
| Komponente | Aufgabe | Ressourcenbedarf | Konfiguration |
|---|---|---|---|
| Betriebsmodus | light = kein Login, ein Nutzer; full = JWT-Auth, Multi-Tenant | — | KAMERPLANTER_MODE |
| KI-Assistent | Pflegetipps, Diagnosen, Empfehlungen per Sprachmodell | 2--8 GB RAM (lokal) | AI_DEFAULT_PROVIDER |
| Ollama | Lokale Ausfuehrung von Sprachmodellen (kein Datentransfer) | 4--16 GB RAM, optional GPU | Docker-Profil ollama |
| Knowledge Service | RAG-Pipeline: Wissensbasis durchsuchen, Kontext anreichern | 512 MB RAM | Eigenes Deployment |
| VectorDB (pgvector) | Vektorspeicher fuer RAG-Embeddings | 256 MB RAM | VECTORDB_ENABLED |
| Embedding Service | ONNX-basierte Embedding-Berechnung (kein PyTorch) | 512 MB RAM | Eigenes Deployment |
| Reranker Service | Cross-Encoder Re-Ranking fuer hoehere RAG-Praezision (ADR-007) | 1,5–4 GB RAM | RERANKER_URL |
| TimescaleDB | Zeitreihendaten von Sensoren, automatisches Downsampling | 256--512 MB RAM | TIMESCALEDB_ENABLED |
| Home Assistant | Sensor- und Aktor-Integration (Temperatur, Luftfeuchte, Lampen) | Extern | HA_URL + HA_ACCESS_TOKEN |
| Externe Datenanreicherung | Pflanzendaten von GBIF und Perenual automatisch ergaenzen | — | PERENUAL_API_KEY |
Profile im Ueberblick¶
Die folgende Matrix zeigt fuenf vordefinierte Profile. Jedes Profil ist eine Empfehlung — du kannst jederzeit einzelne Komponenten hinzufuegen oder weglassen.
| Minimal | Hobby | Standard | Profi | SaaS | |
|---|---|---|---|---|---|
| Infrastruktur | Docker Compose | Docker Compose | Docker Compose / K8s | Kubernetes | Kubernetes |
| Betriebsmodus | Light | Light | Full | Full | Full |
| KI-Assistent | — | Ollama (lokal) | Ollama (lokal) | Ollama + Cloud-Fallback | Cloud (OpenAI / Anthropic) |
| Knowledge Service + RAG | — | — | Optional | Ja | Ja |
| Reranker Service | — | — | Optional | Optional | Ja |
| TimescaleDB | — | — | Optional | Ja | Ja |
| Home Assistant | — | Optional | Optional | Ja | Optional |
| Externe Anreicherung | — | Optional | Ja | Ja | Ja |
| Celery Worker | Ja | Ja | Ja | Ja | Ja |
| Zielgruppe | Raspberry Pi, Ausprobieren | Hobby-Gaertner, Home-Server | Engagierte Hobbyisten, kleine Gemeinschaftsgaerten | Indoor-Growing, grosse Gemeinschaftsgaerten | Managed Hosting, mehrere Mandanten |
| RAM gesamt | ~1 GB | ~3 GB | ~4 GB | ~6 GB | ~8 GB |
Minimal¶
Zielgruppe¶
Du willst Kamerplanter schnell ausprobieren oder hast nur wenige Zimmerpflanzen. Ein Raspberry Pi ⅘ oder ein alter Laptop reicht aus. Du brauchst weder Login noch KI.
Voraussetzungen¶
- Docker + Docker Compose
- 1 GB freier RAM, 2 GB Speicherplatz
- Raspberry Pi 4 (2 GB), Raspberry Pi 5, NUC, Laptop
Aktivierte Komponenten¶
- Backend + Frontend
- ArangoDB + Valkey
- Celery Worker + Beat
- KI-Assistent
- TimescaleDB
- Home Assistant
- Knowledge Service / RAG
Beispielkonfiguration¶
services:
arangodb:
image: arangodb:3.11
# ...
valkey:
image: valkey/valkey:8-alpine
# ...
backend:
build: ./src/backend
environment:
KAMERPLANTER_MODE: light
AI_DEFAULT_PROVIDER: none
TIMESCALEDB_ENABLED: "false"
VECTORDB_ENABLED: "false"
depends_on: [arangodb, valkey]
celery-worker:
build: ./src/backend
command: celery -A app.tasks worker --loglevel=info
depends_on: [arangodb, valkey]
celery-beat:
build: ./src/backend
command: celery -A app.tasks beat --loglevel=info
depends_on: [arangodb, valkey]
frontend:
build: ./src/frontend
environment:
KAMERPLANTER_MODE: light
depends_on: [backend]
Was fehlt im Vergleich zum naechsten Profil?¶
Ohne KI-Assistent bekommst du keine automatischen Pflegetipps und Diagnosen. Du kannst Ollama jederzeit spaeter hinzufuegen, ohne Daten zu verlieren.
Hobby¶
Zielgruppe¶
Du hast 10--50 Pflanzen und einen Home-Server (NAS, alter Desktop, NUC). Du moechtest KI-gestuetzte Pflegetipps, aber deine Daten sollen dein Netzwerk nicht verlassen. Login brauchst du nicht — du bist der einzige Nutzer.
Voraussetzungen¶
- Docker + Docker Compose
- 4 GB freier RAM (8 GB mit 7B-Modell), optional GPU
- Home-Server, NUC, Desktop-PC
Aktivierte Komponenten¶
- Backend + Frontend
- ArangoDB + Valkey
- Celery Worker + Beat
- Ollama (lokales Sprachmodell)
- Knowledge Service / RAG (optional aktivierbar)
- TimescaleDB
- Home Assistant (optional)
- Externe Anreicherung (optional)
Beispielkonfiguration¶
services:
# ... Kern wie Minimal ...
backend:
build: ./src/backend
environment:
KAMERPLANTER_MODE: light
AI_DEFAULT_PROVIDER: ollama
AI_OLLAMA_URL: http://ollama:11434
AI_OLLAMA_MODEL: gemma3:4b
TIMESCALEDB_ENABLED: "false"
depends_on: [arangodb, valkey]
ollama:
image: ollama/ollama:latest
volumes:
- ollama_models:/models
# GPU-Passthrough (optional):
# deploy:
# resources:
# reservations:
# devices:
# - capabilities: [gpu]
Modellwahl
Starte mit gemma3:4b — das laeuft auf den meisten Rechnern ab 2020 ohne GPU. Details zur Modellwahl findest du unter KI-Provider einrichten.
Was fehlt im Vergleich zum naechsten Profil?¶
Ohne Full-Modus kannst du keine weiteren Nutzer einladen. Ohne TimescaleDB werden Sensordaten nicht langfristig gespeichert. Beides laesst sich spaeter aktivieren.
Standard¶
Zielgruppe¶
Du bist engagierter Hobbyist oder betreibst einen kleinen Gemeinschaftsgarten. Mehrere Personen sollen eigene Konten haben. Du moechtest KI-Tipps und optional Sensordaten langfristig speichern.
Voraussetzungen¶
- Docker Compose oder Kubernetes-Cluster
- 4--6 GB freier RAM
- Server, NUC oder kleiner K8s-Cluster
Aktivierte Komponenten¶
- Backend + Frontend
- ArangoDB + Valkey
- Celery Worker + Beat
- Ollama (lokales Sprachmodell)
- Externe Anreicherung (GBIF + Perenual)
- Knowledge Service / RAG (optional)
- TimescaleDB (optional)
- Home Assistant (optional)
Beispielkonfiguration¶
services:
# ... Kern + Ollama ...
backend:
build: ./src/backend
environment:
KAMERPLANTER_MODE: full
AI_DEFAULT_PROVIDER: ollama
AI_OLLAMA_URL: http://ollama:11434
AI_OLLAMA_MODEL: gemma3:4b
JWT_SECRET_KEY: ${JWT_SECRET_KEY} # openssl rand -hex 32
PERENUAL_API_KEY: ${PERENUAL_API_KEY}
TIMESCALEDB_ENABLED: ${TIMESCALEDB_ENABLED:-false}
depends_on: [arangodb, valkey]
TimescaleDB nur bei Sensoren noetig
Wenn du keine Sensoren oder Home-Assistant-Anbindung planst, kannst du TimescaleDB weglassen. Manuelle Messwerte werden in ArangoDB gespeichert. TimescaleDB lohnt sich erst bei automatischer, hochfrequenter Datenerfassung.
Was fehlt im Vergleich zum naechsten Profil?¶
Ohne TimescaleDB kein automatisches Downsampling von Sensordaten. Ohne Home Assistant keine automatische Sensorerfassung und Aktorsteuerung. Ohne Knowledge Service / RAG keine kontextangereicherten KI-Antworten aus der Wissensbasis.
Profi¶
Zielgruppe¶
Du betreibst professionelles Indoor-Growing oder einen grossen Gemeinschaftsgarten mit Rollenverwaltung. Sensoren und Aktoren sind ueber Home Assistant angebunden. Du willst lueckenlose Zeitreihen, KI-gestuetzte Diagnosen mit RAG-Kontext und Cloud-Fallback fuer das Sprachmodell.
Voraussetzungen¶
- Kubernetes-Cluster (3+ Nodes empfohlen)
- 6--8 GB RAM fuer Kamerplanter-Pods
- Home Assistant Instanz im Netzwerk
- Optional: GPU-Node fuer schnellere KI-Inferenz
Aktivierte Komponenten¶
- Backend + Frontend
- ArangoDB + Valkey
- Celery Worker + Beat
- Ollama + Cloud-Fallback (OpenAI oder Anthropic)
- Knowledge Service + VectorDB + Embedding Service
- Reranker Service (Cross-Encoder Re-Ranking)
- TimescaleDB
- Home Assistant
- Externe Anreicherung (GBIF + Perenual)
Beispielkonfiguration¶
controllers:
backend:
containers:
main:
env:
KAMERPLANTER_MODE: full
AI_DEFAULT_PROVIDER: ollama
AI_OLLAMA_URL: http://ollama:11434
AI_OLLAMA_MODEL: mistral:7b
AI_FALLBACK_PROVIDER: openai
AI_OPENAI_API_KEY:
secretKeyRef:
name: kamerplanter-secrets
key: openai-api-key
TIMESCALEDB_ENABLED: "true"
TIMESCALEDB_HOST: timescaledb
HA_URL: http://homeassistant.home:8123
HA_ACCESS_TOKEN:
secretKeyRef:
name: kamerplanter-secrets
key: ha-access-token
PERENUAL_API_KEY:
secretKeyRef:
name: kamerplanter-secrets
key: perenual-api-key
timescaledb:
enabled: true
knowledge-service:
enabled: true
containers:
main:
env:
RERANKER_URL: "http://kamerplanter-ki-reranker-service:8081"
RERANKER_INITIAL_K: "20"
RERANKER_TOP_K: "5"
reranker-service:
enabled: true
containers:
main:
env:
RERANKER_MODEL: "bge-reranker-v2-m3"
embedding-service:
enabled: true
vectordb:
enabled: true
Secrets nicht in values.yaml
API-Keys und Tokens gehoeren in Kubernetes Secrets oder einen externen Secret-Manager (z.B. Sealed Secrets, External Secrets Operator). Verwende secretKeyRef in den Helm Values.
Was fehlt im Vergleich zum naechsten Profil?¶
Im Profi-Profil betreibst du eine einzelne Instanz fuer deine Organisation. Das SaaS-Profil fuegt Multi-Mandanten-Isolation, horizontale Skalierung und Cloud-KI als Primaerprovider hinzu.
SaaS / Multi-Tenant¶
Zielgruppe¶
Du betreibst Kamerplanter als Plattform fuer mehrere unabhaengige Mandanten (Gaerten, Betriebe, Gemeinschaften). Jeder Mandant hat eigene Daten, Rollen und Einstellungen. Du brauchst horizontale Skalierung und zuverlaessige Cloud-KI.
Voraussetzungen¶
- Kubernetes-Cluster mit Autoscaling
- 8+ GB RAM fuer Kamerplanter-Pods
- Managed-Datenbank-Dienste empfohlen (ArangoDB Oasis, Managed PostgreSQL)
- Cloud-KI-Provider-Konto (OpenAI oder Anthropic)
Aktivierte Komponenten¶
- Backend + Frontend (mehrere Replicas)
- ArangoDB + Valkey
- Celery Worker (mehrere Replicas) + Beat
- Cloud-KI (OpenAI / Anthropic)
- Knowledge Service + VectorDB + Embedding Service
- TimescaleDB
- Externe Anreicherung (GBIF + Perenual)
- Home Assistant (optional, mandantenspezifisch)
Beispielkonfiguration¶
controllers:
backend:
replicas: 3
containers:
main:
env:
KAMERPLANTER_MODE: full
AI_DEFAULT_PROVIDER: openai
AI_OPENAI_MODEL: gpt-4o-mini
TIMESCALEDB_ENABLED: "true"
celery-worker:
replicas: 2
frontend:
replicas: 2
Managed Datenbanken
Im SaaS-Betrieb empfiehlt sich der Einsatz von Managed-Datenbank-Diensten statt selbst betriebener Container. Das reduziert den Betriebsaufwand fuer Backups, Updates und Hochverfuegbarkeit erheblich.
Eigenes Profil zusammenstellen¶
Die Profile oben sind Empfehlungen. Du kannst jede Komponente einzeln aktivieren oder deaktivieren, indem du die entsprechenden Umgebungsvariablen setzt:
| Entscheidung | Variable | Werte |
|---|---|---|
| Login und Multi-Tenant? | KAMERPLANTER_MODE | light / full |
| KI-Pflegetipps? | AI_DEFAULT_PROVIDER | ollama, llamacpp, openai, anthropic, openai-compatible, none |
| Sensordaten-Zeitreihen? | TIMESCALEDB_ENABLED | true / false |
| RAG-Wissensbasis? | VECTORDB_ENABLED | true / false |
| Re-Ranking (hoehere Praezision)? | RERANKER_URL | HTTP-URL des Reranker-Service (leer = deaktiviert) |
| Home Assistant? | HA_URL + HA_ACCESS_TOKEN | URL + Token (leer = deaktiviert) |
| Pflanzendaten-Anreicherung? | PERENUAL_API_KEY | API-Key (leer = nur GBIF) |
In Docker Compose aktivierst du optionale Dienste ueber Profile:
# Nur Kern:
docker compose up -d
# Mit Ollama und TimescaleDB:
docker compose --profile ollama --profile timescaledb up -d
# Mit RAG (Knowledge Service + VectorDB + Reranker):
docker compose --profile ollama --profile timescaledb --profile vectordb up -d
Reranker im Docker-Compose-Profil vectordb
Der reranker-service ist dem Docker-Compose-Profil vectordb zugeordnet und wird zusammen mit Knowledge Service und VectorDB gestartet. Der Reranker ist ressourcenintensiver als Embedding Service und VectorDB — auf schwacher Hardware kann RERANKER_URL leer gelassen werden, um nur Hybrid Search ohne Re-Ranking zu nutzen.
Eine vollstaendige Liste aller Umgebungsvariablen findest du unter Umgebungsvariablen.
Entscheidungshilfe¶
Das folgende Flussdiagramm hilft dir, ein passendes Profil zu finden:
flowchart TD
A[Wie viele Nutzer?] -->|Nur ich| B{Brauchst du KI-Tipps?}
A -->|2-10 Personen| D{Kubernetes vorhanden?}
A -->|10+ / Mandanten| G[SaaS / Multi-Tenant]
B -->|Nein| C[Minimal]
B -->|Ja| E[Hobby]
D -->|Nein| F[Standard\nDocker Compose]
D -->|Ja| H{Sensoren / HA?}
H -->|Nein| F2[Standard\nKubernetes]
H -->|Ja| I[Profi] Haeufige Fragen¶
Kann ich spaeter auf ein groesseres Profil wechseln?¶
Ja. Alle Profile nutzen dieselbe Datenbank. Du kannst jederzeit Komponenten hinzufuegen (z.B. Ollama aktivieren, TimescaleDB starten, von Light auf Full wechseln), ohne Daten zu verlieren. Beim Wechsel von Light auf Full musst du einmalig ein Passwort fuer den bestehenden System-Benutzer setzen.
Kann ich Ollama auf einem Raspberry Pi ausfuehren?¶
Ja, ab dem Raspberry Pi 5 mit 8 GB RAM. Verwende ein kleines Modell wie llama3.2:3b. Die Antwortzeiten liegen bei 15--30 Sekunden pro Tipp — akzeptabel, aber nicht schnell. Auf dem Raspberry Pi 4 ist die Leistung fuer groessere Modelle nicht ausreichend.
Brauche ich TimescaleDB, wenn ich keine Sensoren habe?¶
Nein. Ohne automatische Sensordatenerfassung (IoT/MQTT oder Home Assistant) bringt TimescaleDB keinen Vorteil. Manuelle Messwerte (pH, EC) werden in ArangoDB gespeichert. Du kannst TimescaleDB spaeter aktivieren, wenn du Sensoren anbindest.
Was passiert, wenn ich keinen KI-Provider konfiguriere?¶
Kamerplanter funktioniert vollstaendig ohne KI. Wenn AI_DEFAULT_PROVIDER=none gesetzt ist (oder kein Provider konfiguriert), werden die KI-Tipp-Karten in der Oberflaeche nicht angezeigt. Alle regelbasierten Funktionen (Phasensteuerung, Duengeplaene, Pflegeerinnerungen) arbeiten unabhaengig vom KI-Provider.
Siehe auch¶
- Light-Modus — Details zum Betrieb ohne Authentifizierung
- KI-Provider einrichten — Ollama, OpenAI, Anthropic und andere Provider konfigurieren
- Home Assistant Integration — Sensor- und Aktor-Anbindung
- Umgebungsvariablen — Vollstaendige Variablenreferenz
- Kubernetes — Cluster-Setup und Deployment
- Infrastruktur — Skaffold-Profile — Skaffold-Module (
-m ki) fuer den KI-Stack