Comparisons

Frigate NVR on Proxmox vs Docker: TPU & GPU Passthrough Guide

Frigate on Proxmox LXC vs bare-metal Docker: Coral TPU and Intel QuickSync GPU passthrough steps, decode vs inference layers, and which stack fits your NVR.

Privacy Smart Home Research Desk Jun 09, 2026

Keywords: frigate proxmox vs docker, Frigate NVR Proxmox, Coral TPU passthrough, Intel QuickSync Frigate, Proxmox LXC Frigate, Docker Frigate hardware acceleration

Frigate proxmox vs docker is not a codec debate—it is a question of how many virtualization layers sit between your Coral TPU, Intel iGPU, and the Frigate container. As of 9 June 2026, bare-metal Docker on Debian or Ubuntu gives the thinnest path to map /dev/dri/renderD128 and a Google Coral USB stick with one Compose file. Proxmox VE 8.4+ adds a hypervisor so you can snapshot Frigate, colocate Home Assistant, and survive kernel bumps—but you must bind-mount GPU nodes into a privileged LXC or pass USB through a VM, or acceleration silently falls back to CPU decode and software detection.

Quick answer: Should Frigate run on Proxmox or Docker for Coral TPU and GPU passthrough?

Run Frigate in Docker on bare metal when the box is NVR-only—direct /dev/dri and USB mapping is simplest. Use Proxmox when you need snapshots and multiple workloads on one Intel host; deploy Frigate inside a privileged LXC with renderD128 and /dev/bus/usb bind-mounted, then run the same Docker Compose stack inside the LXC.

Source: Frigate hardware acceleration


Executive summary

Privacy-conscious builders comparing Frigate NVR on Proxmox vs Docker usually already own an Intel N100/N305 mini-PC or a Ugreen NASync DXP and hit the same wall: ffmpeg pegs four cores while /dev/dri and the Coral USB sit unused. Frigate’s documentation (accessed 9 June 2026) treats video decode (QuickSync/VAAPI) and object detection (Coral, Hailo, OpenVINO) as separate layers12—your deployment choice only changes how those devices reach the container, not whether you need both at six-plus 1080p cameras.

We compiled the passthrough complexity matrix below by cross-walking Proxmox LXC device docs, Frigate Docker install guidance, and twelve r/HomeAssistant and Frigate GitHub threads dated January–June 2026 that mention Coral or QSV failures after hypervisor updates345.

Verdict: Marcus (Beelink EQ13, six Reolink PoE cams, no other homelab services) should run Docker on Debian 12—one evening, no LXC config. Priya (same hardware plus Home Assistant OS in a VM and Pi-hole LXC) should keep Proxmox and run Frigate in privileged LXC 201 with GPU and USB bind-mounts; the snapshot before Proxmox 8.4→8.5 kernel updates is worth the extra config file.


Methodology: how the passthrough matrix was built

  1. Layer count — counted hypervisor + container engine + Frigate container from host metal to Frigate process.
  2. QSV path — verified against Frigate Intel preset table (preset-intel-qsv-h264 / h265, gen12 iHD driver)1.
  3. Coral USB path — mapped to Proxmox lxc.mount.entry for /dev/bus/usb vs Docker devices: stanza45.
  4. Rollback — Proxmox snapshot vs Docker volume backup only.
  5. Editorial friction score — 1 (trivial) to 5 (frequent forum breakage); aggregated from community reports through June 2026.

Where I’m less sure — exact cgroup rules on Proxmox 9 pre-release builds; validate vainfo after every point release. Anecdotally, USB Coral passthrough survives minor Proxmox updates more often than PCIe Coral M.2 without VM passthrough.


Original research: Frigate deployment × hardware passthrough matrix (June 2026)

DeploymentHypervisor layersQSV (/dev/dri) pathCoral USBCoral PCIe M.2Snapshot rollbackFriction score /5Best for
Docker on bare Debian/Ubuntu0Direct devices: mapDirect devices:Direct if slot on hostVolume backup only1Dedicated NVR mini-PC
Docker on Proxmox host (no LXC)1Host /dev/dri → composeHost USB → composeNative PCIe on hostVM disk backup2Single-app Proxmox install
Proxmox privileged LXC + Docker2lxc.mount.entry renderD128lxc.mount.entry usb busNot inside LXC (use host/VM)pct snapshot3HA + Frigate colocation
Proxmox VM + Docker2USB/GPU passthrough to VMUSB filter to VMPCIe passthrough possibleqm snapshot4Isolation or PCIe Coral
Home Assistant OS add-on1–2HA device passthrough UIHA USB attachLimitedHA backup2HA-centric users
UGOS Docker (NAS)0–1App Center composeUSB mapRare on NASFactory reset2–3NASync buyers keeping stock OS

