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
This commit is contained in:
MacRimi
2026-10-02 21:45:38 +02:00
parent 20ee21c08f
commit 9b5cefb81a
55 changed files with 2294 additions and 113 deletions
+53 -1
View File
@@ -246,7 +246,59 @@
"owner_strategy": "mapped-root",
"only_when_mount_type": "managed-volume"
}
]
],
"hardware_acceleration": {
"prompt": "Acceleration for Faster Whisper",
"default": "cpu",
"profiles": [
{
"id": "cpu",
"label": "CPU",
"image": {
"reference": "lscr.io/linuxserver/faster-whisper:latest",
"registry": "lscr.io",
"repository": "lscr.io/linuxserver/faster-whisper",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"device_requests": []
},
{
"id": "nvidia",
"label": "NVIDIA (CUDA)",
"architectures": [
"amd64"
],
"image": {
"reference": "lscr.io/linuxserver/faster-whisper:gpu",
"registry": "lscr.io",
"repository": "lscr.io/linuxserver/faster-whisper",
"tag": "gpu",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"device_requests": [
{
"id": "nvidia-runtime",
"kind": "nvidia-runtime",
"purpose": "nvidia-cuda",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,utility"
}
]
}
]
}
}
},
"compatibility": {
+43
View File
@@ -884,6 +884,49 @@
}
]
},
{
"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)",
+124 -1
View File
@@ -254,7 +254,130 @@
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {},
"installer_profile": {
"hardware_acceleration": {
"prompt": "Acceleration for llama.cpp",
"default": "cpu",
"profiles": [
{
"id": "cpu",
"label": "CPU",
"image": {
"reference": "ghcr.io/ggml-org/llama.cpp:server",
"registry": "ghcr.io",
"repository": "ghcr.io/ggml-org/llama.cpp",
"tag": "server",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"device_requests": []
},
{
"id": "nvidia",
"label": "NVIDIA (CUDA)",
"architectures": [
"amd64"
],
"image": {
"reference": "ghcr.io/ggml-org/llama.cpp:server-cuda",
"registry": "ghcr.io",
"repository": "ghcr.io/ggml-org/llama.cpp",
"tag": "server-cuda",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"device_requests": [
{
"id": "nvidia-runtime",
"kind": "nvidia-runtime",
"purpose": "nvidia-cuda",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,utility"
}
]
},
{
"id": "rocm",
"label": "AMD (ROCm)",
"architectures": [
"amd64"
],
"image": {
"reference": "ghcr.io/ggml-org/llama.cpp:server-rocm",
"registry": "ghcr.io",
"repository": "ghcr.io/ggml-org/llama.cpp",
"tag": "server-rocm",
"digest": null,
"pull_policy": "resolve-selected-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"
}
]
},
{
"id": "intel",
"label": "Intel (SYCL)",
"architectures": [
"amd64"
],
"image": {
"reference": "ghcr.io/ggml-org/llama.cpp:server-intel",
"registry": "ghcr.io",
"repository": "ghcr.io/ggml-org/llama.cpp",
"tag": "server-intel",
"digest": null,
"pull_policy": "resolve-selected-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"
]
}
]
}
]
}
},
"adaptations": [
{
"id": "imported-compose-source",
+59
View File
@@ -371,11 +371,30 @@
{
"id": "cpu",
"label": "CPU",
"image": {
"reference": "ollama/ollama:latest",
"registry": "docker.io",
"repository": "ollama/ollama",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"device_requests": []
},
{
"id": "nvidia",
"label": "NVIDIA (CUDA)",
"architectures": [
"amd64"
],
"image": {
"reference": "ollama/ollama:latest",
"registry": "docker.io",
"repository": "ollama/ollama",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"device_requests": [
{
"id": "nvidia-runtime",
@@ -390,6 +409,46 @@
"value": "all"
}
]
},
{
"id": "rocm",
"label": "AMD (ROCm)",
"architectures": [
"amd64"
],
"image": {
"reference": "ollama/ollama:rocm",
"registry": "docker.io",
"repository": "ollama/ollama",
"tag": "rocm",
"digest": null,
"pull_policy": "resolve-selected-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"
}
]
}
]
},
+53 -1
View File
@@ -260,7 +260,59 @@
"owner_strategy": "mapped-root",
"only_when_mount_type": "managed-volume"
}
]
],
"hardware_acceleration": {
"prompt": "Acceleration for Piper",
"default": "cpu",
"profiles": [
{
"id": "cpu",
"label": "CPU",
"image": {
"reference": "lscr.io/linuxserver/piper:latest",
"registry": "lscr.io",
"repository": "lscr.io/linuxserver/piper",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"device_requests": []
},
{
"id": "nvidia",
"label": "NVIDIA (CUDA)",
"architectures": [
"amd64"
],
"image": {
"reference": "lscr.io/linuxserver/piper:gpu",
"registry": "lscr.io",
"repository": "lscr.io/linuxserver/piper",
"tag": "gpu",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"device_requests": [
{
"id": "nvidia-runtime",
"kind": "nvidia-runtime",
"purpose": "nvidia-cuda",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,utility"
}
]
}
]
}
}
},
"compatibility": {