# Frigate NVR mit zwei Reolink-Kameras und Synology NAS

## Frigate NVR mit zwei Reolink-Kameras und Synology NAS

### Geltungsbereich

Dieses Runbook beschreibt ein kleines Frigate-System mit zwei Reolink-Kameras, lokalem Frigate-Config-/Datenbank-Speicher und Aufzeichnungen auf einem Synology-NAS.

> **Getestetes Feldprofil:** Frigate in Docker innerhalb eines unprivilegierten Proxmox-LXC, NFS auf dem Proxmox-Host gemountet und in den LXC durchgereicht. Auf dem getesteten CPU-System ohne iGPU liefen Videodekodierung und OpenVINO-Detektion auf der CPU.
>
> **Herstellerempfehlung:** Frigate empfiehlt Docker auf Bare-Metal-Debian, weil GPU- und Accelerator-Zugriff dort einfacher und mit weniger Overhead möglich ist. Proxmox funktioniert in der Praxis, ist aber nicht die bevorzugte Standardplattform. Die folgenden LXC-Schritte sind deploymentspezifisch.

### Architektur

- `/config` lokal auf SSD: Konfiguration und SQLite-Datenbank
- `/media/frigate` auf Synology-NFS: Aufzeichnungen, Snapshots und Exporte
- `/tmp/cache` als `tmpfs`: temporäre Aufzeichnungssegmente
- Reolink-Substream für Erkennung, Mainstream für Aufzeichnung
- Hardwaredekodierung nur konfigurieren, wenn im Frigate-Container ein unterstütztes Gerät tatsächlich verfügbar ist

> **Nie `/config` auf NFS legen.** Frigate hält dort die SQLite-Datenbank und Begleitdateien. Nur `/media/frigate` gehört auf den Netzspeicher.

### 1. Synology-NFS vorbereiten

In DSM 7:

1. **Systemsteuerung → Dateidienste → NFS**: NFS aktivieren.
2. Dedizierten freigegebenen Ordner erstellen, beispielsweise `frigate`.
3. **Freigegebenen Ordner bearbeiten → NFS-Berechtigungen → Erstellen**:
   - Hostname/IP: nur die IP beziehungsweise das Subnetz des Proxmox-Hosts
   - Privileg: Lesen/Schreiben
   - Sicherheit: `sys`
   - Squash und UID/GID passend zum eigenen LXC-Rechtemodell wählen
4. Den von DSM angezeigten Mount-Pfad notieren, beispielsweise `/volume1/frigate`.

Für unprivilegierte LXC kann «alle Benutzer auf admin abbilden» als pragmatischer Workaround funktionieren, erweitert aber die Rechte auf dem Share. Besser sind ein dediziertes Share und eine bewusst getestete UID/GID-Abbildung.

### 2. NFS auf dem Proxmox-Host mounten

```bash
apt update
apt install -y nfs-common
mkdir -p /mnt/frigate-recordings
```

Eintrag in `/etc/fstab`; Server und Exportpfad anpassen:

```fstab
nas.example.invalid:/volume1/frigate /mnt/frigate-recordings nfs4 rw,hard,_netdev,noatime,x-systemd.automount,x-systemd.device-timeout=30s 0 0
```

Mount und Schreibzugriff prüfen:

```bash
systemctl daemon-reload
mount /mnt/frigate-recordings
mountpoint /mnt/frigate-recordings
df -h /mnt/frigate-recordings
touch /mnt/frigate-recordings/.frigate-write-test
rm /mnt/frigate-recordings/.frigate-write-test
```

> **Ausfallschutz:** Frigate nicht starten, wenn `mountpoint` fehlschlägt. Sonst beschreibt Frigate den leeren lokalen Mount-Pfad und kann das Root-Dateisystem füllen. Das Verhalten bei nicht erreichbarem NAS gehört zwingend in den Abnahmetest.

### 3. Mount in den LXC durchreichen

In `/etc/pve/lxc/<CTID>.conf`:

```conf
mp0: /mnt/frigate-recordings,mp=/media/frigate
```

Falls der Proxmox-Host eine unterstützte GPU hat, das Gerät vorzugsweise über **CT → Ressourcen → Gerät durchreichen** hinzufügen. Bei Intel ist im LXC mindestens der passende Render-Node unter `/dev/dri/` zu erwarten.

Nach dem Neustart des LXC:

```bash
mountpoint /media/frigate
ls -la /dev/dri 2>/dev/null || true
```

Fehlt `/dev/dri`, darf kein Intel-VAAPI/QSV-Preset erzwungen werden. Frigate dokumentiert für konfigurierte Hardwarebeschleunigung keinen CPU-Fallback bei Fehlern.

### 4. Frigate mit Docker Compose betreiben

