mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-09-29 18:16:43 +00:00
1161 lines
37 KiB
JSON
1161 lines
37 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": "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."
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"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
|
|
}
|
|
}
|
|
}
|
|
}
|