Frigate on a Mini PC with NAS Recording and Home Assistant

Run Frigate on an Intel mini PC, record to a NAS over NFS, keep SQLite local and integrate with Home Assistant. Includes Docker Compose, storage sizing and outage safeguards.

Quick Summary (TL;DR):
For a reliable Frigate and Home Assistant installation, run Frigate on a wired Intel mini PCAliExpress price, keep its configuration and SQLite database on the mini PCAliExpress price’s local SSD, and use the NASAliExpress price only for the large /media/frigate recording library. An NFS or SMB recording share is supported, but it introduces a dependency: if the NASAliExpress price or network fails, recording can stop even while object detection and Home Assistant remain online. Do not allow Docker to start against an unmounted local directory masquerading as the NASAliExpress price share. Verify the mount before every start, monitor its health, and test what happens when the NAS is switched off. Intel VAAPI/QSV video decoding and OpenVINO detection can reduce host CPU load, but performance depends on camera streams, the model and driver support. Frigate’s own planning guidance generally prefers local recording storage for the best reliability; choose NAS recording because its capacity and administration benefits justify that trade-off, not because it is inherently more resilient.

What this architecture does — and what it does not

This guide is about separating Frigate compute from its recording storage and linking the result to Home Assistant. It is not another camera-count buying guide or a generic NAS review. We assume you already have or plan to buy IP cameras with RTSP feeds, a mini PC capable of running Docker, and a NAS that can expose a dedicated NFS or SMB share. The commands are reference configurations, not a claim that we have tested your particular NAS firmware, camera model or mini-PC BIOS.

PoE IP cameras ── managed PoE switch ── LAN ── Intel mini PC
                                          │   ├── Frigate container
                                          │   ├── local SSD: /config + SQLite
                                          │   └── /tmp/cache in RAM
                                          │
                                          ├── NAS: NFS/SMB recording share
                                          │       └── /media/frigate
                                          │
                                          └── Home Assistant + MQTT broker
                                                  └── events, cameras, automations

Frigate receives camera video and decides which recording segments to retain. The NAS provides capacity, snapshots and storage administration, but does not run object detection in this layout. Home Assistant consumes Frigate entities and events through the official integration; it does not need to mount the Frigate recording share itself.

ComponentRuns wherePrimary responsibilityFailure consequence
IP camerasCamera VLAN / PoE switchSupply record and detect streamsAffected camera goes offline
Frigate + decoder + detectorMini PCIngest, motion, inference, retentionDetection and recording stop
SQLite + Frigate configurationMini-PC local SSDRecording index, settings, stateLoss can orphan recordings
Media archiveNAS shared folderLarge retained video and snapshotsRecordings may stop; no automatic fallback
MQTT brokerHome Assistant host or another always-on serverEvent transportMany HA entities/events become unavailable
Home AssistantSeparate host or VMNotifications and automationsFrigate can continue recording independently

When a mini PC plus NAS is better than a NAS-only NVR

The separation is attractive when the NAS already holds substantial storage, its CPU lacks suitable video decoding, or you want to upgrade the NVR host without migrating the array. It also lets Home Assistant stay on its own machine. However, Frigate depends on both boxes for recording: a NAS firmware reboot, switch failure or lost NFS session can interrupt the archive. For critical continuous evidence, a mini PC with a local surveillance drive, or a dedicated NVR with local disks, is a more fault-tolerant starting point.

DeploymentStrengthWeaknessChoose when
Mini PC + NAS live recordingFlexible CPU and disk upgrades; NAS capacityTwo-device and network dependencyYou can monitor the NAS and tolerate a recording interruption
Mini PC + local recording HDD/SSDRecords during NAS maintenanceLimited internal bays; local capacity costContinuous footage matters most
Frigate on a capable NASOne physical box and local media pathsGPU access and storage load share the NASExact NAS supports required decoding and containers
Mini PC local recording + scheduled off-host exportsLocal capture plus independent copiesExtra storage and workflow to maintainYou want recovery copies without live NFS dependency

For the broader compute-versus-storage trade-off, see our Mini PC Plus NAS vs NAS-Only Home Server guide. The architecture here has a different emphasis: recording integrity, media-path behaviour and outage recovery.

Choose hardware from the video pipeline, not just camera count