Docker Engine und das Compose-Plugin gemäss der offiziellen Docker-Dokumentation für die verwendete Distribution installieren. Beispiel für die relevanten Volumes:

```yaml
services:
  frigate:
    container_name: frigate
    image: ghcr.io/blakeblackshear/frigate:stable
    restart: unless-stopped
    shm_size: "256mb"
    volumes:
      - /opt/frigate/config:/config
      - /media/frigate:/media/frigate
      - type: tmpfs
        target: /tmp/cache
        tmpfs:
          size: 1000000000
    ports:
      - "8971:8971"
```

Frigate nennt für zwei Detektionsstreams mit 720p rund 210 MB Shared Memory; `256mb` ist ein pragmatischer Startwert. Die tatsächliche Grösse über den Frigate-SHM-Rechner auf Basis der Detektionsauflösung dimensionieren.

Start und Diagnose:

```bash
cd /opt/frigate
mountpoint /media/frigate

docker compose config
docker compose pull
docker compose up -d
docker compose logs --tail=200 frigate
```

Port `8971` ist die authentisierte Weboberfläche und API. Port `5000` ist intern und nicht authentisiert und darf nicht öffentlich exponiert werden.

### 5. Detektor und Videodekodierung

#### System ohne GPU

- Kein `hwaccel_args` erzwingen.
- Auf Intel-CPU ist OpenVINO im CPU-Modus dem generischen CPU-Detector vorzuziehen.
- Detektions-FPS und Substream-Auflösung niedrig beginnen und Last messen.

#### System mit Intel-iGPU

- Passendes Preset wählen, zum Beispiel `preset-vaapi` oder `preset-intel-qsv-*` nach CPU-Generation.
- Frigate-Logs auf automatische Erkennung beziehungsweise Fehler prüfen. Niedrige CPU-Last allein beweist funktionierende Hardwaredekodierung nicht.

### 6. Reolink-Kameras

Frigate 0.18 empfiehlt den **Add Camera Wizard** unter **Settings → Global configuration → Camera management**. Vorher HTTP in den erweiterten Netzwerkeinstellungen der Kamera aktivieren.

Empfohlene Kameraoptionen, sofern vom Modell angeboten:

- **Fluency first / CBR** aktivieren
- **Interframe Space 1x** (I-Frame-Intervall gleich Framerate)
- Substream für Erkennung, Mainstream für Aufzeichnung

Der Streamtyp hängt vom Modell ab:

| Reolink-Kamera | Empfehlung |
|---|---|
| 5 MP oder weniger | HTTP-FLV |
| 6 MP oder höher, neuere Modelle | HTTP-FLV Enhanced mit FFmpeg 8 oder RTSP |
| 6 MP oder höher, ältere Modelle | RTSP |

Nicht pauschal jede Kamera auf H.264 oder HTTP-FLV zwingen. Der Wizard erkennt Auflösung und Streamtyp automatisch. H.265-Streams sind für Aufzeichnungen in Chrome 108+, Edge und Safari abspielbar; ältere Browser brauchen H.264.

### 7. Abnahme

- [ ] `mountpoint /media/frigate` ist im LXC erfolgreich.
- [ ] Recordings landen auf dem NAS und altern gemäss Retention.
- [ ] Config-Validierung ohne Fehler; Logs zeigen keine FFmpeg-Fehler.
- [ ] Live-View beider Kameras stabil; Detection-Boxen sichtbar.
- [ ] Detektionsauflösung entspricht dem realen Substream.
- [ ] Falls GPU verwendet: Hardwaredekodierung ist in Logs/Frigate-Metriken bestätigt.
- [ ] Neustart von Host und LXC stellt NFS, Docker und Frigate wieder her.
- [ ] Ausfalltest: NAS nicht erreichbar ⇒ Frigate startet nicht oder schreibt nicht lokal auf Root-Disk.

### Quellen

- [Frigate 0.18: Installation und Speicherpfade](https://docs.frigate.video/frigate/installation/)
- [Frigate 0.18: Reolink-Kamerakonfiguration](https://docs.frigate.video/configuration/camera_specific/#reolink-cameras)
- [Frigate 0.18: Hardwarebeschleunigung Videodekodierung](https://docs.frigate.video/configuration/hardware_acceleration_video/)
- [Frigate 0.18: Recording und Retention](https://docs.frigate.video/configuration/record/)
- [Synology: NFS-Zugriff auf freigegebene Ordner](https://kb.synology.com/en-global/DSM/tutorial/How_to_access_files_on_Synology_NAS_within_the_local_network_NFS)

---

*Quelle: Obsidian `Knowledge Base/Troubleshooting/Frigate NVR - Reolink 2x + Synology NAS/README.md` · Stand: 2026-10-12 · Automatisiert publiziert durch Hermes.*