# Frigate NVR - Reolink 2x + Synology NAS

Stand: 2026-08-01 · Frigate `stable` · getestet gegen docs.frigate.video

### Architektur-Entscheidung
- **Proxmox LXC (unprivileged, schon ready)** als Host für Frigate (Docker-in-LXC).
- iGPU (Intel) via `/dev/dri` reinbinden → VA-API HW-Decode. Bei 2 Cams reicht CPU-Detection, **Coral ist optional**.
- **Hinweis Xeon Silver 4110 (dieser Host): KEIN iGPU** → kein `/dev/dri`, VA-API entfällt. Stattdessen `ffmpeg.hwaccel_args: auto` (CPU-Decode) + **OpenVINO-CPU-Detector** (`type: openvino, device: CPU`, nutzt AVX-512). Der iGPU-Passthrough-Block unten gilt NICHT für diesen Host.
- **Recordings → Synology NAS per NFS**, gemountet auf dem Proxmox-Host und als `mp0` in den LXC rein gebunden.
- **Datenbank bleibt lokal** (`/config/frigate.db` auf LXC-SSD) — DB auf NFS = "database is locked"-Fehler.

### Ablauf
1. Synology: NFS-Share anlegen
2. Proxmox-Host: NFS mounten + LXC mountpoint + iGPU durchreichen
3. LXC: Docker + Compose installieren
4. Config + Compose ablegen, starten
5. Reolink-Cam-Einstellungen anpassen
6. Web-UI prüfen

---

### 1. Synology NAS (NFS-Share)
DSM → **Systemsteuerung → Dateidienste → SMB/AFP/NFS** → Tab **NFS** → NFS-Service aktivieren.

Freigegebenen Ordner anlegen (z.B. surveillance), dann **Bearbeiten → NFS-Berechtigungen → Einfügen**:
- Hostname/IP: `<Proxmox-Host-IP>` (z.B. 10.0.0.10)
- Privileg: Lesen/Schreiben
- Squash: **"Alle Benutzer auf Admin mapen"** (vermeidet UID/GID-Probleme mit unpriv. LXC)
- Sicherheit: sys
- Nicht root zuschreiben: ☐ (wenn Squash=map to admin)

Mount-Pfad auf dem NAS merken: `/volume1/frigate`

> Warum NFS statt SMB? NFS ist bei Frigate-Recordings schneller/stabiler und braucht kein `mount.cifs`-Gedöns im Container. Quelle: Frigate-Diskussion #7351.

---

### 2. Proxmox-Host
```bash
## NFS-Client
apt update && apt install -y nfs-common

## Mountpoint anlegen
mkdir -p /mnt/surveillance

## fstab (anpassen: NAS-IP + Pfad)
echo '10.0.0.31:/volume1/surveillance /mnt/surveillance nfs defaults,soft,timeo=30,retrans=3,noatime 0 0' >> /etc/fstab
mount -a
df -h /mnt/surveillance   # muss das NAS zeigen
```

**LXC durchreichen** (im Proxmox-UI oder `/etc/pve/lxc/<CTID>.conf`):
```conf
## NFS-Share als Mountpoint reinbinden
mp0: /mnt/frigate,mp=/media

## iGPU (Intel) durchreichen
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir
```
Im Proxmox-UI: CT → Ressourcen → Gerät durchreichen → `/dev/dri` (einfacher als die conf-Edits).
CT neu starten. Im LXC: `ls /dev/dri` muss `card0`/`renderD128` zeigen, `ls /media` das NAS.

---

### 3. LXC: Docker + Compose
```bash
apt update && apt install -y curl
curl -fsSL https://get.docker.com | sh
systemctl enable --now docker
```

---

### 4. Deploy-Files
`config.yml` und `docker-compose.yml` nach `/opt/frigate/` legen (siehe beigelegte Files in `frigate/`).
User/Pass/IP in `config.yml` ersetzen. Dann:
```bash
cd /opt/frigate
docker compose up -d
docker compose logs -f   # Config-Fehler werden hier angezeigt (exit bei invalid)
```
Config vorab validieren:
```bash
docker run --rm -v $(pwd)/config.yml:/config/config.yml --entrypoint python3 \
  ghcr.io/blakeblackshear/frigate:stable -u -m frigate --validate-config
```

---

### 5. Reolink-Kamera-Einstellungen (wichtig!)
In der Reolink-WebUI je Cam unter **Einstellungen → Netzwerk/Video**:
- **Encode:** H.264 (nicht H.265) — sonst Recording/Safari-Probleme
- **Bitrate-Modus:** CBR ("Fluency first")
- **I-Frame-Intervall:** = Framerate (Interframe Space 1x)
- **Sub-Stream** aktivieren (für detect), Auflösung z.B. 640×480
- **HTTP-Stream aktivieren** (Erweiterte Netzwerkeinstellungen) — Frigate nutzt den http-flv-Stream

---

### 6. Prüfen
- Web-UI: `http://<LXC-IP>:8971`
- Live-View beider Cams, Detection-Boxen sichtbar?
- Recordings landen unter `/media/frigate/<cam>/` (auf dem NAS)
- `docker compose top` / `df -h /media` im LXC

---

### Hinweise / Pitfalls
- **DB nicht auf NFS**: bleibt unter `/config` (lokal). Sonst "database is locked".
- **unpriv. LXC darf NFS nicht selbst mounten** → Host mountet, `mp0` reicht den Pfad durch.
- **http-flv > RTSP** bei Reolink (zuverlässiger laut Doku). Config nutzt daher go2rtc mit `ffmpeg:http://.../flv?...`.
- **Coral optional**: bei 2 Cams reicht CPU; Coral/OpenVINO als Kommentar in der Config vorbereitet.
- **shm_size** mind. 256mb bei 2 Cams (FFmpeg braucht Shared Memory).
- Detektions-Auflösung (`detect.width/height`) an den echten Sub-Stream anpassen (Reolink sub oft 640×480, nicht 360).

---

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