Frigate uses video decoding, motion processing, neural inference and disk writing. These are different workloads. Intel integrated graphics can decode supported video and run an OpenVINO detector; that does not mean every Intel mini PC supports every codec or model. The exact host kernel, iGPU, drivers, available RAM, camera bitrate and scene activity all matter. Frigate’s current hardware guidance covers N100/N150 and newer Intel systems, with documented limitations and model-specific examples.

Build variableSensible initial decisionVerify rather than assume
Mini-PC CPURecent Intel x86 with supported graphics and AVX2Exact processor, Frigate support, BIOS, Linux kernel
RAM8GB for modest setups; 16GB for useful headroomCamera count, enrichments, tmpfs and host workloads
Local SSDKeep OS, Compose, /config and database hereSMART health, spare space, backups and write endurance
Video decodingUse Intel VAAPI where supportedRender node, driver, H.264/H.265 profile, GPU utilisation
Object detectionStart with a supported OpenVINO modelActual detector device, model path and busy-scene queue
NetworkWired Gigabit LAN is usually enough for typical homesCamera traffic + NAS writes + live streams + other LAN load
NAS disksSize by bitrate and retention, not camera megapixels aloneUsable capacity, filesystem, continuous writes, backup policy

For four, eight or sixteen cameras, see Best Frigate Hardware for 4, 8 or 16 IP Cameras. That guide focuses on hardware selection. Here we assume a host has been chosen and explain how to connect it to a recording NAS without introducing silent failure.

Record the main stream; detect on a lighter stream

Most useful IP cameras offer a high-quality main stream and a lower-resolution substream. Assign the main stream to record and the substream to detect. Frigate records source video segments without re-encoding them, so the record stream’s bitrate drives NAS capacity. Detection frames are decoded; using a suitable lower-resolution feed saves GPU and CPU work. The current Add Camera Wizard can discover and configure many cameras automatically, so use it before hand-editing RTSP URLs.

Camera feedExample onlyFrigate roleWhat it changes
Main stream2560×1440 H.264, camera-defined bitraterecordRetained footage detail and disk consumption
Substream640×360 at 5fps, if camera supports itdetectDecode workload and object-detection detail
go2rtc restreamRTSP from Frigate host port 8554live viewing / optional inputCan avoid extra direct connections to cameras
Audio feedCamera-dependentaudio, if enabledAdditional FFmpeg processing and compatibility needs

Do not force a 640×360 stream when it cannot resolve the objects you care about. A distant driveway may need a higher-resolution detect feed; a close front door may not. Similarly, browser support for H.265 recording playback varies. Start with camera-native H.264 if broad browser and Home Assistant compatibility matters.

Calculate NAS capacity before configuring retention

For constant average bitrate, decimal GB/day per camera ≈ Mbps × 10.8. Multiply by the number of cameras and retained days. This is a unit conversion, not a measured camera benchmark. Actual variable-bit-rate cameras can generate more or less data depending on movement, lighting, compression, audio and night-time noise.

GB/day/camera = (average Mbps × 1,000,000 ÷ 8 × 86,400) ÷ 1,000,000,000
              = average Mbps × 10.8

Example: 6 cameras × 4 Mbps × 10.8 × 14 days
       = 3,628.8 GB ≈ 3.63 TB of video

Add room for snapshots, exports, filesystem overhead and growth.
Illustrative cameras × 4Mbps eachTotal average video Mbps7 days continuous14 days continuous30 days continuous
416Mbps1.21TB2.42TB5.18TB
624Mbps1.81TB3.63TB7.78TB
832Mbps2.42TB4.84TB10.37TB
1248Mbps3.63TB7.26TB15.55TB

The table assumes 4Mbps per camera continuously. It does not predict what an event-only policy will use. Event retention depends on how often each view contains motion or objects; a quiet garden and a busy road are not interchangeable. Check real camera bitrate and retained-segment growth after a week, then set a sensible storage quota and warning threshold. Keep the surveillance share separate from family files so Frigate’s emergency space reclamation cannot be distorted by unrelated usage.

Understand Frigate storage paths before mounting a NAS

The distinction between /config, /tmp/cache and /media/frigate is critical. Frigate writes new recording segments to a temporary cache before moving eligible segments into the media library. Its SQLite database normally lives at /config/frigate.db and indexes the recordings. The Frigate documentation warns that SQLite on NFS/SMB can cause locking and corruption problems. Keep the whole /config directory on a local SSD and back it up independently; do not put it inside the NAS media mount.