Stat: Frigate documents ~10 ms inference on Coral MobileDet and ~7 ms on Hailo-8 YOLOv6n—decode must be offloaded separately via QuickSync or CPU ffmpeg collapses under six 1080p streams.

— Frigate recommended hardware, accessed 9 June 2026

Dataset (JSON-LD)


Two hardware layers Frigate always needs at scale

Intel Quick Sync Video (QSV) offloads H.264/H.265 decode in ffmpeg. A Google Coral TPU (or Hailo-8) runs object-detection inference on motion crops. Confusing the two is the dominant failure mode in frigate proxmox vs docker threads: users buy a Coral, enable detectors.coral, and wonder why CPU stays at 80% because no /dev/dri map exists for decode12.

LayerHardwareFrigate configTypical symptom if missing
DecodeIntel iGPU via /dev/drihwaccel_args: preset-intel-qsv-h264ffmpeg 70%+ CPU per stream
DetectCoral USB / Hailo M.2detectors.coral.type: edgetpuHigh CPU on detect fps; event lag

Cross-read configure Intel QuickSync for preset tables and Coral vs Hailo benchmarks before buying a second accelerator.


Steel-man: why bare-metal Docker is the rational default

The strongest case against Proxmox for Frigate is device path simplicity:

On Debian 12 or Ubuntu 24.04 LTS, you install intel-media-va-driver-non-free, plug in a Coral USB Accelerator (~$60 street, Amazon snapshot 9 June 2026), and deploy the official ghcr.io/blakeblackshear/frigate:stable image with two devices: lines. No lxc.cgroup2.devices.allow, no VM USB filters, no SeaBIOS vs OVMF foot-guns. When QSV breaks after a kernel update, you debug one /dev/dri/renderD128 path—not host plus LXC plus Docker. For a Beelink EQ13 ($169–199 barebone, June 2026 pricing) dedicated to cameras, that is an afternoon with rollback = restore Compose from git, which matches how most Frigate documentation examples are written5.

Rebuttal: Proxmox earns its layer when the same N100 also runs Home Assistant, AdGuard, and restic backups. A pct snapshot before apt upgrade on the Frigate LXC has saved countless /dev/dri regressions in community reports—bare Docker offers no equally fast rollback for the whole stack. If you already run Proxmox for Home Assistant, adding Frigate LXC is consistent; wiping Proxmox to “simplify” Frigate often increases total homelab risk when other VMs move back to the same metal anyway.


Profile: Marcus runs Debian 12 on a Beelink EQ13 (Intel N100, 16 GB RAM). Six Annke I91DN cameras on VLAN 40 with no WAN. He wants local person alerts without cloud retention.

Steps (verified against Frigate 0.15 Docker docs, 9 June 2026):

  1. Host driversapt install intel-media-va-driver-non-free; reboot.
  2. Verify GPUvainfo --display drm --device /dev/dri/renderD128 lists H264/H265.
  3. Compose — map GPU and Coral USB:
services:
  frigate:
    image: ghcr.io/blakeblackshear/frigate:stable
    privileged: true
    shm_size: "256mb"
    restart: unless-stopped
    environment:
      LIBVA_DRIVER_NAME: iHD
    devices:
      - /dev/dri/renderD128:/dev/dri/renderD128
      - /dev/bus/usb:/dev/bus/usb
    volumes:
      - /opt/frigate/config:/config
      - /mnt/nvr/frigate:/media/frigate
      - type: tmpfs
        target: /tmp/cache
        tmpfs:
          size: 1000000000
    ports:
      - "5000:5000"
      - "8554:8554"
      - "8555:8555/tcp"
      - "8555:8555/udp"
  1. config.yml — QSV decode + Coral detect:
detectors:
  coral:
    type: edgetpu
    device: usb

ffmpeg:
  hwaccel_args: preset-intel-qsv-h264

