Erstes Deployment¶
Du hast Kamerplanter im Schnellstart ausprobiert und möchtest es jetzt dauerhaft betreiben? Diese Anleitung zeigt dir, wie du Kamerplanter auf einem eigenen Server einrichtest — zum Beispiel auf einem Raspberry Pi, einem NAS oder einem Heimserver.
Unterschied zum Schnellstart¶
Im Schnellstart hast du Kamerplanter aus dem Quellcode gebaut (docker compose up). Für den Dauerbetrieb nutzt du stattdessen fertig gebaute Images — das ist schneller, braucht weniger Speicher und du musst den Quellcode nicht auf dem Server haben.
| Schnellstart | Dauerbetrieb | |
|---|---|---|
| Docker Compose Datei | docker-compose.yml | docker-compose.release.yml |
| Images | Werden lokal gebaut | Fertig aus der Registry |
| Quellcode nötig? | Ja | Nein |
| Neustart bei Absturz | Manuell | Automatisch |
| Geeignet für | Ausprobieren, Entwicklung | Dauerbetrieb |
Voraussetzungen¶
- Ein Server mit Docker und Docker Compose (siehe Installation)
- Mindestens 2 GB RAM (4 GB empfohlen)
- Stabile Netzwerkverbindung für den Download der Images
1. Projektdateien herunterladen¶
Du brauchst nur zwei Dateien vom Repository — nicht den gesamten Quellcode:
# Verzeichnis erstellen
mkdir -p ~/kamerplanter && cd ~/kamerplanter
# Die beiden benötigten Dateien herunterladen
curl -O https://raw.githubusercontent.com/nolte/kamerplanter/main/docker-compose.release.yml
curl -O https://raw.githubusercontent.com/nolte/kamerplanter/main/.env.example
2. Konfiguration erstellen¶
Öffne die .env-Datei und setze sichere Passwörter:
# Sichere Passwörter generieren: openssl rand -base64 24
ARANGO_ROOT_PASSWORD=hier-sicheres-passwort-einsetzen
ARANGODB_PASSWORD=hier-sicheres-passwort-einsetzen
# Standardwerte — nur bei Bedarf ändern
ARANGODB_DATABASE=kamerplanter
ARANGODB_USERNAME=root
REDIS_URL=redis://valkey:6379/0
DEBUG=false
REQUIRE_EMAIL_VERIFICATION=false
CORS_ORIGINS=["http://localhost:8080"]
Passwörter
Verwende nicht die Beispielpasswörter aus .env.example. Generiere sichere Passwörter, z.B. mit openssl rand -base64 24. Beide Passwort-Felder (ARANGO_ROOT_PASSWORD und ARANGODB_PASSWORD) müssen identisch sein.
3. Version festlegen¶
In der Datei docker-compose.release.yml steht als Platzhalter __VERSION__. Ersetze ihn durch die gewünschte Version:
Welche Version soll ich nehmen?
Verwende die neueste stabile Version. Die verfügbaren Versionen findest du auf der Releases-Seite des Projekts.
4. Starten¶
Prüfe den Status:
Alle Dienste sollten nach 30–60 Sekunden als running oder healthy angezeigt werden.
5. Zugriff testen¶
Öffne im Browser:
- Kamerplanter: http://dein-server:8080
- API-Dokumentation: http://dein-server:8000/api/v1/docs
Ersetze dein-server durch die IP-Adresse oder den Hostnamen deines Servers. Wenn du auf dem Server selbst arbeitest, funktioniert localhost.
Automatischer Neustart¶
Die Release-Konfiguration enthält bereits restart: unless-stopped für alle Dienste. Das bedeutet:
- Nach einem Serverabsturz oder Neustart startet Docker die Dienste automatisch
- Dienste, die du bewusst mit
docker compose stopanhältst, bleiben gestoppt
Damit Docker selbst nach einem Neustart automatisch startet:
Updates durchführen¶
So aktualisierst du Kamerplanter auf eine neue Version:
cd ~/kamerplanter
# 1. Version in der Compose-Datei aktualisieren
sed -i 's/alte-version/neue-version/g' docker-compose.release.yml
# 2. Neue Images herunterladen und Dienste neu starten
docker compose -f docker-compose.release.yml pull
docker compose -f docker-compose.release.yml up -d
# 3. Alte, nicht mehr benötigte Images aufräumen (optional)
docker image prune -f
Daten bleiben erhalten
Deine Pflanzen, Standorte und alle anderen Daten werden in Docker Volumes gespeichert und überleben Updates problemlos.
Datensicherung¶
Die Daten von Kamerplanter liegen in zwei Docker Volumes:
arangodb_data— Alle Pflanzen, Standorte, Aufgaben und Konfigurationenvalkey_data— Cache und Aufgaben-Warteschlange (nicht kritisch, wird automatisch neu aufgebaut)
Sicherung erstellen¶
# ArangoDB-Daten sichern
docker compose -f docker-compose.release.yml exec arangodb \
arangodump --server.password "$ARANGO_ROOT_PASSWORD" \
--output-directory /tmp/backup --overwrite true
# Backup aus dem Container kopieren
docker compose -f docker-compose.release.yml cp \
arangodb:/tmp/backup ./backup-$(date +%Y%m%d)
Sicherung wiederherstellen¶
# Backup in den Container kopieren
docker compose -f docker-compose.release.yml cp \
./backup-20260317 arangodb:/tmp/backup
# Daten wiederherstellen
docker compose -f docker-compose.release.yml exec arangodb \
arangorestore --server.password "$ARANGO_ROOT_PASSWORD" \
--input-directory /tmp/backup --overwrite true
Regelmäßige Backups
Richte einen Cronjob ein, der die Sicherung automatisch durchführt — zum Beispiel täglich um 3:00 Uhr nachts. So verlierst du im schlimmsten Fall maximal einen Tag an Daten.
Zugriff von anderen Geräten¶
Standardmäßig ist Kamerplanter nur über den Server selbst erreichbar. Um von Smartphone, Tablet oder anderen Rechnern im Heimnetz zuzugreifen:
-
Finde die IP-Adresse deines Servers:
-
Öffne auf dem anderen Gerät den Browser und gehe zu
http://<IP-Adresse>:8080 -
Passe die CORS-Einstellung in
.envan, damit die API Anfragen von der neuen Adresse akzeptiert: -
Starte die Dienste nach der Änderung neu:
Nächste Schritte¶
- Onboarding-Wizard — Deine ersten Pflanzen einrichten
- Benutzerhandbuch — Alle Funktionen im Detail
- Kubernetes-Deployment — Für professionelle Umgebungen mit Hochverfügbarkeit
Fehlerbehebung¶
Die Seite lädt nicht (Verbindung abgelehnt)
Prüfe, ob alle Dienste laufen: docker compose -f docker-compose.release.yml ps. Falls der Frontend-Dienst nicht läuft, prüfe die Logs: docker compose -f docker-compose.release.yml logs frontend.
Backend meldet 'Connection refused' zur Datenbank
ArangoDB braucht beim ersten Start etwas länger. Warte 30 Sekunden und prüfe erneut. Falls der Fehler bleibt: Stimmen die Passwörter in .env überein? ARANGO_ROOT_PASSWORD und ARANGODB_PASSWORD müssen identisch sein.
Zugriff von anderem Gerät funktioniert nicht
Prüfe: (1) Sind beide Geräte im gleichen Netzwerk? (2) Stimmt die IP-Adresse? (3) Ist die CORS-Einstellung in .env angepasst? (4) Blockiert eine Firewall Port 8080?
Wie viel Speicherplatz braucht Kamerplanter langfristig?
Die Docker-Images belegen ca. 2 GB. Die Datenbank wächst je nach Nutzung — für einen typischen Heimanwender mit bis zu 100 Pflanzen bleiben die Daten unter 100 MB. Sensorik-Daten können bei aktivierter Aufzeichnung schneller wachsen.