Files
ProxMenux/oci/catalog/apps/frigate.json
T
MacRimiandClaude Opus 5 bcabcb618c feat(oci): run official container images as native LXC containers
Adds the OCI manager: an engine that turns a Docker Compose file into an
LXC definition, a catalog of 365 applications drawn from LinuxServer.io
and other container image sources, and a per-instance registry recording
what each container was built from. Reachable from the main menu.

Catalog text is translated like every other string in the project: the
taglines go through translate() and land in lang/*.json, so the entries
read in all eight languages instead of only English.

Translation cache builder:
- a failed translation leaves the key absent rather than writing English,
  which previously made the string count as translated forever
- a result identical to a 3+ word source is rejected, catching a provider
  that silently returns the text it was given
- strings that are nothing but glossary terms keep their source spelling
  instead of being discarded as failures
- no backoff between attempts when the provider is deterministic
- application names are protected so "HAOS One" survives translation
- argos joins the provider list, and the workflow reads the OCI sources

Audit & Report:
- findings that moved in the wrong direction between runs are reported
  alongside the ones that improved
- an accepted risk can carry a review date and is flagged when it falls due
- backup checks explain in plain language what they looked at and what to
  do next

Monitor:
- disks can be excluded from periodic reads, and an idle disk says so
  instead of showing a stale temperature
- per-disk identity survives a controller or enclosure change
- scheduled Borg backups resolve their SSH key from the repository entry
- PVE upgrades log the package list and the resulting dpkg changes

The web build no longer copies scripts/ into public/: the documentation
links to GitHub, so nothing read that folder.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-22 18:24:59 +02:00

1131 lines
36 KiB
JSON

{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-frigate",
"status": "laboratory-validated",
"catalog_ui": {
"title": {
"en_US": "Frigate"
},
"tagline": {
"en_US": "NVR with optional VA-API video acceleration and hardware object detectors"
},
"description": {
"en_US": "Frigate adapted as a native Proxmox OCI LXC with persistent configuration, selectable recording storage, tmpfs cache and optional GPU or detector devices."
},
"category": "nvr",
"category_label": "NVR & Cameras",
"author": "Frigate",
"developer": "Frigate",
"icon": null,
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 5000,
"path": "/"
},
"website": "https://frigate.video/",
"documentation": "https://docs.frigate.video/",
"repository": "https://github.com/blakeblackshear/frigate",
"tips": [
"The template installs infrastructure only and never bundles cameras or a Frigate configuration file.",
"VA-API accelerates video decode/encode; it is separate from object detection with Coral, OpenVINO, ROCm or TensorRT.",
"The rolling stable image is kept intact. If unrelated native modules fail intermittently, validate host RAM and CPU stability before changing packages inside the image.",
"GPU passthrough is independent of Coral. Configure Frigate FFmpeg hwaccel_args using preset-vaapi or preset-nvidia; passing devices does not change existing camera configuration. NVIDIA channel workload validation pending."
],
"mini_changelog": [],
"display_version": null,
"updated_at": "2026-09-12"
},
"source": {
"provider": "frigate",
"repository": "https://github.com/blakeblackshear/frigate",
"revision": "37f338d5d6d0c8a117a262aacb7e6184660fd157",
"image_repository_url": "https://ghcr.io/blakeblackshear/frigate",
"readme_pushed_at": "2026-09-12T13:30:04Z",
"compose_sha256": "2aa1dc599c69aaac422305d0d653e3980080f2491ca74e615d08b0e9f402b722",
"generated_at": "2026-09-12T15:58:20+00:00",
"default_branch": "dev",
"readme_raw_url": "https://raw.githubusercontent.com/blakeblackshear/frigate/dev/README.md"
},
"container_contract": {
"service_name": "frigate",
"container_name": "frigate",
"image": {
"reference": "ghcr.io/blakeblackshear/frigate:stable",
"registry": "ghcr.io",
"repository": "ghcr.io/blakeblackshear/frigate",
"tag": "stable",
"digest": null,
"pull_policy": "resolve-rolling-stable-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "TZ",
"example": "Europe/Madrid",
"required": true,
"sensitive": false,
"source": "official-compose-environment"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/etc/localtime",
"compose_source_example": "/etc/localtime",
"read_only": true,
"required": true,
"installation_choice": [
"host-bind"
],
"default": "host-bind",
"managed_volume": {
"backup": false,
"default_size_gb": 1
}
},
{
"id": "volume-1",
"container_path": "/config",
"compose_source_example": "/DATA/AppData/$AppID/config",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
},
{
"id": "volume-2",
"container_path": "/media/frigate",
"compose_source_example": "/mnt/oci-shared/recordings/frigate",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "host-bind",
"managed_volume": {
"backup": false,
"default_size_gb": 100
}
}
],
"ports": [
{
"container_port": 8971,
"published_example": 8971,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
},
{
"container_port": 8554,
"published_example": 8554,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
},
{
"container_port": 8555,
"published_example": 8555,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
},
{
"container_port": 8555,
"published_example": 8555,
"protocol": "udp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": "30s",
"original_compose": "name: frigate\nservices:\n frigate:\n container_name: frigate\n image: ghcr.io/blakeblackshear/frigate:stable\n deploy:\n resources:\n reservations:\n memory: 256M\n devices:\n - /dev/bus/usb:/dev/bus/usb\n - /dev/apex_0:/dev/apex_0\n - /dev/video11:/dev/video11\n - /dev/dri/renderD128:/dev/dri/renderD128\n network_mode: bridge\n privileged: true\n ports:\n - target: 8971\n published: '8971'\n protocol: tcp\n - target: 8554\n published: '8554'\n protocol: tcp\n - target: 8555\n published: '8555'\n protocol: tcp\n - target: 8555\n published: '8555'\n protocol: udp\n restart: unless-stopped\n stop_grace_period: 30s\n shm_size: 512mb\n tmpfs:\n - /tmp/cache:size=1000000000\n volumes:\n - type: bind\n source: /etc/localtime\n target: /etc/localtime\n read_only: true\n - type: bind\n source: /DATA/AppData/$AppID/config\n target: /config\n - type: bind\n source: /DATA/Media\n target: /media/frigate\n"
},
"compose_stack": {
"project_name": "frigate",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "frigate",
"service_count": 1,
"services": [
{
"name": "frigate",
"image": "ghcr.io/blakeblackshear/frigate:stable",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"container_name": "frigate",
"image": "ghcr.io/blakeblackshear/frigate:stable",
"deploy": {
"resources": {
"reservations": {
"memory": "256M"
}
}
},
"devices": [
"/dev/bus/usb:/dev/bus/usb",
"/dev/apex_0:/dev/apex_0",
"/dev/video11:/dev/video11",
"/dev/dri/renderD128:/dev/dri/renderD128"
],
"network_mode": "bridge",
"privileged": true,
"ports": [
{
"target": 8971,
"published": "8971",
"protocol": "tcp"
},
{
"target": 8554,
"published": "8554",
"protocol": "tcp"
},
{
"target": 8555,
"published": "8555",
"protocol": "tcp"
},
{
"target": 8555,
"published": "8555",
"protocol": "udp"
}
],
"restart": "unless-stopped",
"stop_grace_period": "30s",
"shm_size": "512mb",
"tmpfs": [
"/tmp/cache:size=1000000000"
],
"volumes": [
{
"type": "bind",
"source": "/etc/localtime",
"target": "/etc/localtime",
"read_only": true
},
{
"type": "bind",
"source": "/DATA/AppData/$AppID/config",
"target": "/config"
},
{
"type": "bind",
"source": "/DATA/Media",
"target": "/media/frigate"
}
]
}
}
],
"top_level": {
"name": "frigate"
},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "frigate-volume-0",
"service": "frigate",
"container_path": "/etc/localtime",
"mode": "system-bind",
"user_selectable": false,
"backup": false,
"shared_with_other_lxc": false,
"source_path": "/etc/localtime",
"source_path_prompt": null
},
{
"id": "frigate-volume-1",
"service": "frigate",
"container_path": "/config",
"mode": "managed-volume",
"user_selectable": false,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
},
{
"id": "frigate-volume-2",
"service": "frigate",
"container_path": "/media/frigate",
"mode": "host-bind",
"user_selectable": true,
"backup": false,
"shared_with_other_lxc": true,
"source_path": null,
"source_path_prompt": "Host directory for frigate:/media/frigate"
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"frigate"
],
"stop_order": [
"frigate"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "Frigate WebUI",
"scheme": "http",
"port": 5000,
"path": "/",
"source": "laboratory-validated-native-oci-endpoint"
},
{
"label": "go2rtc WebUI",
"scheme": "http",
"port": 1984,
"path": "/",
"source": "integrated-go2rtc-native-oci-endpoint"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"catalog": {
"replaces_discovered_ids": [
"frigate"
]
},
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 4,
"cpuset_requirement": "none-for-current-openvino-lxc-repair",
"memory_mb": 4096,
"swap_mb": 1024,
"rootfs_size_gb": 16,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": false,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 30
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-user-values",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"adaptations": [
{
"id": "persistent-config-and-recording-storage",
"upstream_behavior": "Docker mounts /config and /media/frigate.",
"native_lxc_behavior": "Use a backup-enabled managed volume for /config and let the user choose a managed volume or host bind for /media/frigate.",
"reason": "Configuration is private state while recordings can be large shared data.",
"behavioral_impact": "Recordings are excluded from vzdump by default.",
"validation": "passed-laboratory-profile"
},
{
"id": "tmpfs-cache",
"upstream_behavior": "The official Compose mounts a bounded tmpfs at /tmp/cache.",
"native_lxc_behavior": "Create the equivalent size-limited LXC tmpfs mount.",
"reason": "Avoid persistent cache writes and preserve Frigate memory behavior.",
"behavioral_impact": "Cache is cleared on restart.",
"validation": "passed-laboratory-profile"
},
{
"id": "optional-vaapi-device",
"upstream_behavior": "Docker passes a selected /dev/dri render device.",
"native_lxc_behavior": "Resolve the host render GID and grant only the selected render device to the unprivileged LXC.",
"reason": "Frigate can hardware-accelerate video decode without making the LXC privileged.",
"behavioral_impact": "Requires host-specific device and GID validation.",
"validation": "passed-amd-radeonsi-laboratory-profile"
},
{
"id": "openvino-lxc-cpu-compatibility",
"upstream_behavior": "Frigate ships its detector runtime in the image.",
"native_lxc_behavior": "On amd64, ensure OpenVINO is at least 2026.1.0 and install that exact version with --no-deps only when the bundled runtime is older.",
"reason": "The 2025.4.1 CPU plugin bundled by Frigate 0.18 stable intermittently segfaults while compiling the default model inside an unprivileged LXC.",
"behavioral_impact": "Only the OpenVINO wheel is replaced; NumPy and every other image dependency remain unchanged.",
"validation": "passed-frigate-0.18.0-stable-amd64-three-starts-twenty-compiles"
}
],
"laboratory_contract": {
"requirements": {
"proxmox_min_version": "9.1",
"commands": [
"pct",
"pvesm",
"skopeo"
],
"features": [
"native-oci-lxc"
]
},
"deployment": {
"runtime": "proxmox-native-oci-lxc",
"unprivileged": true,
"entrypoint": "/init",
"working_directory": "/opt/frigate/",
"hostname_default": "frigate",
"onboot_default": false,
"startup_order_default": 30,
"startup_delay_seconds_default": 10,
"features": [
"nesting=1"
],
"ports": [
{
"port": 5000,
"protocol": "tcp",
"purpose": "native-oci-web-ui"
},
{
"port": 1984,
"protocol": "tcp",
"purpose": "integrated-go2rtc-web-ui-api"
},
{
"port": 8554,
"protocol": "tcp",
"purpose": "rtsp-restream"
},
{
"port": 8555,
"protocol": "tcp",
"purpose": "webrtc"
},
{
"port": 8555,
"protocol": "udp",
"purpose": "webrtc"
}
],
"entrypoint_override": "explicit-validated-image-command",
"entrypoint_source": "validated-lxc-oci-profile"
},
"defaults": {
"resources": {
"cores": 4,
"memory_mb": 4096,
"swap_mb": 1024,
"rootfs_size_gb": 16
},
"network": {
"bridge": "vmbr0",
"ipv4_mode": "dhcp",
"ipv4_address": null,
"ipv4_gateway": null,
"firewall": false,
"host_managed": true
},
"environment": {
"TZ": "Europe/Madrid",
"LIBVA_DRIVER_NAME": null
}
},
"configuration_schema": {
"vmid": {
"type": "integer",
"required": false,
"default": null,
"description": "Identificador manual o siguiente VMID libre si se omite."
},
"hostname": {
"type": "string",
"required": true,
"default": "frigate",
"validation": {
"pattern": "^[a-z0-9][a-z0-9-]{0,62}$"
}
},
"rootfs_storage": {
"type": "storage-selector",
"required": true,
"content_types": [
"rootdir"
]
},
"rootfs_size_gb": {
"type": "integer",
"required": true,
"default": 16,
"minimum": 8
},
"cores": {
"type": "integer",
"required": true,
"default": 4,
"minimum": 2
},
"memory_mb": {
"type": "integer",
"required": true,
"default": 4096,
"minimum": 2048
},
"swap_mb": {
"type": "integer",
"required": true,
"default": 1024,
"minimum": 0
},
"bridge": {
"type": "network-bridge-selector",
"required": true,
"default": "vmbr0"
},
"ipv4_mode": {
"type": "select",
"required": true,
"default": "dhcp",
"options": [
"dhcp",
"static"
]
},
"ipv4_address": {
"type": "cidr",
"required_when": {
"field": "ipv4_mode",
"equals": "static"
}
},
"ipv4_gateway": {
"type": "ipv4",
"required_when": {
"field": "ipv4_mode",
"equals": "static"
}
},
"config_storage": {
"type": "storage-selector",
"required": true,
"content_types": [
"rootdir"
],
"description": "Volumen persistente e independiente para /config."
},
"config_size_gb": {
"type": "integer",
"required": true,
"default": 8,
"minimum": 2
},
"media_storage_mode": {
"type": "select",
"required": true,
"default": "host-bind",
"options": [
"managed-volume",
"host-bind",
"rootfs"
],
"description": "Destino persistente de /media/frigate."
},
"media_storage": {
"type": "storage-selector",
"required_when": {
"field": "media_storage_mode",
"equals": "managed-volume"
},
"content_types": [
"rootdir"
]
},
"media_size_gb": {
"type": "integer",
"required_when": {
"field": "media_storage_mode",
"equals": "managed-volume"
},
"default": 100,
"minimum": 10
},
"media_host_path": {
"type": "host-directory",
"required_when": {
"field": "media_storage_mode",
"equals": "host-bind"
},
"default": "/mnt/oci-shared/recordings/frigate/ct${vmid}",
"create_if_missing": true,
"description": "Host path that can be shared with other containers."
},
"cache_size_mb": {
"type": "integer",
"required": true,
"default": 1024,
"minimum": 256
},
"gpu_enabled": {
"type": "boolean",
"required": true,
"default": true
},
"gpu_render_device": {
"type": "host-device-selector",
"required_when": {
"field": "gpu_enabled",
"equals": true
},
"default": "/dev/dri/renderD128",
"filter": "/dev/dri/renderD*"
},
"vaapi_driver": {
"type": "select",
"required": false,
"default": "auto",
"options": [
"auto",
"radeonsi",
"iHD",
"i965"
]
},
"timezone": {
"type": "timezone",
"required": true,
"default": "Europe/Madrid"
},
"onboot": {
"type": "boolean",
"required": true,
"default": false
},
"openvino_cpu_compatibility": {
"type": "boolean",
"required": false,
"default": false,
"hidden": true,
"description": "Reservado para una futura adaptacion validada en hardware estable; no modifica la imagen oficial."
}
},
"mounts": [
{
"id": "config",
"container_path": "/config",
"source": "managed-volume",
"storage_field": "config_storage",
"size_field": "config_size_gb",
"backup": true,
"required": true
},
{
"id": "media",
"container_path": "/media/frigate",
"source_field": "media_storage_mode",
"storage_field": "media_storage",
"size_field": "media_size_gb",
"host_path_field": "media_host_path",
"backup": false,
"required": false
},
{
"id": "cache",
"container_path": "/tmp/cache",
"source": "tmpfs",
"size_field": "cache_size_mb",
"mount_options": [
"rw",
"noexec",
"nosuid",
"nodev"
],
"required": true
}
],
"devices": [
{
"id": "gpu-render",
"enabled_field": "gpu_enabled",
"host_path_field": "gpu_render_device",
"container_path": "/dev/dri/renderD128",
"permissions": "rwm",
"optional": true
}
],
"environment": [
{
"name": "TZ",
"value_from": "timezone"
},
{
"name": "LIBVA_DRIVER_NAME",
"value_from": "vaapi_driver",
"omit_when": "auto"
}
],
"compatibility": {
"openvino_cpu": {
"enabled_field": "openvino_cpu_compatibility",
"status": "pending-validation-on-stable-hardware",
"runtime_policy": "preserve-official-image-runtime",
"automatic_internal_configuration": false,
"description": "No se aplica ninguna sustitucion de paquetes mientras la prueba del host presente errores de memoria."
}
},
"healthcheck": {
"type": "http",
"port": 5000,
"path": "/api/version",
"verify_tls": true,
"interval_seconds": 30,
"timeout_seconds": 10,
"retries": 10,
"start_period_seconds": 120
},
"boundaries": {
"bundles_internal_configuration": false,
"bundles_credentials": false,
"bundles_user_data": false,
"installer_must_not_write_config_yaml": true
},
"notes": [
"Esta plantilla describe la instalacion OCI y su infraestructura persistente.",
"La configuracion funcional de Frigate se realiza despues desde la aplicacion.",
"La WebUI validada para el LXC OCI nativo se publica como http://IP:5000.",
"La imagen incluye go2rtc 1.9.14 y su WebUI/API queda disponible como http://IP:1984.",
"Frigate stable 0.18.0 en amd64 incluye un wheel de Pandas 2.2.3 que provoca SIGSEGV en el Ryzen 7 5700U del laboratorio; el instalador comprueba el import y solo si falla reinstala la misma version desde PyPI.",
"La configuracion inicial de Frigate 0.18 activa OpenVINO CPU. La version 2025.4.1 incluida falla de forma intermitente al compilar el modelo dentro de LXC; en amd64 el instalador asegura OpenVINO 2026.1.0 con --no-deps y conserva NumPy 1.26.4.",
"El modo host-bind permite compartir el almacenamiento multimedia del host entre varios LXC OCI.",
"La opcion rootfs para multimedia es solo adecuada para pruebas breves.",
"La GPU es opcional; el instalador debe validar el dispositivo antes de arrancar el contenedor."
]
},
"application_options": {
"video_acceleration": {
"selectable": true,
"profiles": [
"none",
"vaapi"
],
"validated_profile": "amd-radeonsi-vaapi"
},
"object_detector": {
"selectable": true,
"profiles": [
"cpu",
"coral",
"openvino",
"rocm",
"tensorrt"
],
"openvino": {
"available": true,
"laboratory_validated": false,
"validated_device": "CPU",
"observed_inference_ms": 13.92,
"configuration_location": "/config/config.yaml",
"installer_writes_detector_configuration": false,
"runtime_policy": "preserve-official-image-runtime",
"current_stable_validation": "blocked-by-host-memory-failure",
"compatibility_workaround": null
},
"configuration_owned_by_user": true,
"warning": "Video acceleration and object detection are independent choices; the installer does not write camera or detector YAML."
}
},
"installer_profile": {
"pre_start_repairs": [],
"startup_healthcheck": {
"type": "http",
"scheme": "http",
"port": 5000,
"path": "/api/config",
"timeout_seconds": 120,
"request_timeout_seconds": 3,
"stability_seconds": 0,
"verify_tls": true,
"required": true
},
"host_bind_policies": {
"/media/frigate": {
"create_if_missing": true,
"purpose": "large-recording-storage-outside-native-lxc-backup"
}
},
"tmpfs_mounts": [
{
"id": "frigate-cache",
"container_path": "/tmp/cache",
"default_size_mb": 1024,
"minimum_size_mb": 256,
"size_prompt": "Size of the Frigate temporary cache in MB",
"mount_options": [
"rw",
"noexec",
"nosuid",
"nodev"
]
}
],
"optional_devices": [
{
"id": "coral-pcie",
"kind": "character-device",
"enable_prompt": "Add a Coral PCIe/M.2 device?",
"enabled_default": false,
"path_prompt": "Coral PCIe/M.2 node (e.g. /dev/apex_0)",
"host_path_default": "/dev/apex_0",
"container_path_strategy": "same-as-host",
"mode": "0660",
"deny_write": false,
"gid_strategy": "host-device-gid"
}
],
"version_aware_adaptations": {},
"hardware_acceleration": {
"prompt": "Hardware acceleration for Frigate",
"default": "none",
"profiles": [
{
"id": "none",
"label": "No acceleration (CPU)",
"image": {
"reference": "ghcr.io/blakeblackshear/frigate:stable",
"registry": "ghcr.io",
"repository": "ghcr.io/blakeblackshear/frigate",
"tag": "stable",
"digest": null,
"pull_policy": "resolve-rolling-stable-tag-to-architecture-digest-at-install"
},
"device_requests": []
},
{
"id": "vaapi",
"label": "Intel/AMD VA-API",
"image": {
"reference": "ghcr.io/blakeblackshear/frigate:stable",
"registry": "ghcr.io",
"repository": "ghcr.io/blakeblackshear/frigate",
"tag": "stable",
"digest": null,
"pull_policy": "resolve-rolling-stable-tag-to-architecture-digest-at-install"
},
"device_requests": [
{
"id": "gpu-render",
"path_prompt": "GPU render device",
"host_path_default": "/dev/dri/renderD128",
"mode": "0660",
"deny_write": false,
"gid_strategy": "host-device-gid",
"kind": "character-device",
"container_path_strategy": "same-as-host",
"drm_vendor_ids": [
"0x8086",
"0x1002"
]
}
]
},
{
"id": "nvidia",
"label": "NVIDIA (NVDEC/CUDA)",
"architectures": [
"amd64"
],
"image": {
"reference": "ghcr.io/blakeblackshear/frigate:stable-tensorrt",
"registry": "ghcr.io",
"repository": "ghcr.io/blakeblackshear/frigate",
"tag": "stable-tensorrt",
"digest": null,
"pull_policy": "resolve-rolling-stable-tag-to-architecture-digest-at-install"
},
"device_requests": [
{
"id": "nvidia-runtime",
"kind": "nvidia-runtime",
"purpose": "nvidia-video",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,video,utility"
}
]
}
]
},
"gpu_validation": {
"device_inventory": "host-sysfs-and-stat",
"application_acceleration": "requires-workload-test",
"tone_mapping": "not-implied-by-device-access"
}
},
"image_channel_policy": {
"channel": "stable",
"rolling": true,
"version_pinned": false,
"reason": "Frigate publishes stable as its official rolling production tag and does not publish latest.",
"official_reference": "https://docs.frigate.video/frigate/installation/"
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": true,
"supported_compose_keys": [
"container_name",
"environment",
"image",
"ports",
"restart",
"stop_grace_period",
"volumes"
],
"untranslated_blockers": [],
"policy": "The native single-LXC installation path translates persistent storage, the bounded tmpfs cache and optional VA-API device mapping. Frigate cameras and detector configuration remain owned by the user. The rolling stable image and its bundled Python runtime are preserved without package replacement."
},
"validation": {
"schema": "passed-at-generation",
"validated_profile": {
"id": "pve55-amd-vaapi-openvino",
"description": "Reproducible profile based on a validated working deployment.",
"validated_on": "2026-08-26",
"validation_status": "passed",
"image": {
"repository": "blakeblackshear/frigate",
"tag": "0.17.1",
"architecture": "amd64"
},
"container": {
"ostype": "debian",
"cmode": "console",
"unprivileged": true,
"entrypoint": "/init",
"working_directory": "/opt/frigate/",
"halt_signal": "SIGTERM",
"features": [
"nesting=1"
],
"onboot": false
},
"resources": {
"cores": 4,
"cpuset": "0-3",
"cpuset_requirement": "must-include-cpu0",
"memory_mb": 4096,
"swap_mb": 1024,
"rootfs_storage": "local-lvm",
"rootfs_size_gb": 16
},
"network": {
"interface": "eth0",
"type": "veth",
"bridge": "vmbr0",
"ipv4_mode": "dhcp",
"host_managed": true,
"firewall": false
},
"storage": {
"config": {
"mode": "managed-volume",
"storage": "local-lvm",
"size_gb": 8,
"container_path": "/config",
"backup": true
},
"media": {
"mode": "host-bind",
"host_path_template": "/mnt/oci-shared/frigate/ct${vmid}/media",
"container_path": "/media/frigate",
"backup": false,
"create_if_missing": true,
"pre_start_check": {
"type": "host-mountpoint",
"path": "/mnt/oci-shared",
"failure_mode": "abort-start"
}
},
"cache": {
"mode": "tmpfs",
"size_mb": 1024,
"container_path": "/tmp/cache",
"mount_options": [
"rw",
"nosuid",
"nodev"
]
}
},
"gpu": {
"enabled": true,
"host_path": "/dev/dri/renderD128",
"container_path": "/dev/dri/renderD128",
"mode": "0660",
"gid_strategy": "resolve-render-group-on-host",
"validated_host_gid": 993,
"vaapi_driver": "radeonsi"
},
"environment_overrides": {
"TZ": "Europe/Madrid",
"LIBVA_DRIVER_NAME": "radeonsi"
},
"preserve_image_environment": true,
"openvino": {
"enabled": true,
"device": "CPU",
"package": "openvino==2026.1.0",
"installed_version": "2026.1.0-21367-63e31528c62-releases/2026/1",
"installation_scope": "oci-rootfs",
"install_command": [
"python3",
"-m",
"pip",
"install",
"--no-cache-dir",
"--break-system-packages",
"openvino==2026.1.0"
],
"detector_configuration_managed_by_installer": false,
"reason": "Evita el fallo del plugin CPU de la version OpenVINO incluida originalmente en Frigate 0.17.1 bajo LXC."
},
"validation": {
"web_ui": "healthy",
"gpu_vaapi": "passed",
"persistent_config": "passed",
"persistent_media": "passed",
"tmpfs_cache": "passed",
"openvino_cpu": "passed",
"real_streams": "passed",
"openvino_inference_ms_observed": 13.92,
"cpu_detector_inference_ms_observed": 21.23
}
},
"stable_validation": {
"validated_on": "2026-09-13",
"host": "pve55-amd-ryzen-7-5700u",
"image": {
"tag": "stable",
"version": "0.18.0-77a66e7",
"digest": "sha256:9678a83a76e4730ac7d9ea7428370e32ae656d6b312aaad30d6c69f3fef14d35"
},
"status": "blocked-by-host-hardware-instability",
"observed_failure": {
"result": "intermittent-native-faults-across-openvino-shapely-pandas-pvesh-and-perl",
"host_memtester": "failed-possible-bad-address-line",
"storage_health": "nvme-smart-passed-zero-media-errors"
},
"verification": {
"clean_install": "invalid-until-host-memory-is-repaired",
"official_runtime_preserved": true
}
},
"source_profile": "frigate-oci.json",
"automatic_installer_translation": {
"persistent_config": "covered",
"recording_storage": "covered-managed-volume-or-created-host-bind",
"tmpfs_cache": "covered-native-lxc-mount-entry",
"vaapi_device": "covered-native-proxmox-dev-property-with-host-gid",
"openvino_stable": "preserve-official-image-runtime-pending-healthy-host-validation",
"clean_install_stable": "blocked-by-confirmed-host-memory-error"
},
"stable_channel_image": "pending-revalidation-after-host-memory-repair"
},
"lifecycle": {
"update_strategy": "resolve-stable-image-then-replace-rootfs-preserve-/config-and-selected-/media/frigate-storage",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-source-revision-and-resolved-stable-image-digest",
"automatic_unattended_updates": false,
"validated_workflows": {
"install": [
"validate-requirements",
"resolve-options",
"pull-oci-image",
"create-container",
"attach-persistent-storage",
"attach-optional-devices",
"apply-runtime-environment",
"apply-optional-compatibility",
"start-container",
"wait-for-healthcheck"
],
"update": [
"stop-container",
"backup-container-definition",
"pull-oci-image",
"recreate-rootfs-preserving-mounts",
"start-container",
"wait-for-healthcheck"
],
"uninstall": {
"remove_rootfs": true,
"preserve_config_by_default": true,
"preserve_media_by_default": true
}
}
}
}