cameras:
  front_yard:
    ffmpeg:
      inputs:
        - path: rtsp://192.168.40.101/sub
          roles: [detect]
        - path: rtsp://192.168.40.101/main
          roles: [record]
    detect:
      width: 1280
      height: 720
      fps: 5
  1. Validatedocker exec frigate vainfo and Frigate System → FFmpeg show hardware acceleration; inference stays 9–11 ms on Coral per Frigate’s published table2.

Marcus’s taken position: stay on bare Docker until he adds a second service that needs VM isolation—not before.


Working example: Priya, Intel N305, Frigate + Home Assistant

Profile: Priya runs Proxmox VE 8.4 on a Beelink SER5 Max (N305, 32 GB RAM). Home Assistant OS lives in VM 100; Pi-hole in LXC 105; Frigate in privileged LXC 201 with Docker inside.

Host prep:

ls -l /dev/dri/
# note renderD128 major:minor — often 226:128

Edit /etc/pve/lxc/201.conf:

lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file
lxc.mount.entry: /dev/bus/usb dev/bus/usb none bind,optional,create=dir

Restart LXC: pct stop 201 && pct start 201. Inside LXC, install Docker and reuse the same Compose as Marcus. Recordings bind-mount to a ZFS dataset on HDDs (mp0: /tank/nvr,mp=/mnt/nvr), not the Proxmox OS SSD4.

Snapshot discipline: pct snapshot 201 pre-pve84-kernel before every Proxmox point upgrade. Where I’m less sure — unprivileged LXC with id-mapped GPUs on Proxmox 8.4; most Frigate homelabs still use privileged for fewer moving parts.

Proxmox LXC + Docker — pros
  • Fast rollback when /dev/dri breaks after kernel bumps.
  • Colocate Home Assistant without Frigate consuming HA RAM.
  • Standard community scripts (e.g. RiceMunk frigate-proxmox patterns) target this layout6.
Proxmox LXC + Docker — cons
  • Three layers to debug (host → LXC → Docker).
  • PCIe Coral M.2 generally requires VM passthrough or host Docker instead.
  • USB passthrough can reorder after host reboot—confirm lsusb inside LXC.
Bare Docker — pros
  • Shortest device path; matches upstream Frigate examples.
  • Lowest idle overhead on N100 when no other VMs run.
  • Simplest mental model for VLAN-only NVR appliances.
Bare Docker — cons
  • No built-in snapshot; rely on Compose in git + config backups.
  • Second app on same box pushes you toward Proxmox anyway.
  • You manage host patching without Proxmox GUI orchestration.

Path C — Proxmox VM (PCIe Coral or hard isolation)

Choose a VM when you run a PCIe Coral M.2 or Hailo-8 card that cannot route through LXC bind-mounts, or when compliance-style kernel isolation matters. Pass the USB controller or GPU via Proxmox Hardware → Add → USB Device or PCIe passthrough, install Linux inside the VM, then Docker—same Compose as Path A. Expect higher RAM overhead (~4 GB for VM + Docker) and CPU cost for USB virtualization compared to LXC.

I haven’t tested every N100 board’s IOMMU grouping for single-function GPU passthrough; anecdotally, LXC bind-mount remains the default on homelab Intel iGPUs through June 2026.


Side-by-side: Proxmox vs Docker for Frigate acceleration

CriterionDocker on bare metalProxmox LXC + DockerProxmox VM + Docker
Setup time (first QSV + Coral)2–4 hours4–8 hours6–12 hours
QSV passthroughdevices: /dev/dri/renderD128lxc.mount.entry + cgroup allowGPU passthrough or emulated
Coral USBdevices: /dev/bus/usbUSB bus bind-mountUSB device filter to VM
Rollback on bad kernelManual restorepct snapshotqm snapshot
Colocate HA + Pi-holeDocker Compose onlyNative Proxmox VMs/LXCNative
Privacy (local footage)Full localFull localFull local
Idle power (N100 est.)~8–12 W~10–15 W~12–18 W

Troubleshooting: acceleration silent failures

SymptomLikely causeFix
CPU 70%+, GPU idleNo /dev/dri in containerAdd device map; check LXC mount.entry
vainfo fails in containerDriver on host onlyInstall intel-media-va-driver-non-free on host/LXC
Coral not detectedUSB not passed to LXC/VMBind /dev/bus/usb; check lsusb inside stack
QSV enabled, ffmpeg errorsH.265 stream with H.264 presetPer-input preset-intel-qsv-h265
Worked until Proxmox updateLXC config wipedRe-apply 201.conf lines; snapshot restore
Detect lag, low CPUCoral missingAdd detectors.coral; QSV does not detect objects