Container pathStorage typeReasonDo not do this
/configLocal persistent SSDConfig, database and stateDo not run SQLite directly from SMB/NFS
/tmp/cacheRAM-backed tmpfsShort-lived recording segmentsDo not confuse it with long-term archive
/dev/shmContainer shared memoryDecoded frame buffersDo not blindly mount /dev/shm from host
/media/frigateDedicated NAS mount or local diskRecordings, snapshots, clips and exportsDo not point at unverified empty host directory

Frigate measures the capacity of the filesystem visible at /media/frigate. If your network share is absent and the container binds an ordinary local folder, it can start filling the mini PC’s OS SSD while appearing to record normally. Docker’s long-form bind syntax can prevent creating a missing host path, but it cannot by itself prove that an existing directory is still an NFS mount. That requires an explicit mount check and reliable start ordering.

NFS or SMB for Frigate recording?

PropertyNFS on a Linux mini PCSMB/CIFS on a Linux mini PC
Typical fitStraightforward Unix/Linux NAS exportConvenient when NAS already exposes SMB shares
AuthenticationExport permissions; UID/GID and NFS version matterNAS user, credentials file and mount options
Linux clientnfs-common on Debian/Ubuntucifs-utils on Debian/Ubuntu
SecurityRestrict allowed client IP and camera/server VLANsDedicated least-privilege NAS account
Database suitabilityNot recommended for Frigate SQLiteNot recommended for Frigate SQLite
Failure modeNetwork latency, stale mounts, NAS rebootNetwork latency, reconnect and permission issues

Neither protocol magically turns a NAS into local storage. Frigate’s planning documentation explicitly supports network recording but recommends local media for the most reliable setup. For a Linux-only host and NAS, NFS is often easier to maintain; choose SMB when that is the better-supported, audited share on your particular NAS. Do not expose either protocol to the internet. The following walkthrough uses NFS; the container’s mount path is identical for SMB once the host mount is working.

Create a dedicated NAS share and mount it on Linux

  1. Create a dedicated NAS shared folder such as frigate-media with sufficient quota and retention capacity. Keep it separate from general family data.
  2. Enable NFS on the NAS. Permit only the mini PC’s static/reserved IP address, not an entire untrusted subnet; grant the minimum necessary read/write access.
  3. Record the actual export path shown by your NAS. On Synology this is commonly /volume1/SHARE_NAME, but the volume and path are not universal.
  4. On the mini PC, install the Linux NFS client package and create an empty local mount point. Confirm NAS hostname/IP reachability.
  5. Mount the share manually, verify its source and filesystem type, then perform a controlled write/read test before using Docker.
sudo apt update && sudo apt install -y nfs-common
sudo mkdir -p /mnt/frigate-media

# Replace the NAS address and exported path with the REAL values.
sudo mount -t nfs -o vers=4 192.168.20.10:/volume1/frigate-media /mnt/frigate-media

findmnt -T /mnt/frigate-media -o TARGET,SOURCE,FSTYPE,OPTIONS
df -h /mnt/frigate-media

# Only if the share permissions allow this test:
printf "Frigate mount check\n" | sudo tee /mnt/frigate-media/.frigate-write-test
sudo cat /mnt/frigate-media/.frigate-write-test
sudo rm /mnt/frigate-media/.frigate-write-test

If NFSv4 is not available, use the version and export path that your NAS actually supports; do not force vers=4 without checking. Synology’s current NFS instructions show where to enable the service, create client-specific permissions and obtain the export path. On QNAP, UGREEN, TrueNAS or another NAS, use that vendor’s corresponding file-service settings. Avoid mapping every user to an administrator just to make a permission error disappear.

Make the NAS mount persistent — without hiding a failure

For a conventional Linux host, add a tested NFS entry to /etc/fstab or use a systemd mount unit. The line below is an illustration for a trusted LAN; choose mount options with your NAS vendor’s guidance. The _netdev flag identifies a network filesystem. nofail allows the host to boot when the NAS is absent, but it does not mean Frigate should start recording to a local directory. Pair it with an explicit guard.

# Example /etc/fstab entry; replace IP and export path:
192.168.20.10:/volume1/frigate-media /mnt/frigate-media nfs rw,_netdev,nofail 0 0

# After saving fstab:
sudo systemctl daemon-reload
sudo mount /mnt/frigate-media
findmnt -rn -M /mnt/frigate-media -t nfs,nfs4 >/dev/null \n  || { echo "NAS share NOT mounted; do not start Frigate"; exit 1; }

The mount check above verifies that the exact mount point is backed by NFS/NFSv4 rather than merely existing as a directory. Make this a prerequisite of your Compose startup script or systemd service. A check only at startup is not continuous protection: a share can fail later. Add ongoing availability alerts, and decide whether the container should stop, restart or remain available for live viewing while recording is interrupted. Test that decision deliberately.

Docker Compose: local database, NAS media, Intel GPU

This is a minimal reference Compose file for a Linux mini PC running Docker Compose. It follows the official Frigate installation structure and deliberately avoids publishing unauthenticated port 5000. The NAS is mounted by the host first; Docker then bind-mounts that path. Replace /srv/frigate/config with a real local-SSD directory. Verify the GPU device path with ls /dev/dri and omit the device mapping if your host does not support it.

services:
  frigate:
    container_name: frigate
    image: ghcr.io/blakeblackshear/frigate:stable
    restart: unless-stopped
    stop_grace_period: 30s
    shm_size: "256mb"  # Recalculate for YOUR detect streams
    devices:
      - /dev/dri/renderD128:/dev/dri/renderD128  # Verify host path
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - type: bind
        source: /srv/frigate/config
        target: /config
        bind:
          create_host_path: false
      - type: bind
        source: /mnt/frigate-media
        target: /media/frigate
        bind:
          create_host_path: false
      - type: tmpfs
        target: /tmp/cache
        tmpfs:
          size: 1000000000
    ports:
      - "8971:8971"       # Authenticated Frigate UI/API (no TLS)
      - "8554:8554"       # RTSP restream, restrict LAN access
      - "8555:8555/tcp"   # WebRTC
      - "8555:8555/udp"
    environment:
      TZ: Europe/London

The shm_size value is an example, not a universal requirement. Frigate supplies a shared-memory calculator based on detect-stream dimensions and camera count. The 1GB tmpfs is also an example: it consumes memory and can fill independently of the NAS. Budget RAM for the operating system, detector, shared memory and cache together. Current Frigate builds may use a camera wizard and UI settings; a minimal Compose file does not need to hard-code every camera.

A correct create_host_path: false setting rejects a missing source path, but an existing empty /mnt/frigate-media directory is still valid to Docker. Always run the NFS mount guard before docker compose up -d, and wire it into unattended service startup. Docker restart: unless-stopped does not itself recheck the NFS source after a reboot.

Start Frigate only after verifying the share

# Create local config folder on the MINI PC SSD, not the NAS.
sudo mkdir -p /srv/frigate/config

# Verify the mount, not just the directory:
findmnt -rn -M /mnt/frigate-media -t nfs,nfs4 >/dev/null \n  || { echo "STOP: NAS recording mount is missing"; exit 1; }

# From the directory containing compose.yaml:
docker compose config --quiet
docker compose up -d
docker exec frigate df -h /media/frigate
docker logs --tail 100 frigate

Check that docker exec frigate df -h /media/frigate reports the NAS filesystem and expected capacity. If it reports the mini PC’s SSD, stop Frigate and fix the mount; do not assume the recordings are safely on the NAS. A basic startup script should return a non-zero exit code when the mount check fails, and any systemd service launching that script should require the mount to be present. For unattended restarts, consider a dedicated systemd unit with RequiresMountsFor=/mnt/frigate-media and a pre-start findmnt guard; validate it on your distribution rather than copying a generic unit blindly.

Configure the camera, hardware decoder and detector

The safest first-run sequence is to open the Frigate UI on port 8971, complete the initial account setup, add one camera using the Add Camera Wizard, and confirm both live view and recording before adding the rest. The following is a deliberately small config.yml illustration for a camera with separate RTSP main and substreams. Replace the URLs, MQTT address, credentials and camera paths with those supplied by your actual hardware.

mqtt:
  enabled: true
  host: 192.168.20.30  # Your MQTT broker
  user: frigate_user
  password: CHANGE_ME_IN_A_PRIVATE_CONFIG

ffmpeg:
  hwaccel_args: preset-vaapi

detectors:
  ov:
    type: openvino
    device: GPU  # Requires a supported, accessible Intel GPU

record:
  enabled: true
  continuous:
    days: 1
  motion:
    days: 7
  alerts:
    retain:
      days: 14
      mode: all
  detections:
    retain:
      days: 14
      mode: all

cameras:
  front_door:
    ffmpeg:
      inputs:
        - path: rtsp://USER:PASSWORD@192.168.30.11:554/MAIN_STREAM
          roles: [record]
        - path: rtsp://USER:PASSWORD@192.168.30.11:554/SUB_STREAM
          roles: [detect]
    detect:
      enabled: true
      fps: 5

Important: The camera URLs above are placeholders, not real endpoints. Do not paste actual RTSP passwords into public configuration repositories or screenshots. Use Frigate-supported environment-variable references or protected secrets where practical. On a current Frigate release, detector and model setup can also be managed in the UI; verify the chosen OpenVINO model and its compatibility rather than assuming every GPU can run every model. The YAML uses current continuous, motion, alerts and detections retention keys, not older record.retain.days examples from outdated guides.

For an Intel iGPU, preset-vaapi is a useful starting decoder preset for supported H.264/H.265 streams. Intel QSV presets are alternatives when the exact codec and driver support them. Video decoding and object detection are separate: passing /dev/dri/renderD128 makes the GPU available, but the OpenVINO detector still needs an appropriate model and configuration. If the device node differs, map the actual render device; do not guess that renderD128 always points to the right GPU.

Home Assistant integration: MQTT first, then Frigate

Install and configure the MQTT integration in Home Assistant and point Frigate at the same MQTT broker. The official Frigate integration is installed through HACS, then added in Home Assistant under Settings → Devices & Services. Its URL should reach the mini PC’s Frigate API. On a trusted internal network, the integration can use port 5000 if deliberately exposed to the Home Assistant host; alternatively, the authenticated 8971 endpoint can be used as supported by the current integration. Avoid opening port 5000 broadly because it is unauthenticated.

  1. Verify the MQTT broker is reachable from both Home Assistant and Frigate; use a dedicated broker account and strong password.
  2. Enable MQTT in Frigate and check its logs for connection errors.
  3. Install the Frigate integration in HACS, restart Home Assistant and add the integration using the reachable Frigate URL.
  4. Confirm camera, motion/object sensors, recording switches and recent detections appear as expected.
  5. For live viewing, confirm the Home Assistant host or browser can reach the Frigate RTSP restream on port 8554; add the optional camera card only if it suits your dashboard.

Home Assistant does not become the recording engine: Frigate keeps processing streams even if Home Assistant is down, provided the mini PC, cameras and storage remain available. Conversely, if MQTT is unavailable, Home Assistant automations depending on Frigate entities may stop updating even while Frigate’s own UI and recording continue. Test these failure modes separately.

Network layout: camera VLAN, NAS and Home Assistant

Traffic flowTypical requirementSecurity decision
Camera → FrigateRTSP from camera to mini PCPermit only required camera IP/port
Mini PC → NASNFS or SMB writes to dedicated shareAllow only NVR host; no internet exposure
Mini PC → MQTTBroker TCP connectionDedicated credentials; firewall by host
Home Assistant → FrigateAPI and optional RTSP restreamPrefer authenticated endpoint; restrict 5000/8554
User browser → FrigateAuthenticated UI on 8971LAN/VPN or TLS reverse proxy; no public raw exposure
PoE switch → camerasPower and wired EthernetSize per-camera peak watts and total budget

A dedicated camera VLAN is useful, but it does not automatically isolate a NAS or MQTT broker. Implement explicit inter-VLAN firewall rules for the flows above. Use fixed DHCP reservations for the NAS, mini PC and cameras so your mount and stream configuration do not change unexpectedly. A managed PoE switch is valuable for port status, VLANs and a verifiable power budget; a faster 2.5GbE uplink is optional for most small NVR installations.

If six cameras each send a 4Mbps main stream to Frigate, the incoming main-stream payload is approximately 24Mbps. Recording that footage to the NAS adds approximately 24Mbps of outgoing payload on the mini PC’s network connection, plus substreams, protocol overhead and any viewers. This is not a 48Mbps NAS write rate: the NAS receives roughly the retained main-stream payload. A healthy 1GbE LAN has substantial bandwidth headroom for this illustrative case, although latency, packet loss, switch overload and NAS disk performance can still cause trouble.

Retention policies: choose what you can afford to lose

Frigate currently distinguishes continuous retention, motion retention, and alert/detection retention. For example, you might retain one day of continuous footage, seven days of motion footage and fourteen days of relevant alerts. The largest applicable retention policy governs each segment; exports are managed separately. This is useful when NAS capacity is limited, but it is not equivalent to keeping fourteen days of complete footage.

PolicyWhat is keptStorage effectOperational warning
Continuous 24/7Every recording segment for selected daysHighest, predictable baselineCapacity grows even in quiet scenes
Motion retentionSegments with motionHighly scene-dependentWind, rain, shadows and timestamps can fill storage
Alert/detection retentionSegments overlapping classified activityKeeps important events longerObject detection quality affects what survives
Exported evidenceManually exported recordingsSeparate from ordinary retentionProtect and back up important exports separately

Frigate can delete old footage when free space becomes critically low, regardless of your preferred retention window. Do not rely on that emergency cleanup as capacity planning. Set NAS quotas, track real used space and alert early. Also check NAS snapshot retention: snapshots of a high-churn surveillance share can consume unexpectedly large additional capacity, even when Frigate itself has deleted older segments.

NAS outage behaviour: the failure test that matters most

Before trusting the system, simulate a NAS outage during a controlled maintenance window. Confirm exactly what Frigate does when its media path becomes unavailable. Depending on NFS/SMB behaviour, writes can block, fail or produce FFmpeg/recording errors; do not promise that Frigate will buffer an entire outage in RAM. The tmpfs cache is short-lived and finite, not an automatic failover recording disk. Some live views and detections may continue, but this must be observed rather than assumed.

  1. Confirm the recording share is mounted and a recent segment is visible in Frigate History.
  2. Disconnect the NAS network interface or stop the NAS share in a planned test; note exact start time.
  3. Watch Frigate logs, recording status, tmpfs usage, CPU and whether new recordings are retained.
  4. Restore the NAS share and verify the host mount, container filesystem and permissions before resuming normal service.
  5. Review the timeline for gaps and verify new recordings are written to the NAS, not the mini PC’s root filesystem.
  6. Document the recovery procedure, including how you restart Frigate after a stale mount and how you notify the household of recording loss.

If uninterrupted recording through NAS maintenance is mandatory, change the architecture: record locally on a dedicated disk, then copy supported exports or backups off-host. Do not casually move or delete Frigate-managed recording files with cron/rsync while the service is active; the SQLite index can become inconsistent with the media directory. The project documents media reconciliation for recovery, not as a substitute for a coherent storage design.

Back up the right data — and test restores

A RAID array is not a backup, and a NAS snapshot is not an off-site copy. Protect the local /srv/frigate/config directory, especially the database, secrets and configuration. Stop Frigate or use a consistent SQLite backup mechanism before copying its database; a simple live file copy may not capture a consistent state. Record the Docker Compose file, version/tag, camera firmware settings, MQTT credentials storage and NAS mount configuration. For critical evidence, export important recordings to a separate backup destination with access controls and a retention policy.

DataPrimary locationProtection methodRestore test
Frigate YAML/settingsMini-PC local SSDVersioned, encrypted backupRecreate container and load settings
SQLite databaseMini-PC local SSDConsistent backup with Frigate stopped or SQLite-aware toolingCheck events and recording index
Routine retained videoNAS shareRAID/snapshots where appropriate; capacity monitoringPlay footage from representative dates
Critical incident exportsSeparate protected folder / off-site copyImmutable or offline copy when appropriateOpen file on independent machine
Docker Compose + mount setupLocal host plus config backupText backup with sensitive values protectedRebuild after fresh OS install

A restore rehearsal should include rebuilding the mini PC on a spare SSD or VM, reattaching the same NAS share, restoring the database and verifying that the recording timeline matches actual files. A restored /config with an empty media folder may show missing recordings; media without the matching database may appear orphaned. Frigate documents recovery and media-sync tooling, but that is a last resort, not a reason to neglect consistent backups.

Troubleshooting: common symptoms and precise checks

SymptomLikely causeFirst check
NAS shows less capacity than expectedWrong filesystem mounted at /media/frigatedocker exec frigate df -h /media/frigate
Recordings disappear during NAS rebootNFS/SMB connection lost or stalefindmnt, Frigate logs and NAS export status
Database is lockedSQLite on network storage or multiple writersConfirm /config is local SSD and only one instance writes DB
No space left on device despite free NAS spacetmpfs cache or /dev/shm fulldf -h for each container path
Frigate container crashes with Bus errorInsufficient /dev/shmRecalculate shm_size for detect streams
High CPU, low GPU activityDecoder device mapping/preset incorrectls /dev/dri, FFmpeg logs, GPU stats
No detections in Home AssistantMQTT not configured or integration unavailableBroker logs, Frigate MQTT settings, HA integration
Live view fails in HA but works in FrigateRTSP port 8554 blocked or go2rtc mapping mismatchFirewall and go2rtc stream names
Recordings use far more storage than expectedBitrate/retention/snapshots differ from assumptionsCamera bitrate, Frigate policy, NAS snapshots

Start with filesystem truth, not the Frigate dashboard alone. df reports filesystem space; Frigate’s recordings figure is calculated from indexed recording segments. Deleting media files manually can leave the two inconsistent. For recurring NAS write errors, also check switch port counters, NAS I/O latency, disk health, quota and network mount logs before blaming Frigate.

Commissioning checklist for a dependable installation

  • The mini PC’s local SSD contains Frigate configuration and SQLite; the NAS contains only media.
  • The exact NFS/SMB mount is verified before Frigate starts and after every host reboot.
  • Docker sees the expected NAS filesystem capacity, not the local root filesystem.
  • Each camera has correct detect/record roles and known average recording bitrate.
  • Intel GPU access, decoder preset and OpenVINO model are checked under real activity.
  • Home Assistant’s MQTT broker and Frigate integration are working without public unauthenticated ports.
  • Recording retention fits usable NAS capacity, with quota and low-space alerts.
  • UPS coverage includes the mini PC, NAS, PoE switch and relevant network equipment.
  • NAS outage, power-loss and restore tests have been completed and documented.
  • Critical recordings and configuration have independent backup copies.

Frequently Asked Questions

Can Frigate record directly to a Synology, QNAP or UGREEN NAS?

Yes, provided the NAS offers a correctly configured network share and the Linux mini PC mounts it reliably. Frigate sees the mounted host directory as /media/frigate. The exact NAS export/share configuration differs by vendor, and Frigate recommends local recording storage where reliability is paramount.

Should I put the Frigate database on the NAS?

No. Keep the default SQLite database on a local persistent SSD under /config. The Frigate project warns that network filesystems can cause database locking and corruption. Back up the database consistently to the NAS or another destination, rather than operating it directly over NFS/SMB.

Does Frigate continue recording when Home Assistant is offline?

Normally yes: Frigate is an independent application. It needs its camera streams, its own host and the recording destination, not Home Assistant itself. MQTT-driven Home Assistant entities and automations may be unavailable while Home Assistant or the broker is down.

Will an Intel N100 mini PC handle eight cameras?

Possibly, but the answer depends on detection-stream resolution, frame rate, codec, model, scene activity, concurrent live viewers and driver support. Use the current Frigate hardware guidance and test your real cameras; there is no universal eight-camera guarantee from the processor name alone.

Does a 2.5GbE connection improve Frigate recordings?

Only if Gigabit Ethernet is the actual bottleneck. A handful of 4Mbps cameras creates modest throughput, even with separate detect streams and NAS writes. Network reliability, camera connection stability and NAS latency often matter more than headline link speed. Larger multi-camera systems or shared busy networks may benefit from 2.5GbE.

What happens if the NAS disconnects?

Recording can stop, block or error until the share returns. A tmpfs cache is not a durable, unlimited recording buffer. Configure mount guards and monitoring, test outage recovery, and prefer local recording media if continuous footage is essential.

Verdict: the configuration we would choose

For a practical residential Frigate installation with an existing NAS, our preferred two-box design is an Intel mini PC on wired Ethernet, a local SSD for /config, an explicitly verified NAS NFS recording mount, sensible camera substreams, hardware-assisted decoding and a dedicated MQTT connection to Home Assistant. Keep the NAS share isolated, back up the local database, and treat the mount as a monitored dependency. This makes compute and storage independently upgradeable without pretending the NAS link cannot fail.

If evidence continuity is more important than compactness or storage consolidation, use a local recording disk and send separate protected copies to the NAS instead. The extra disk is often cheaper than discovering that a routine NAS reboot silently created a gap in your security footage.

Related ESP32 and Home Server Guides

Official Documentation and Further Reading

CONTINUE EXPLORING / NAS & HOME SERVERS

Read next

Practical guides related to this article.

Explore the topic →
HARDWARE DECISION GUIDEPlanning your next NAS upgrade?

Compare hardware, storage and software before buying.

Compare options →