Files
ProxMenux/oci/catalog/curated/frigate.json
T
MacRimi 9b5cefb81a feat(oci): GPU selection per host and per image, one notification per update, and App tab for stack containers
- Immich asks what runs its video and its recognition in one menu, in both
  modes, and gives the GPU to the server and to Machine learning; AMD uses ROCm
- Frigate, Ollama, llama.cpp, Faster Whisper and Piper take the image built
  for the chosen GPU
- The acceleration menu offers only what the host can run
- An update or a recreation sends one notification with its result instead of
  the stop, backup and start of each container
- A private bridge with nothing connected is not reported as down
- Secondary containers of a stack appear in the App tab with their version and
  logo; Secure Gateway shows the same update state in both views
- A mistyped value in the wizard asks the same question again
2026-10-02 21:45:38 +02:00

1219 lines
39 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",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/go2rtc.webp"
}
],
"version_file": {
"path": "/opt/frigate/frigate/version.py",
"regex": "VERSION = \"([0-9]+(?:\\.[0-9]+)+)"
},
"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": "rocm",
"label": "AMD (VA-API and ROCm detection)",
"architectures": [
"amd64"
],
"image": {
"reference": "ghcr.io/blakeblackshear/frigate:stable-rocm",
"registry": "ghcr.io",
"repository": "ghcr.io/blakeblackshear/frigate",
"tag": "stable-rocm",
"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": [
"0x1002"
]
},
{
"id": "amd-kfd",
"path_prompt": "AMD compute device",
"host_path_default": "/dev/kfd",
"mode": "0660",
"deny_write": false,
"gid_strategy": "host-device-gid",
"kind": "character-device",
"container_path_strategy": "same-as-host"
}
],
"completion_notes": [
"Frigate uses the AMD GPU for detection once /config/config.yaml defines a detector with type: onnx."
]
},
{
"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"
},
"object_detector": {
"prompt": "Object detector for Frigate",
"devices": [
{
"id": "intel-npu",
"label": "Intel NPU",
"host_glob": "/dev/accel/accel*",
"path_pattern": "/dev/accel/accel[0-9]+",
"sysfs_class": "accel",
"sysfs_vendor": "0x8086",
"completion_notes": [
"Frigate uses the Intel NPU once /config/config.yaml defines a detector with type: openvino and device: NPU."
]
},
{
"id": "coral-pcie",
"label": "Coral PCIe/M.2",
"host_glob": "/dev/apex_*",
"path_pattern": "/dev/apex_[0-9]+",
"completion_notes": [
"Frigate uses the Coral once /config/config.yaml defines a detector with type: edgetpu and device: pci."
]
}
]
},
"volume_preparations": [
{
"container_path": "/config",
"remove_lost_found": true,
"owner_strategy": "mapped-root",
"only_when_mount_type": "managed-volume"
},
{
"container_path": "/media/frigate",
"remove_lost_found": true,
"owner_strategy": "mapped-root",
"only_when_mount_type": "managed-volume"
}
],
"cpu_allocation": "quota"
},
"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
}
}
}
}