Checklist

  • Install intel-media-va-driver-non-free on the Docker host (or LXC host layer).
  • Set LIBVA_DRIVER_NAME=iHD on Alder Lake-N (N100/N305).
  • Map /dev/dri/renderD128 before inserting Coral USB.
  • Use 720p substream for detect; reserve main stream for record.
  • docker exec frigate vainfo — must list H264/H265 decode.
  • pct snapshot or git-track Compose before Proxmox kernel updates.
  • Block camera VLAN WAN egress on either architecture.
Architectural comparison diagram of Frigate NVR running on Proxmox LXC versus bare-metal Docker with Google Coral TPU USB passthrough and Intel QuickSync GPU decode paths for local privacy-focused home surveillance without mandatory cloud video upload as of June 2026.
Proxmox adds snapshot rollback; bare Docker adds the shortest path from /dev/dri to Frigate.

Verdict

For frigate proxmox vs docker, the decision is workload colocation—not detection quality. Docker on bare metal is the right call for a dedicated NVR mini-PC where Marcus-style simplicity beats snapshot luxury. Proxmox with a privileged Frigate LXC is the right call when Priya already virtualizes Home Assistant and wants pct snapshot insurance before Intel media driver churn.

Do not deploy Frigate on Proxmox without planning /dev/dri and Coral paths in the same checklist you use for VLAN camera isolation. Pick one architecture, validate vainfo and Coral inference ms, then tune motion masks—swapping Proxmox for Docker rarely fixes a mis-mapped GPU.


FAQ

Frequently Asked Questions

Is Proxmox or Docker better for Frigate NVR?

Bare-metal Docker is simpler for a single Frigate host with direct /dev/dri and USB access. Proxmox wins when you colocate Home Assistant, Pi-hole, or backup jobs on the same Intel mini-PC and want snapshot rollback before kernel bumps.

Can Frigate use Intel QuickSync inside a Proxmox LXC?

Yes, in a privileged LXC with renderD128 bind-mounted from the host and intel-media-va-driver-non-free installed. Unprivileged LXC without device cgroup rules typically fails vainfo inside the container.

Does a Coral TPU work through Proxmox passthrough?

Yes—bind-mount /dev/bus/usb into the LXC or pass the USB controller to a VM. PCIe Coral M.2 cards need either host Docker, a VM with PCIe passthrough, or running Frigate on the Proxmox host itself.

Why is Frigate CPU still at 100% with QuickSync enabled?

Usually /dev/dri is missing from the container, LIBVA_DRIVER_NAME is wrong for Alder Lake-N (use iHD), or detect is pointed at a 4K H.265 main stream instead of a 720p substream.

Should I run Frigate in a Proxmox VM instead of LXC?

Choose a VM only when you need kernel isolation or PCIe Coral passthrough. LXC plus Docker is the community default for Intel N100 homelabs because QSV bind-mount is well documented and overhead is lower.

Does Docker on bare metal beat Proxmox for privacy?

Both keep footage local. Privacy difference is operational—fewer daemons on bare Docker, more isolation options on Proxmox. Block camera WAN egress on either stack.


Primary Sources

IndexTitle / descriptionURL
1Frigate — Video decoding (Intel QSV presets)https://docs.frigate.video/configuration/hardware_acceleration_video/
2Frigate — Recommended hardware (Coral, Hailo inference)https://docs.frigate.video/frigate/hardware
3Frigate — Installation (Docker)https://docs.frigate.video/frigate/installation
4Proxmox VE documentation — LXC container configurationhttps://pve.proxmox.com/wiki/Linux_Container
5Google Coral — USB Accelerator product pagehttps://coral.ai/products/accelerator/
6RiceMunk/frigate-proxmox-script (community LXC pattern)https://github.com/RiceMunk/frigate-proxmox-script

Footnotes

  1. Frigate video decoding documentation, accessed 9 June 2026 2 3

  2. Frigate recommended hardware — detector inference table, accessed 9 June 2026 2 3

  3. r/homeassistant Frigate Proxmox threads, sampled January–June 2026

  4. Proxmox VE LXC wiki — device bind mounts 2 3

  5. Frigate Docker installation guide, accessed 9 June 2026 2 3

  6. RiceMunk/frigate-proxmox-script repository, accessed 9 June 2026