Nomploy Nomad Packs

← All packs

frigate v0.1.0

Automation

Frigate — a complete local NVR with real-time AI object detection for IP cameras, built for Home Assistant. Deployed as a single host-networked Nomad service.

nomad-pack run frigate --registry nomploy
…or one line (add registry + run)
curl -fsSL https://packs.nomploy.com/install.sh | sh -s -- frigate

Needs nomad-pack on PATH. The script only adds the nomploy registry and runs this pack.

2 tasks http 8971rtsp 8554webrtc 8555 2 volumes image ghcr.io/blakeblackshear/frigate:stable pinned :stable image bumped today
Variables 13
values.hcl

Save as values.hcl, edit, then run:

nomad-pack run frigate -f values.hcl --registry nomploy
# The name of the Nomad job.
job_name = "frigate"

# The Nomad namespace to deploy into.
namespace = "default"

# The datacenters to deploy to.
datacenters = ["*"]

# The Frigate container image. Pin a tag in production.
image = "ghcr.io/blakeblackshear/frigate:stable"

# Host port for the authenticated Frigate web UI.
port = 8971

# Host port for the internal RTSP restream (go2rtc).
rtsp_port = 8554

# Host port for WebRTC live view (TCP and UDP).
webrtc_port = 8555

# Shared-memory size in bytes for camera frame buffers. Increase for many/high-res cameras.
shm_size = 268435456

# tmpfs size in bytes for /tmp/cache (recording segments).
cache_size = 1073741824

# Named volume for the Frigate config and database (/config).
config_volume = "frigate_config"

# Named volume for recordings and snapshots (/media/frigate).
media_volume = "frigate_media"

# Placement constraints. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
constraints = []

# The task resources. Object detection is CPU-heavy without a hardware accelerator.
resources = {
    cpu    = 2000
    memory = 2048
  }
NameTypeDefaultDescription
job_name string
"frigate"
The name of the Nomad job.
namespace string
"default"
The Nomad namespace to deploy into.
datacenters list
["*"]
The datacenters to deploy to.
image string
"ghcr.io/blakeblackshear/frigate:stable"
The Frigate container image. Pin a tag in production.
port number
8971
Host port for the authenticated Frigate web UI.
rtsp_port number
8554
Host port for the internal RTSP restream (go2rtc).
webrtc_port number
8555
Host port for WebRTC live view (TCP and UDP).
shm_size number
268435456
Shared-memory size in bytes for camera frame buffers. Increase for many/high-res cameras.
cache_size number
1073741824
tmpfs size in bytes for /tmp/cache (recording segments).
config_volume string
"frigate_config"
Named volume for the Frigate config and database (/config).
media_volume string
"frigate_media"
Named volume for recordings and snapshots (/media/frigate).
constraints list
[]
Placement constraints. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
resources object
{
    cpu    = 2000
    memory = 2048
  }
The task resources. Object detection is CPU-heavy without a hardware accelerator.
Back up this pack

This pack stores data in 2 Docker named volumes: frigate_configfrigate_media

restic

# Run on the node hosting this pack. Point restic at your repo first:
#   export RESTIC_REPOSITORY="s3:https://<account>.r2.cloudflarestorage.com/<bucket>"
#   export RESTIC_PASSWORD="<repo-password>"
#   export AWS_ACCESS_KEY_ID=<key>  AWS_SECRET_ACCESS_KEY=<secret>
restic backup \
  /var/lib/docker/volumes/frigate_config/_data \
  /var/lib/docker/volumes/frigate_media/_data

rclone (sync to S3/R2)

rclone sync /var/lib/docker/volumes/frigate_config/_data backup:<bucket>/frigate_config
rclone sync /var/lib/docker/volumes/frigate_media/_data backup:<bucket>/frigate_media

Paths assume the default Docker volume location (/var/lib/docker/volumes). Restore by stopping the job, restoring files into the same volume, and re-running the pack.

Readme

frigate

Frigate is a complete, local network video recorder (NVR) with real-time AI object detection for IP cameras. It runs detection on the decoded video stream (with optional Coral/GPU acceleration), records only when it matters, and integrates tightly with Home Assistant. Everything stays on your own hardware — no cloud.

This pack runs Frigate as a single host-networked Nomad service with the shared-memory and tmpfs settings it needs for frame buffering and recording.

Deploy

nomad-pack run frigate --registry=nomploy

Open http://<node-ip>:8971 and create the admin account. Frigate starts with no cameras — edit config.yml in the config_volume to add them, then restart the job. See the config reference.

Configuration

Variable Default Description
image ghcr.io/blakeblackshear/frigate:stable Container image (pin a tag in production).
port 8971 Host port for the authenticated web UI.
rtsp_port 8554 go2rtc RTSP restream port.
webrtc_port 8555 WebRTC live-view port (TCP + UDP).
shm_size 268435456 (256 MB) Shared memory for frame buffers; raise for cameras.
cache_size 1073741824 (1 GB) tmpfs size for /tmp/cache.
config_volume frigate_config Volume for config and the database (/config).
media_volume frigate_media Volume for recordings and snapshots.
resources 2000 MHz / 2048 MB CPU and memory (detection is CPU-heavy on CPU).

A prestart init task seeds a minimal config.yml (only if one doesn't already exist, so your edits are preserved) and fixes volume permissions.