# Nur die Erkennung: der Rechner mit Sichtverbindung zur Kamera, der an eine # Sammlung woanders liefert. # # cp .env.beispiel .env # Abschnitt "Nur der Detector" ausfuellen # docker compose -f docker-compose.detector.yml up -d # # Der typische Fall: Die Sammlung steht oeffentlich im Internet, die Kameras # stehen zu Hause. Dieser Container gehoert ins Heimnetz, in dasselbe Netz wie # die Kamera. # # 🔑 **Nach aussen muss dafuer kein Port offen sein.** Die Verbindung geht nur # in eine Richtung: Der Detector meldet ausgehend an die Sammlung, die # Sammlung erreicht ihn nie. Kein Portforwarding, kein Tunnel, kein DynDNS. # # ⚠️ Architektur: ai-edge-litert gibt es als Wheel fuer x86_64 und arm64. Ein # Raspberry Pi 4/5 mit 64-Bit-System traegt den Detector, ein Pi Zero nicht — # dem fehlt nicht das Wheel, sondern die Rechenleistung. # # Fuer mehrere Kameras: diese Datei je Kamera mit eigenem Projektnamen und # eigenem Token starten, siehe docs/betrieb.md. name: vogelalbum-detector services: detector: build: context: . dockerfile: Dockerfile.detector restart: unless-stopped environment: VOGELALBUM_SOURCE: ${VOGELALBUM_SOURCE:?Stream-URL der Kamera, siehe .env.beispiel} # Wohin gemeldet wird. Anders als bei docker-compose.heim.yml steht die # Sammlung hier NICHT im selben Compose-Netz, also die volle Adresse — # mit https://, wenn sie oeffentlich steht. VOGELALBUM_API: ${VOGELALBUM_API:?Adresse der Sammlung, z.B. https://vogelalbum.example.org} # Der Token DIESER Kamera, angelegt mit 'manage.py camera add'. Auf # einer oeffentlichen Instanz hat jede Kamera ihren eigenen; der # gemeinsame VOGELALBUM_INGEST_TOKEN bleibt dort leer. VOGELALBUM_TOKEN: ${VOGELALBUM_TOKEN:?Token dieser Kamera, siehe manage.py camera add} VOGELALBUM_GATE: ${VOGELALBUM_GATE:-detector} VOGELALBUM_SAVE_TO: /daten/rohdaten VOGELALBUM_PROTOKOLL: /daten/protokoll.csv VOGELALBUM_NACHTSICHT: ${VOGELALBUM_NACHTSICHT:-} VOGELALBUM_REGION: ${VOGELALBUM_REGION:-de} # Schwellwerte und Artenliste holt sich der Detector von der Sammlung. # Faellt sie aus, laeuft er mit dem letzten Stand weiter und warnt nur. VOGELALBUM_KONFIG_ALLE: ${VOGELALBUM_KONFIG_ALLE:-300} VOGELALBUM_LIVE_PORT: ${VOGELALBUM_LIVE_PORT:-0} command: - watch - --classify-every=2 - --cooldown=5 - --min-bird-frames=1 - --verbose # Gueltige Portnummer als Vorgabe, nicht 0 — Compose weist "0:0" ab, siehe # die ausfuehrliche Begruendung in docker-compose.heim.yml. Ob etwas # lauscht, entscheidet VOGELALBUM_LIVE_PORT oben. ports: - "${VOGELALBUM_LIVE_PORT:-8131}:${VOGELALBUM_LIVE_PORT:-8131}" volumes: # Rohbilder und Protokoll. Die Rohbilder sind spaeter das Material fuer # ein Nachtraining — deshalb ein Volume und kein tmpfs. - vogelalbum-rohdaten:/daten volumes: vogelalbum-rohdaten: