feat(oci): offer GPU acceleration to the ArtCraft apps built on the LinuxServer Selkies base

This commit is contained in:
MacRimi
2026-11-04 18:11:41 +01:00
parent e916c3b8bb
commit b7167ac498
31 changed files with 3059 additions and 64 deletions
+115 -2
View File
@@ -41,8 +41,8 @@
"Use a trusted HTTPS reverse proxy for browser access. Port 3001 uses the upstream self-signed certificate; port 3000 is for an HTTP reverse-proxy backend.",
"The upstream default has no login. Optional CUSTOM_USER and PASSWORD variables enable HTTP basic authentication; do not expose an unauthenticated desktop to untrusted networks.",
"/config holds settings and desktop state and is included in Proxmox backups. /storage holds documents and supports a managed volume or an explicitly selected host directory; host directories require separate backups.",
"The default uses software rendering. GPU acceleration and other CPU architectures are not claimed tested by a CPU-only amd64 installation.",
"Without an assigned GPU, an application may ask to switch to CPU rendering. Choose the CPU option; hardware acceleration is not required for the default configuration."
"The default installation draws on the CPU. The advanced installation can assign an Intel or AMD GPU, which the desktop, the application and the video stream then use; NVIDIA is offered when the host has its driver and the NVIDIA Container Toolkit.",
"Without a GPU, an application may ask to switch to CPU rendering. Choose the CPU option; the application remembers it."
],
"mini_changelog": [],
"display_version": null,
@@ -112,6 +112,14 @@
"required": false,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "LC_ALL",
"example": "",
"required": false,
"sensitive": false,
"source": "upstream-documentation",
"prompt": "Language/locale (e.g. es_ES.UTF-8; translation of every application is not guaranteed)"
}
],
"volumes": [
@@ -365,6 +373,111 @@
"stability_seconds": 8,
"accept_any_status": true,
"verify_tls": true
},
"selkies": {
"base": "FROM ghcr.io/linuxserver/baseimage-selkies:ubunturesolute@sha256:6efa3fd775a552938d862f75975d34c418ad26d028ba2c952da58682cfe1cb47",
"dockerfile_url": "https://raw.githubusercontent.com/junkerderprovinz/artcraft-apps/32bee0dea9bdaf5310c693210bea0d732a129ae8/Dockerfile",
"dockerfile_sha256": "69ab1a81d1696d1bd143a6fa5a121c034ddfb3e83008969340e8cd2413547fe1",
"reviewed_on": "2026-11-04",
"documentation": "https://docs.linuxserver.io/images/docker-baseimage-selkies/",
"nvidia": "available-in-advanced-mode-with-compatible-host-driver-and-toolkit",
"validation": "Intel/AMD tested on a Radeon 680M: GL compositor and VAAPI encoding on the render node"
},
"device_requests": [],
"optional_devices": [],
"hardware_acceleration": {
"prompt": "Selkies desktop and streaming acceleration",
"default": "none",
"profiles": [
{
"id": "none",
"label": "No GPU (CPU)",
"device_requests": [],
"environment": [
{
"name": "AUTO_GPU",
"value": "false"
}
]
},
{
"id": "vaapi",
"label": "Intel/AMD (streaming rendering and encoding)",
"device_requests": [
{
"id": "selkies-render",
"kind": "character-device",
"path_prompt": "Intel/AMD render node",
"host_path_default": "/dev/dri/renderD128",
"container_path_strategy": "same-as-host",
"mode": "0660",
"deny_write": false,
"gid_strategy": "host-device-gid",
"drm_vendor_ids": [
"0x8086",
"0x1002"
]
}
],
"environment": [
{
"name": "PIXELFLUX_WAYLAND",
"value": "true"
},
{
"name": "AUTO_GPU",
"value": "false"
}
],
"environment_from_devices": {
"DRINODE": [
"selkies-render"
],
"DRI_NODE": [
"selkies-render"
],
"ATTACHED_DEVICES_PERMS": [
"selkies-render"
]
}
},
{
"id": "nvidia",
"label": "NVIDIA (Selkies rendering and NVENC)",
"device_requests": [
{
"id": "selkies-nvidia",
"kind": "nvidia-runtime",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "AUTO_GPU",
"value": "true"
},
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,video,graphics,utility,display"
}
]
}
]
},
"gpu_validation": {
"device_inventory": "host-sysfs-and-stat",
"application_acceleration": "requires-workload-test",
"tone_mapping": "not-implied-by-device-access"
},
"device_permissions": {
"strategy": "linuxserver-native-init",
"service_user": "abc",
"environment": "ATTACHED_DEVICES_PERMS",
"paths": "all-resolved-selected-character-devices"
}
},
"adaptations": [
+115 -2
View File
@@ -41,8 +41,8 @@
"Use a trusted HTTPS reverse proxy for browser access. Port 3001 uses the upstream self-signed certificate; port 3000 is for an HTTP reverse-proxy backend.",
"The upstream default has no login. Optional CUSTOM_USER and PASSWORD variables enable HTTP basic authentication; do not expose an unauthenticated desktop to untrusted networks.",
"/config holds settings and desktop state and is included in Proxmox backups. /storage holds documents and supports a managed volume or an explicitly selected host directory; host directories require separate backups.",
"The default uses software rendering. GPU acceleration and other CPU architectures are not claimed tested by a CPU-only amd64 installation.",
"Without an assigned GPU, an application may ask to switch to CPU rendering. Choose the CPU option; hardware acceleration is not required for the default configuration."
"The default installation draws on the CPU. The advanced installation can assign an Intel or AMD GPU, which the desktop, the application and the video stream then use; NVIDIA is offered when the host has its driver and the NVIDIA Container Toolkit.",
"Without a GPU, an application may ask to switch to CPU rendering. Choose the CPU option; the application remembers it."
],
"mini_changelog": [],
"display_version": null,
@@ -112,6 +112,14 @@
"required": false,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "LC_ALL",
"example": "",
"required": false,
"sensitive": false,
"source": "upstream-documentation",
"prompt": "Language/locale (e.g. es_ES.UTF-8; translation of every application is not guaranteed)"
}
],
"volumes": [
@@ -365,6 +373,111 @@
"stability_seconds": 8,
"accept_any_status": true,
"verify_tls": true
},
"selkies": {
"base": "FROM ghcr.io/linuxserver/baseimage-selkies:ubunturesolute@sha256:6efa3fd775a552938d862f75975d34c418ad26d028ba2c952da58682cfe1cb47",
"dockerfile_url": "https://raw.githubusercontent.com/junkerderprovinz/artcraft-apps/32bee0dea9bdaf5310c693210bea0d732a129ae8/Dockerfile",
"dockerfile_sha256": "69ab1a81d1696d1bd143a6fa5a121c034ddfb3e83008969340e8cd2413547fe1",
"reviewed_on": "2026-11-04",
"documentation": "https://docs.linuxserver.io/images/docker-baseimage-selkies/",
"nvidia": "available-in-advanced-mode-with-compatible-host-driver-and-toolkit",
"validation": "Intel/AMD tested on a Radeon 680M: GL compositor and VAAPI encoding on the render node"
},
"device_requests": [],
"optional_devices": [],
"hardware_acceleration": {
"prompt": "Selkies desktop and streaming acceleration",
"default": "none",
"profiles": [
{
"id": "none",
"label": "No GPU (CPU)",
"device_requests": [],
"environment": [
{
"name": "AUTO_GPU",
"value": "false"
}
]
},
{
"id": "vaapi",
"label": "Intel/AMD (streaming rendering and encoding)",
"device_requests": [
{
"id": "selkies-render",
"kind": "character-device",
"path_prompt": "Intel/AMD render node",
"host_path_default": "/dev/dri/renderD128",
"container_path_strategy": "same-as-host",
"mode": "0660",
"deny_write": false,
"gid_strategy": "host-device-gid",
"drm_vendor_ids": [
"0x8086",
"0x1002"
]
}
],
"environment": [
{
"name": "PIXELFLUX_WAYLAND",
"value": "true"
},
{
"name": "AUTO_GPU",
"value": "false"
}
],
"environment_from_devices": {
"DRINODE": [
"selkies-render"
],
"DRI_NODE": [
"selkies-render"
],
"ATTACHED_DEVICES_PERMS": [
"selkies-render"
]
}
},
{
"id": "nvidia",
"label": "NVIDIA (Selkies rendering and NVENC)",
"device_requests": [
{
"id": "selkies-nvidia",
"kind": "nvidia-runtime",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "AUTO_GPU",
"value": "true"
},
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,video,graphics,utility,display"
}
]
}
]
},
"gpu_validation": {
"device_inventory": "host-sysfs-and-stat",
"application_acceleration": "requires-workload-test",
"tone_mapping": "not-implied-by-device-access"
},
"device_permissions": {
"strategy": "linuxserver-native-init",
"service_user": "abc",
"environment": "ATTACHED_DEVICES_PERMS",
"paths": "all-resolved-selected-character-devices"
}
},
"adaptations": [
+115 -2
View File
@@ -41,8 +41,8 @@
"Use a trusted HTTPS reverse proxy for browser access. Port 3001 uses the upstream self-signed certificate; port 3000 is for an HTTP reverse-proxy backend.",
"The upstream default has no login. Optional CUSTOM_USER and PASSWORD variables enable HTTP basic authentication; do not expose an unauthenticated desktop to untrusted networks.",
"/config holds settings and desktop state and is included in Proxmox backups. /storage holds documents and supports a managed volume or an explicitly selected host directory; host directories require separate backups.",
"The default uses software rendering. GPU acceleration and other CPU architectures are not claimed tested by a CPU-only amd64 installation.",
"Without an assigned GPU, an application may ask to switch to CPU rendering. Choose the CPU option; hardware acceleration is not required for the default configuration."
"The default installation draws on the CPU. The advanced installation can assign an Intel or AMD GPU, which the desktop, the application and the video stream then use; NVIDIA is offered when the host has its driver and the NVIDIA Container Toolkit.",
"Without a GPU, an application may ask to switch to CPU rendering. Choose the CPU option; the application remembers it."
],
"mini_changelog": [],
"display_version": null,
@@ -112,6 +112,14 @@
"required": false,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "LC_ALL",
"example": "",
"required": false,
"sensitive": false,
"source": "upstream-documentation",
"prompt": "Language/locale (e.g. es_ES.UTF-8; translation of every application is not guaranteed)"
}
],
"volumes": [
@@ -365,6 +373,111 @@
"stability_seconds": 8,
"accept_any_status": true,
"verify_tls": true
},
"selkies": {
"base": "FROM ghcr.io/linuxserver/baseimage-selkies:ubunturesolute@sha256:6efa3fd775a552938d862f75975d34c418ad26d028ba2c952da58682cfe1cb47",
"dockerfile_url": "https://raw.githubusercontent.com/junkerderprovinz/artcraft-apps/32bee0dea9bdaf5310c693210bea0d732a129ae8/Dockerfile",
"dockerfile_sha256": "69ab1a81d1696d1bd143a6fa5a121c034ddfb3e83008969340e8cd2413547fe1",
"reviewed_on": "2026-11-04",
"documentation": "https://docs.linuxserver.io/images/docker-baseimage-selkies/",
"nvidia": "available-in-advanced-mode-with-compatible-host-driver-and-toolkit",
"validation": "Intel/AMD tested on a Radeon 680M: GL compositor and VAAPI encoding on the render node"
},
"device_requests": [],
"optional_devices": [],
"hardware_acceleration": {
"prompt": "Selkies desktop and streaming acceleration",
"default": "none",
"profiles": [
{
"id": "none",
"label": "No GPU (CPU)",
"device_requests": [],
"environment": [
{
"name": "AUTO_GPU",
"value": "false"
}
]
},
{
"id": "vaapi",
"label": "Intel/AMD (streaming rendering and encoding)",
"device_requests": [
{
"id": "selkies-render",
"kind": "character-device",
"path_prompt": "Intel/AMD render node",
"host_path_default": "/dev/dri/renderD128",
"container_path_strategy": "same-as-host",
"mode": "0660",
"deny_write": false,
"gid_strategy": "host-device-gid",
"drm_vendor_ids": [
"0x8086",
"0x1002"
]
}
],
"environment": [
{
"name": "PIXELFLUX_WAYLAND",
"value": "true"
},
{
"name": "AUTO_GPU",
"value": "false"
}
],
"environment_from_devices": {
"DRINODE": [
"selkies-render"
],
"DRI_NODE": [
"selkies-render"
],
"ATTACHED_DEVICES_PERMS": [
"selkies-render"
]
}
},
{
"id": "nvidia",
"label": "NVIDIA (Selkies rendering and NVENC)",
"device_requests": [
{
"id": "selkies-nvidia",
"kind": "nvidia-runtime",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "AUTO_GPU",
"value": "true"
},
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,video,graphics,utility,display"
}
]
}
]
},
"gpu_validation": {
"device_inventory": "host-sysfs-and-stat",
"application_acceleration": "requires-workload-test",
"tone_mapping": "not-implied-by-device-access"
},
"device_permissions": {
"strategy": "linuxserver-native-init",
"service_user": "abc",
"environment": "ATTACHED_DEVICES_PERMS",
"paths": "all-resolved-selected-character-devices"
}
},
"adaptations": [
+115 -2
View File
@@ -41,8 +41,8 @@
"Use a trusted HTTPS reverse proxy for browser access. Port 3001 uses the upstream self-signed certificate; port 3000 is for an HTTP reverse-proxy backend.",
"The upstream default has no login. Optional CUSTOM_USER and PASSWORD variables enable HTTP basic authentication; do not expose an unauthenticated desktop to untrusted networks.",
"/config holds settings and desktop state and is included in Proxmox backups. /storage holds documents and supports a managed volume or an explicitly selected host directory; host directories require separate backups.",
"The default uses software rendering. GPU acceleration and other CPU architectures are not claimed tested by a CPU-only amd64 installation.",
"Without an assigned GPU, an application may ask to switch to CPU rendering. Choose the CPU option; hardware acceleration is not required for the default configuration."
"The default installation draws on the CPU. The advanced installation can assign an Intel or AMD GPU, which the desktop, the application and the video stream then use; NVIDIA is offered when the host has its driver and the NVIDIA Container Toolkit.",
"Without a GPU, an application may ask to switch to CPU rendering. Choose the CPU option; the application remembers it."
],
"mini_changelog": [],
"display_version": null,
@@ -112,6 +112,14 @@
"required": false,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "LC_ALL",
"example": "",
"required": false,
"sensitive": false,
"source": "upstream-documentation",
"prompt": "Language/locale (e.g. es_ES.UTF-8; translation of every application is not guaranteed)"
}
],
"volumes": [
@@ -365,6 +373,111 @@
"stability_seconds": 8,
"accept_any_status": true,
"verify_tls": true
},
"selkies": {
"base": "FROM ghcr.io/linuxserver/baseimage-selkies:ubunturesolute@sha256:6efa3fd775a552938d862f75975d34c418ad26d028ba2c952da58682cfe1cb47",
"dockerfile_url": "https://raw.githubusercontent.com/junkerderprovinz/artcraft-apps/32bee0dea9bdaf5310c693210bea0d732a129ae8/Dockerfile",
"dockerfile_sha256": "69ab1a81d1696d1bd143a6fa5a121c034ddfb3e83008969340e8cd2413547fe1",
"reviewed_on": "2026-11-04",
"documentation": "https://docs.linuxserver.io/images/docker-baseimage-selkies/",
"nvidia": "available-in-advanced-mode-with-compatible-host-driver-and-toolkit",
"validation": "Intel/AMD tested on a Radeon 680M: GL compositor and VAAPI encoding on the render node"
},
"device_requests": [],
"optional_devices": [],
"hardware_acceleration": {
"prompt": "Selkies desktop and streaming acceleration",
"default": "none",
"profiles": [
{
"id": "none",
"label": "No GPU (CPU)",
"device_requests": [],
"environment": [
{
"name": "AUTO_GPU",
"value": "false"
}
]
},
{
"id": "vaapi",
"label": "Intel/AMD (streaming rendering and encoding)",
"device_requests": [
{
"id": "selkies-render",
"kind": "character-device",
"path_prompt": "Intel/AMD render node",
"host_path_default": "/dev/dri/renderD128",
"container_path_strategy": "same-as-host",
"mode": "0660",
"deny_write": false,
"gid_strategy": "host-device-gid",
"drm_vendor_ids": [
"0x8086",
"0x1002"
]
}
],
"environment": [
{
"name": "PIXELFLUX_WAYLAND",
"value": "true"
},
{
"name": "AUTO_GPU",
"value": "false"
}
],
"environment_from_devices": {
"DRINODE": [
"selkies-render"
],
"DRI_NODE": [
"selkies-render"
],
"ATTACHED_DEVICES_PERMS": [
"selkies-render"
]
}
},
{
"id": "nvidia",
"label": "NVIDIA (Selkies rendering and NVENC)",
"device_requests": [
{
"id": "selkies-nvidia",
"kind": "nvidia-runtime",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "AUTO_GPU",
"value": "true"
},
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,video,graphics,utility,display"
}
]
}
]
},
"gpu_validation": {
"device_inventory": "host-sysfs-and-stat",
"application_acceleration": "requires-workload-test",
"tone_mapping": "not-implied-by-device-access"
},
"device_permissions": {
"strategy": "linuxserver-native-init",
"service_user": "abc",
"environment": "ATTACHED_DEVICES_PERMS",
"paths": "all-resolved-selected-character-devices"
}
},
"adaptations": [
+115 -2
View File
@@ -41,8 +41,8 @@
"Use a trusted HTTPS reverse proxy for browser access. Port 3001 uses the upstream self-signed certificate; port 3000 is for an HTTP reverse-proxy backend.",
"The upstream default has no login. Optional CUSTOM_USER and PASSWORD variables enable HTTP basic authentication; do not expose an unauthenticated desktop to untrusted networks.",
"/config holds settings and desktop state and is included in Proxmox backups. /storage holds documents and supports a managed volume or an explicitly selected host directory; host directories require separate backups.",
"The default uses software rendering. GPU acceleration and other CPU architectures are not claimed tested by a CPU-only amd64 installation.",
"Without an assigned GPU, an application may ask to switch to CPU rendering. Choose the CPU option; hardware acceleration is not required for the default configuration."
"The default installation draws on the CPU. The advanced installation can assign an Intel or AMD GPU, which the desktop, the application and the video stream then use; NVIDIA is offered when the host has its driver and the NVIDIA Container Toolkit.",
"Without a GPU, an application may ask to switch to CPU rendering. Choose the CPU option; the application remembers it."
],
"mini_changelog": [],
"display_version": null,
@@ -112,6 +112,14 @@
"required": false,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "LC_ALL",
"example": "",
"required": false,
"sensitive": false,
"source": "upstream-documentation",
"prompt": "Language/locale (e.g. es_ES.UTF-8; translation of every application is not guaranteed)"
}
],
"volumes": [
@@ -365,6 +373,111 @@
"stability_seconds": 8,
"accept_any_status": true,
"verify_tls": true
},
"selkies": {
"base": "FROM ghcr.io/linuxserver/baseimage-selkies:ubunturesolute@sha256:6efa3fd775a552938d862f75975d34c418ad26d028ba2c952da58682cfe1cb47",
"dockerfile_url": "https://raw.githubusercontent.com/junkerderprovinz/artcraft-apps/32bee0dea9bdaf5310c693210bea0d732a129ae8/Dockerfile",
"dockerfile_sha256": "69ab1a81d1696d1bd143a6fa5a121c034ddfb3e83008969340e8cd2413547fe1",
"reviewed_on": "2026-11-04",
"documentation": "https://docs.linuxserver.io/images/docker-baseimage-selkies/",
"nvidia": "available-in-advanced-mode-with-compatible-host-driver-and-toolkit",
"validation": "Intel/AMD tested on a Radeon 680M: GL compositor and VAAPI encoding on the render node"
},
"device_requests": [],
"optional_devices": [],
"hardware_acceleration": {
"prompt": "Selkies desktop and streaming acceleration",
"default": "none",
"profiles": [
{
"id": "none",
"label": "No GPU (CPU)",
"device_requests": [],
"environment": [
{
"name": "AUTO_GPU",
"value": "false"
}
]
},
{
"id": "vaapi",
"label": "Intel/AMD (streaming rendering and encoding)",
"device_requests": [
{
"id": "selkies-render",
"kind": "character-device",
"path_prompt": "Intel/AMD render node",
"host_path_default": "/dev/dri/renderD128",
"container_path_strategy": "same-as-host",
"mode": "0660",
"deny_write": false,
"gid_strategy": "host-device-gid",
"drm_vendor_ids": [
"0x8086",
"0x1002"
]
}
],
"environment": [
{
"name": "PIXELFLUX_WAYLAND",
"value": "true"
},
{
"name": "AUTO_GPU",
"value": "false"
}
],
"environment_from_devices": {
"DRINODE": [
"selkies-render"
],
"DRI_NODE": [
"selkies-render"
],
"ATTACHED_DEVICES_PERMS": [
"selkies-render"
]
}
},
{
"id": "nvidia",
"label": "NVIDIA (Selkies rendering and NVENC)",
"device_requests": [
{
"id": "selkies-nvidia",
"kind": "nvidia-runtime",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "AUTO_GPU",
"value": "true"
},
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,video,graphics,utility,display"
}
]
}
]
},
"gpu_validation": {
"device_inventory": "host-sysfs-and-stat",
"application_acceleration": "requires-workload-test",
"tone_mapping": "not-implied-by-device-access"
},
"device_permissions": {
"strategy": "linuxserver-native-init",
"service_user": "abc",
"environment": "ATTACHED_DEVICES_PERMS",
"paths": "all-resolved-selected-character-devices"
}
},
"adaptations": [
+115 -2
View File
@@ -41,8 +41,8 @@
"Use a trusted HTTPS reverse proxy for browser access. Port 3001 uses the upstream self-signed certificate; port 3000 is for an HTTP reverse-proxy backend.",
"The upstream default has no login. Optional CUSTOM_USER and PASSWORD variables enable HTTP basic authentication; do not expose an unauthenticated desktop to untrusted networks.",
"/config holds settings and desktop state and is included in Proxmox backups. /storage holds documents and supports a managed volume or an explicitly selected host directory; host directories require separate backups.",
"The default uses software rendering. GPU acceleration and other CPU architectures are not claimed tested by a CPU-only amd64 installation.",
"Without an assigned GPU, an application may ask to switch to CPU rendering. Choose the CPU option; hardware acceleration is not required for the default configuration."
"The default installation draws on the CPU. The advanced installation can assign an Intel or AMD GPU, which the desktop, the application and the video stream then use; NVIDIA is offered when the host has its driver and the NVIDIA Container Toolkit.",
"Without a GPU, an application may ask to switch to CPU rendering. Choose the CPU option; the application remembers it."
],
"mini_changelog": [],
"display_version": null,
@@ -112,6 +112,14 @@
"required": false,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "LC_ALL",
"example": "",
"required": false,
"sensitive": false,
"source": "upstream-documentation",
"prompt": "Language/locale (e.g. es_ES.UTF-8; translation of every application is not guaranteed)"
}
],
"volumes": [
@@ -365,6 +373,111 @@
"stability_seconds": 8,
"accept_any_status": true,
"verify_tls": true
},
"selkies": {
"base": "FROM ghcr.io/linuxserver/baseimage-selkies:ubunturesolute@sha256:6efa3fd775a552938d862f75975d34c418ad26d028ba2c952da58682cfe1cb47",
"dockerfile_url": "https://raw.githubusercontent.com/junkerderprovinz/artcraft-apps/32bee0dea9bdaf5310c693210bea0d732a129ae8/Dockerfile",
"dockerfile_sha256": "69ab1a81d1696d1bd143a6fa5a121c034ddfb3e83008969340e8cd2413547fe1",
"reviewed_on": "2026-11-04",
"documentation": "https://docs.linuxserver.io/images/docker-baseimage-selkies/",
"nvidia": "available-in-advanced-mode-with-compatible-host-driver-and-toolkit",
"validation": "Intel/AMD tested on a Radeon 680M: GL compositor and VAAPI encoding on the render node"
},
"device_requests": [],
"optional_devices": [],
"hardware_acceleration": {
"prompt": "Selkies desktop and streaming acceleration",
"default": "none",
"profiles": [
{
"id": "none",
"label": "No GPU (CPU)",
"device_requests": [],
"environment": [
{
"name": "AUTO_GPU",
"value": "false"
}
]
},
{
"id": "vaapi",
"label": "Intel/AMD (streaming rendering and encoding)",
"device_requests": [
{
"id": "selkies-render",
"kind": "character-device",
"path_prompt": "Intel/AMD render node",
"host_path_default": "/dev/dri/renderD128",
"container_path_strategy": "same-as-host",
"mode": "0660",
"deny_write": false,
"gid_strategy": "host-device-gid",
"drm_vendor_ids": [
"0x8086",
"0x1002"
]
}
],
"environment": [
{
"name": "PIXELFLUX_WAYLAND",
"value": "true"
},
{
"name": "AUTO_GPU",
"value": "false"
}
],
"environment_from_devices": {
"DRINODE": [
"selkies-render"
],
"DRI_NODE": [
"selkies-render"
],
"ATTACHED_DEVICES_PERMS": [
"selkies-render"
]
}
},
{
"id": "nvidia",
"label": "NVIDIA (Selkies rendering and NVENC)",
"device_requests": [
{
"id": "selkies-nvidia",
"kind": "nvidia-runtime",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "AUTO_GPU",
"value": "true"
},
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,video,graphics,utility,display"
}
]
}
]
},
"gpu_validation": {
"device_inventory": "host-sysfs-and-stat",
"application_acceleration": "requires-workload-test",
"tone_mapping": "not-implied-by-device-access"
},
"device_permissions": {
"strategy": "linuxserver-native-init",
"service_user": "abc",
"environment": "ATTACHED_DEVICES_PERMS",
"paths": "all-resolved-selected-character-devices"
}
},
"adaptations": [
+115 -2
View File
@@ -41,8 +41,8 @@
"Use a trusted HTTPS reverse proxy for browser access. Port 3001 uses the upstream self-signed certificate; port 3000 is for an HTTP reverse-proxy backend.",
"The upstream default has no login. Optional CUSTOM_USER and PASSWORD variables enable HTTP basic authentication; do not expose an unauthenticated desktop to untrusted networks.",
"/config holds settings and desktop state and is included in Proxmox backups. /storage holds documents and supports a managed volume or an explicitly selected host directory; host directories require separate backups.",
"The default uses software rendering. GPU acceleration and other CPU architectures are not claimed tested by a CPU-only amd64 installation.",
"Without an assigned GPU, an application may ask to switch to CPU rendering. Choose the CPU option; hardware acceleration is not required for the default configuration."
"The default installation draws on the CPU. The advanced installation can assign an Intel or AMD GPU, which the desktop, the application and the video stream then use; NVIDIA is offered when the host has its driver and the NVIDIA Container Toolkit.",
"Without a GPU, an application may ask to switch to CPU rendering. Choose the CPU option; the application remembers it."
],
"mini_changelog": [],
"display_version": null,
@@ -112,6 +112,14 @@
"required": false,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "LC_ALL",
"example": "",
"required": false,
"sensitive": false,
"source": "upstream-documentation",
"prompt": "Language/locale (e.g. es_ES.UTF-8; translation of every application is not guaranteed)"
}
],
"volumes": [
@@ -365,6 +373,111 @@
"stability_seconds": 8,
"accept_any_status": true,
"verify_tls": true
},
"selkies": {
"base": "FROM ghcr.io/linuxserver/baseimage-selkies:ubunturesolute@sha256:6efa3fd775a552938d862f75975d34c418ad26d028ba2c952da58682cfe1cb47",
"dockerfile_url": "https://raw.githubusercontent.com/junkerderprovinz/artcraft-apps/32bee0dea9bdaf5310c693210bea0d732a129ae8/Dockerfile",
"dockerfile_sha256": "69ab1a81d1696d1bd143a6fa5a121c034ddfb3e83008969340e8cd2413547fe1",
"reviewed_on": "2026-11-04",
"documentation": "https://docs.linuxserver.io/images/docker-baseimage-selkies/",
"nvidia": "available-in-advanced-mode-with-compatible-host-driver-and-toolkit",
"validation": "Intel/AMD tested on a Radeon 680M: GL compositor and VAAPI encoding on the render node"
},
"device_requests": [],
"optional_devices": [],
"hardware_acceleration": {
"prompt": "Selkies desktop and streaming acceleration",
"default": "none",
"profiles": [
{
"id": "none",
"label": "No GPU (CPU)",
"device_requests": [],
"environment": [
{
"name": "AUTO_GPU",
"value": "false"
}
]
},
{
"id": "vaapi",
"label": "Intel/AMD (streaming rendering and encoding)",
"device_requests": [
{
"id": "selkies-render",
"kind": "character-device",
"path_prompt": "Intel/AMD render node",
"host_path_default": "/dev/dri/renderD128",
"container_path_strategy": "same-as-host",
"mode": "0660",
"deny_write": false,
"gid_strategy": "host-device-gid",
"drm_vendor_ids": [
"0x8086",
"0x1002"
]
}
],
"environment": [
{
"name": "PIXELFLUX_WAYLAND",
"value": "true"
},
{
"name": "AUTO_GPU",
"value": "false"
}
],
"environment_from_devices": {
"DRINODE": [
"selkies-render"
],
"DRI_NODE": [
"selkies-render"
],
"ATTACHED_DEVICES_PERMS": [
"selkies-render"
]
}
},
{
"id": "nvidia",
"label": "NVIDIA (Selkies rendering and NVENC)",
"device_requests": [
{
"id": "selkies-nvidia",
"kind": "nvidia-runtime",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "AUTO_GPU",
"value": "true"
},
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,video,graphics,utility,display"
}
]
}
]
},
"gpu_validation": {
"device_inventory": "host-sysfs-and-stat",
"application_acceleration": "requires-workload-test",
"tone_mapping": "not-implied-by-device-access"
},
"device_permissions": {
"strategy": "linuxserver-native-init",
"service_user": "abc",
"environment": "ATTACHED_DEVICES_PERMS",
"paths": "all-resolved-selected-character-devices"
}
},
"adaptations": [
+115 -2
View File
@@ -41,8 +41,8 @@
"Use a trusted HTTPS reverse proxy for browser access. Port 3001 uses the upstream self-signed certificate; port 3000 is for an HTTP reverse-proxy backend.",
"The upstream default has no login. Optional CUSTOM_USER and PASSWORD variables enable HTTP basic authentication; do not expose an unauthenticated desktop to untrusted networks.",
"/config holds settings and desktop state and is included in Proxmox backups. /storage holds documents and supports a managed volume or an explicitly selected host directory; host directories require separate backups.",
"The default uses software rendering. GPU acceleration and other CPU architectures are not claimed tested by a CPU-only amd64 installation.",
"Without an assigned GPU, an application may ask to switch to CPU rendering. Choose the CPU option; hardware acceleration is not required for the default configuration."
"The default installation draws on the CPU. The advanced installation can assign an Intel or AMD GPU, which the desktop, the application and the video stream then use; NVIDIA is offered when the host has its driver and the NVIDIA Container Toolkit.",
"Without a GPU, an application may ask to switch to CPU rendering. Choose the CPU option; the application remembers it."
],
"mini_changelog": [],
"display_version": null,
@@ -112,6 +112,14 @@
"required": false,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "LC_ALL",
"example": "",
"required": false,
"sensitive": false,
"source": "upstream-documentation",
"prompt": "Language/locale (e.g. es_ES.UTF-8; translation of every application is not guaranteed)"
}
],
"volumes": [
@@ -365,6 +373,111 @@
"stability_seconds": 8,
"accept_any_status": true,
"verify_tls": true
},
"selkies": {
"base": "FROM ghcr.io/linuxserver/baseimage-selkies:ubunturesolute@sha256:6efa3fd775a552938d862f75975d34c418ad26d028ba2c952da58682cfe1cb47",
"dockerfile_url": "https://raw.githubusercontent.com/junkerderprovinz/artcraft-apps/32bee0dea9bdaf5310c693210bea0d732a129ae8/Dockerfile",
"dockerfile_sha256": "69ab1a81d1696d1bd143a6fa5a121c034ddfb3e83008969340e8cd2413547fe1",
"reviewed_on": "2026-11-04",
"documentation": "https://docs.linuxserver.io/images/docker-baseimage-selkies/",
"nvidia": "available-in-advanced-mode-with-compatible-host-driver-and-toolkit",
"validation": "Intel/AMD tested on a Radeon 680M: GL compositor and VAAPI encoding on the render node"
},
"device_requests": [],
"optional_devices": [],
"hardware_acceleration": {
"prompt": "Selkies desktop and streaming acceleration",
"default": "none",
"profiles": [
{
"id": "none",
"label": "No GPU (CPU)",
"device_requests": [],
"environment": [
{
"name": "AUTO_GPU",
"value": "false"
}
]
},
{
"id": "vaapi",
"label": "Intel/AMD (streaming rendering and encoding)",
"device_requests": [
{
"id": "selkies-render",
"kind": "character-device",
"path_prompt": "Intel/AMD render node",
"host_path_default": "/dev/dri/renderD128",
"container_path_strategy": "same-as-host",
"mode": "0660",
"deny_write": false,
"gid_strategy": "host-device-gid",
"drm_vendor_ids": [
"0x8086",
"0x1002"
]
}
],
"environment": [
{
"name": "PIXELFLUX_WAYLAND",
"value": "true"
},
{
"name": "AUTO_GPU",
"value": "false"
}
],
"environment_from_devices": {
"DRINODE": [
"selkies-render"
],
"DRI_NODE": [
"selkies-render"
],
"ATTACHED_DEVICES_PERMS": [
"selkies-render"
]
}
},
{
"id": "nvidia",
"label": "NVIDIA (Selkies rendering and NVENC)",
"device_requests": [
{
"id": "selkies-nvidia",
"kind": "nvidia-runtime",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "AUTO_GPU",
"value": "true"
},
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,video,graphics,utility,display"
}
]
}
]
},
"gpu_validation": {
"device_inventory": "host-sysfs-and-stat",
"application_acceleration": "requires-workload-test",
"tone_mapping": "not-implied-by-device-access"
},
"device_permissions": {
"strategy": "linuxserver-native-init",
"service_user": "abc",
"environment": "ATTACHED_DEVICES_PERMS",
"paths": "all-resolved-selected-character-devices"
}
},
"adaptations": [
+115 -2
View File
@@ -41,8 +41,8 @@
"Use a trusted HTTPS reverse proxy for browser access. Port 3001 uses the upstream self-signed certificate; port 3000 is for an HTTP reverse-proxy backend.",
"The upstream default has no login. Optional CUSTOM_USER and PASSWORD variables enable HTTP basic authentication; do not expose an unauthenticated desktop to untrusted networks.",
"/config holds settings and desktop state and is included in Proxmox backups. /storage holds documents and supports a managed volume or an explicitly selected host directory; host directories require separate backups.",
"The default uses software rendering. GPU acceleration and other CPU architectures are not claimed tested by a CPU-only amd64 installation.",
"Without an assigned GPU, an application may ask to switch to CPU rendering. Choose the CPU option; hardware acceleration is not required for the default configuration."
"The default installation draws on the CPU. The advanced installation can assign an Intel or AMD GPU, which the desktop, the application and the video stream then use; NVIDIA is offered when the host has its driver and the NVIDIA Container Toolkit.",
"Without a GPU, an application may ask to switch to CPU rendering. Choose the CPU option; the application remembers it."
],
"mini_changelog": [],
"display_version": null,
@@ -112,6 +112,14 @@
"required": false,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "LC_ALL",
"example": "",
"required": false,
"sensitive": false,
"source": "upstream-documentation",
"prompt": "Language/locale (e.g. es_ES.UTF-8; translation of every application is not guaranteed)"
}
],
"volumes": [
@@ -365,6 +373,111 @@
"stability_seconds": 8,
"accept_any_status": true,
"verify_tls": true
},
"selkies": {
"base": "FROM ghcr.io/linuxserver/baseimage-selkies:ubunturesolute@sha256:6efa3fd775a552938d862f75975d34c418ad26d028ba2c952da58682cfe1cb47",
"dockerfile_url": "https://raw.githubusercontent.com/junkerderprovinz/artcraft-apps/32bee0dea9bdaf5310c693210bea0d732a129ae8/Dockerfile",
"dockerfile_sha256": "69ab1a81d1696d1bd143a6fa5a121c034ddfb3e83008969340e8cd2413547fe1",
"reviewed_on": "2026-11-04",
"documentation": "https://docs.linuxserver.io/images/docker-baseimage-selkies/",
"nvidia": "available-in-advanced-mode-with-compatible-host-driver-and-toolkit",
"validation": "Intel/AMD tested on a Radeon 680M: GL compositor and VAAPI encoding on the render node"
},
"device_requests": [],
"optional_devices": [],
"hardware_acceleration": {
"prompt": "Selkies desktop and streaming acceleration",
"default": "none",
"profiles": [
{
"id": "none",
"label": "No GPU (CPU)",
"device_requests": [],
"environment": [
{
"name": "AUTO_GPU",
"value": "false"
}
]
},
{
"id": "vaapi",
"label": "Intel/AMD (streaming rendering and encoding)",
"device_requests": [
{
"id": "selkies-render",
"kind": "character-device",
"path_prompt": "Intel/AMD render node",
"host_path_default": "/dev/dri/renderD128",
"container_path_strategy": "same-as-host",
"mode": "0660",
"deny_write": false,
"gid_strategy": "host-device-gid",
"drm_vendor_ids": [
"0x8086",
"0x1002"
]
}
],
"environment": [
{
"name": "PIXELFLUX_WAYLAND",
"value": "true"
},
{
"name": "AUTO_GPU",
"value": "false"
}
],
"environment_from_devices": {
"DRINODE": [
"selkies-render"
],
"DRI_NODE": [
"selkies-render"
],
"ATTACHED_DEVICES_PERMS": [
"selkies-render"
]
}
},
{
"id": "nvidia",
"label": "NVIDIA (Selkies rendering and NVENC)",
"device_requests": [
{
"id": "selkies-nvidia",
"kind": "nvidia-runtime",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "AUTO_GPU",
"value": "true"
},
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,video,graphics,utility,display"
}
]
}
]
},
"gpu_validation": {
"device_inventory": "host-sysfs-and-stat",
"application_acceleration": "requires-workload-test",
"tone_mapping": "not-implied-by-device-access"
},
"device_permissions": {
"strategy": "linuxserver-native-init",
"service_user": "abc",
"environment": "ATTACHED_DEVICES_PERMS",
"paths": "all-resolved-selected-character-devices"
}
},
"adaptations": [
+115 -2
View File
@@ -41,8 +41,8 @@
"Use a trusted HTTPS reverse proxy for browser access. Port 3001 uses the upstream self-signed certificate; port 3000 is for an HTTP reverse-proxy backend.",
"The upstream default has no login. Optional CUSTOM_USER and PASSWORD variables enable HTTP basic authentication; do not expose an unauthenticated desktop to untrusted networks.",
"/config holds settings and desktop state and is included in Proxmox backups. /storage holds documents and supports a managed volume or an explicitly selected host directory; host directories require separate backups.",
"The default uses software rendering. GPU acceleration and other CPU architectures are not claimed tested by a CPU-only amd64 installation.",
"Without an assigned GPU, an application may ask to switch to CPU rendering. Choose the CPU option; hardware acceleration is not required for the default configuration."
"The default installation draws on the CPU. The advanced installation can assign an Intel or AMD GPU, which the desktop, the application and the video stream then use; NVIDIA is offered when the host has its driver and the NVIDIA Container Toolkit.",
"Without a GPU, an application may ask to switch to CPU rendering. Choose the CPU option; the application remembers it."
],
"mini_changelog": [],
"display_version": null,
@@ -112,6 +112,14 @@
"required": false,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "LC_ALL",
"example": "",
"required": false,
"sensitive": false,
"source": "upstream-documentation",
"prompt": "Language/locale (e.g. es_ES.UTF-8; translation of every application is not guaranteed)"
}
],
"volumes": [
@@ -365,6 +373,111 @@
"stability_seconds": 8,
"accept_any_status": true,
"verify_tls": true
},
"selkies": {
"base": "FROM ghcr.io/linuxserver/baseimage-selkies:ubunturesolute@sha256:6efa3fd775a552938d862f75975d34c418ad26d028ba2c952da58682cfe1cb47",
"dockerfile_url": "https://raw.githubusercontent.com/junkerderprovinz/artcraft-apps/32bee0dea9bdaf5310c693210bea0d732a129ae8/Dockerfile",
"dockerfile_sha256": "69ab1a81d1696d1bd143a6fa5a121c034ddfb3e83008969340e8cd2413547fe1",
"reviewed_on": "2026-11-04",
"documentation": "https://docs.linuxserver.io/images/docker-baseimage-selkies/",
"nvidia": "available-in-advanced-mode-with-compatible-host-driver-and-toolkit",
"validation": "Intel/AMD tested on a Radeon 680M: GL compositor and VAAPI encoding on the render node"
},
"device_requests": [],
"optional_devices": [],
"hardware_acceleration": {
"prompt": "Selkies desktop and streaming acceleration",
"default": "none",
"profiles": [
{
"id": "none",
"label": "No GPU (CPU)",
"device_requests": [],
"environment": [
{
"name": "AUTO_GPU",
"value": "false"
}
]
},
{
"id": "vaapi",
"label": "Intel/AMD (streaming rendering and encoding)",
"device_requests": [
{
"id": "selkies-render",
"kind": "character-device",
"path_prompt": "Intel/AMD render node",
"host_path_default": "/dev/dri/renderD128",
"container_path_strategy": "same-as-host",
"mode": "0660",
"deny_write": false,
"gid_strategy": "host-device-gid",
"drm_vendor_ids": [
"0x8086",
"0x1002"
]
}
],
"environment": [
{
"name": "PIXELFLUX_WAYLAND",
"value": "true"
},
{
"name": "AUTO_GPU",
"value": "false"
}
],
"environment_from_devices": {
"DRINODE": [
"selkies-render"
],
"DRI_NODE": [
"selkies-render"
],
"ATTACHED_DEVICES_PERMS": [
"selkies-render"
]
}
},
{
"id": "nvidia",
"label": "NVIDIA (Selkies rendering and NVENC)",
"device_requests": [
{
"id": "selkies-nvidia",
"kind": "nvidia-runtime",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "AUTO_GPU",
"value": "true"
},
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,video,graphics,utility,display"
}
]
}
]
},
"gpu_validation": {
"device_inventory": "host-sysfs-and-stat",
"application_acceleration": "requires-workload-test",
"tone_mapping": "not-implied-by-device-access"
},
"device_permissions": {
"strategy": "linuxserver-native-init",
"service_user": "abc",
"environment": "ATTACHED_DEVICES_PERMS",
"paths": "all-resolved-selected-character-devices"
}
},
"adaptations": [
+115 -2
View File
@@ -41,8 +41,8 @@
"Use a trusted HTTPS reverse proxy for browser access. Port 3001 uses the upstream self-signed certificate; port 3000 is for an HTTP reverse-proxy backend.",
"The upstream default has no login. Optional CUSTOM_USER and PASSWORD variables enable HTTP basic authentication; do not expose an unauthenticated desktop to untrusted networks.",
"/config holds settings and desktop state and is included in Proxmox backups. /storage holds documents and supports a managed volume or an explicitly selected host directory; host directories require separate backups.",
"The default uses software rendering. GPU acceleration and other CPU architectures are not claimed tested by a CPU-only amd64 installation.",
"Without an assigned GPU, an application may ask to switch to CPU rendering. Choose the CPU option; hardware acceleration is not required for the default configuration."
"The default installation draws on the CPU. The advanced installation can assign an Intel or AMD GPU, which the desktop, the application and the video stream then use; NVIDIA is offered when the host has its driver and the NVIDIA Container Toolkit.",
"Without a GPU, an application may ask to switch to CPU rendering. Choose the CPU option; the application remembers it."
],
"mini_changelog": [],
"display_version": null,
@@ -112,6 +112,14 @@
"required": false,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "LC_ALL",
"example": "",
"required": false,
"sensitive": false,
"source": "upstream-documentation",
"prompt": "Language/locale (e.g. es_ES.UTF-8; translation of every application is not guaranteed)"
}
],
"volumes": [
@@ -365,6 +373,111 @@
"stability_seconds": 8,
"accept_any_status": true,
"verify_tls": true
},
"selkies": {
"base": "FROM ghcr.io/linuxserver/baseimage-selkies:ubunturesolute@sha256:6efa3fd775a552938d862f75975d34c418ad26d028ba2c952da58682cfe1cb47",
"dockerfile_url": "https://raw.githubusercontent.com/junkerderprovinz/artcraft-apps/32bee0dea9bdaf5310c693210bea0d732a129ae8/Dockerfile",
"dockerfile_sha256": "69ab1a81d1696d1bd143a6fa5a121c034ddfb3e83008969340e8cd2413547fe1",
"reviewed_on": "2026-11-04",
"documentation": "https://docs.linuxserver.io/images/docker-baseimage-selkies/",
"nvidia": "available-in-advanced-mode-with-compatible-host-driver-and-toolkit",
"validation": "Intel/AMD tested on a Radeon 680M: GL compositor and VAAPI encoding on the render node"
},
"device_requests": [],
"optional_devices": [],
"hardware_acceleration": {
"prompt": "Selkies desktop and streaming acceleration",
"default": "none",
"profiles": [
{
"id": "none",
"label": "No GPU (CPU)",
"device_requests": [],
"environment": [
{
"name": "AUTO_GPU",
"value": "false"
}
]
},
{
"id": "vaapi",
"label": "Intel/AMD (streaming rendering and encoding)",
"device_requests": [
{
"id": "selkies-render",
"kind": "character-device",
"path_prompt": "Intel/AMD render node",
"host_path_default": "/dev/dri/renderD128",
"container_path_strategy": "same-as-host",
"mode": "0660",
"deny_write": false,
"gid_strategy": "host-device-gid",
"drm_vendor_ids": [
"0x8086",
"0x1002"
]
}
],
"environment": [
{
"name": "PIXELFLUX_WAYLAND",
"value": "true"
},
{
"name": "AUTO_GPU",
"value": "false"
}
],
"environment_from_devices": {
"DRINODE": [
"selkies-render"
],
"DRI_NODE": [
"selkies-render"
],
"ATTACHED_DEVICES_PERMS": [
"selkies-render"
]
}
},
{
"id": "nvidia",
"label": "NVIDIA (Selkies rendering and NVENC)",
"device_requests": [
{
"id": "selkies-nvidia",
"kind": "nvidia-runtime",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "AUTO_GPU",
"value": "true"
},
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,video,graphics,utility,display"
}
]
}
]
},
"gpu_validation": {
"device_inventory": "host-sysfs-and-stat",
"application_acceleration": "requires-workload-test",
"tone_mapping": "not-implied-by-device-access"
},
"device_permissions": {
"strategy": "linuxserver-native-init",
"service_user": "abc",
"environment": "ATTACHED_DEVICES_PERMS",
"paths": "all-resolved-selected-character-devices"
}
},
"adaptations": [
+115 -2
View File
@@ -41,8 +41,8 @@
"Use a trusted HTTPS reverse proxy for browser access. Port 3001 uses the upstream self-signed certificate; port 3000 is for an HTTP reverse-proxy backend.",
"The upstream default has no login. Optional CUSTOM_USER and PASSWORD variables enable HTTP basic authentication; do not expose an unauthenticated desktop to untrusted networks.",
"/config holds settings and desktop state and is included in Proxmox backups. /storage holds documents and supports a managed volume or an explicitly selected host directory; host directories require separate backups.",
"The default uses software rendering. GPU acceleration and other CPU architectures are not claimed tested by a CPU-only amd64 installation.",
"Without an assigned GPU, an application may ask to switch to CPU rendering. Choose the CPU option; hardware acceleration is not required for the default configuration."
"The default installation draws on the CPU. The advanced installation can assign an Intel or AMD GPU, which the desktop, the application and the video stream then use; NVIDIA is offered when the host has its driver and the NVIDIA Container Toolkit.",
"Without a GPU, an application may ask to switch to CPU rendering. Choose the CPU option; the application remembers it."
],
"mini_changelog": [],
"display_version": null,
@@ -112,6 +112,14 @@
"required": false,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "LC_ALL",
"example": "",
"required": false,
"sensitive": false,
"source": "upstream-documentation",
"prompt": "Language/locale (e.g. es_ES.UTF-8; translation of every application is not guaranteed)"
}
],
"volumes": [
@@ -365,6 +373,111 @@
"stability_seconds": 8,
"accept_any_status": true,
"verify_tls": true
},
"selkies": {
"base": "FROM ghcr.io/linuxserver/baseimage-selkies:ubunturesolute@sha256:6efa3fd775a552938d862f75975d34c418ad26d028ba2c952da58682cfe1cb47",
"dockerfile_url": "https://raw.githubusercontent.com/junkerderprovinz/artcraft-apps/32bee0dea9bdaf5310c693210bea0d732a129ae8/Dockerfile",
"dockerfile_sha256": "69ab1a81d1696d1bd143a6fa5a121c034ddfb3e83008969340e8cd2413547fe1",
"reviewed_on": "2026-11-04",
"documentation": "https://docs.linuxserver.io/images/docker-baseimage-selkies/",
"nvidia": "available-in-advanced-mode-with-compatible-host-driver-and-toolkit",
"validation": "Intel/AMD tested on a Radeon 680M: GL compositor and VAAPI encoding on the render node"
},
"device_requests": [],
"optional_devices": [],
"hardware_acceleration": {
"prompt": "Selkies desktop and streaming acceleration",
"default": "none",
"profiles": [
{
"id": "none",
"label": "No GPU (CPU)",
"device_requests": [],
"environment": [
{
"name": "AUTO_GPU",
"value": "false"
}
]
},
{
"id": "vaapi",
"label": "Intel/AMD (streaming rendering and encoding)",
"device_requests": [
{
"id": "selkies-render",
"kind": "character-device",
"path_prompt": "Intel/AMD render node",
"host_path_default": "/dev/dri/renderD128",
"container_path_strategy": "same-as-host",
"mode": "0660",
"deny_write": false,
"gid_strategy": "host-device-gid",
"drm_vendor_ids": [
"0x8086",
"0x1002"
]
}
],
"environment": [
{
"name": "PIXELFLUX_WAYLAND",
"value": "true"
},
{
"name": "AUTO_GPU",
"value": "false"
}
],
"environment_from_devices": {
"DRINODE": [
"selkies-render"
],
"DRI_NODE": [
"selkies-render"
],
"ATTACHED_DEVICES_PERMS": [
"selkies-render"
]
}
},
{
"id": "nvidia",
"label": "NVIDIA (Selkies rendering and NVENC)",
"device_requests": [
{
"id": "selkies-nvidia",
"kind": "nvidia-runtime",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "AUTO_GPU",
"value": "true"
},
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,video,graphics,utility,display"
}
]
}
]
},
"gpu_validation": {
"device_inventory": "host-sysfs-and-stat",
"application_acceleration": "requires-workload-test",
"tone_mapping": "not-implied-by-device-access"
},
"device_permissions": {
"strategy": "linuxserver-native-init",
"service_user": "abc",
"environment": "ATTACHED_DEVICES_PERMS",
"paths": "all-resolved-selected-character-devices"
}
},
"adaptations": [
+115 -2
View File
@@ -41,8 +41,8 @@
"Use a trusted HTTPS reverse proxy for browser access. Port 3001 uses the upstream self-signed certificate; port 3000 is for an HTTP reverse-proxy backend.",
"The upstream default has no login. Optional CUSTOM_USER and PASSWORD variables enable HTTP basic authentication; do not expose an unauthenticated desktop to untrusted networks.",
"/config holds settings and desktop state and is included in Proxmox backups. /storage holds documents and supports a managed volume or an explicitly selected host directory; host directories require separate backups.",
"The default uses software rendering. GPU acceleration and other CPU architectures are not claimed tested by a CPU-only amd64 installation.",
"Without an assigned GPU, an application may ask to switch to CPU rendering. Choose the CPU option; hardware acceleration is not required for the default configuration."
"The default installation draws on the CPU. The advanced installation can assign an Intel or AMD GPU, which the desktop, the application and the video stream then use; NVIDIA is offered when the host has its driver and the NVIDIA Container Toolkit.",
"Without a GPU, an application may ask to switch to CPU rendering. Choose the CPU option; the application remembers it."
],
"mini_changelog": [],
"display_version": null,
@@ -112,6 +112,14 @@
"required": false,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "LC_ALL",
"example": "",
"required": false,
"sensitive": false,
"source": "upstream-documentation",
"prompt": "Language/locale (e.g. es_ES.UTF-8; translation of every application is not guaranteed)"
}
],
"volumes": [
@@ -365,6 +373,111 @@
"stability_seconds": 8,
"accept_any_status": true,
"verify_tls": true
},
"selkies": {
"base": "FROM ghcr.io/linuxserver/baseimage-selkies:ubunturesolute@sha256:6efa3fd775a552938d862f75975d34c418ad26d028ba2c952da58682cfe1cb47",
"dockerfile_url": "https://raw.githubusercontent.com/junkerderprovinz/artcraft-apps/32bee0dea9bdaf5310c693210bea0d732a129ae8/Dockerfile",
"dockerfile_sha256": "69ab1a81d1696d1bd143a6fa5a121c034ddfb3e83008969340e8cd2413547fe1",
"reviewed_on": "2026-11-04",
"documentation": "https://docs.linuxserver.io/images/docker-baseimage-selkies/",
"nvidia": "available-in-advanced-mode-with-compatible-host-driver-and-toolkit",
"validation": "Intel/AMD tested on a Radeon 680M: GL compositor and VAAPI encoding on the render node"
},
"device_requests": [],
"optional_devices": [],
"hardware_acceleration": {
"prompt": "Selkies desktop and streaming acceleration",
"default": "none",
"profiles": [
{
"id": "none",
"label": "No GPU (CPU)",
"device_requests": [],
"environment": [
{
"name": "AUTO_GPU",
"value": "false"
}
]
},
{
"id": "vaapi",
"label": "Intel/AMD (streaming rendering and encoding)",
"device_requests": [
{
"id": "selkies-render",
"kind": "character-device",
"path_prompt": "Intel/AMD render node",
"host_path_default": "/dev/dri/renderD128",
"container_path_strategy": "same-as-host",
"mode": "0660",
"deny_write": false,
"gid_strategy": "host-device-gid",
"drm_vendor_ids": [
"0x8086",
"0x1002"
]
}
],
"environment": [
{
"name": "PIXELFLUX_WAYLAND",
"value": "true"
},
{
"name": "AUTO_GPU",
"value": "false"
}
],
"environment_from_devices": {
"DRINODE": [
"selkies-render"
],
"DRI_NODE": [
"selkies-render"
],
"ATTACHED_DEVICES_PERMS": [
"selkies-render"
]
}
},
{
"id": "nvidia",
"label": "NVIDIA (Selkies rendering and NVENC)",
"device_requests": [
{
"id": "selkies-nvidia",
"kind": "nvidia-runtime",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "AUTO_GPU",
"value": "true"
},
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,video,graphics,utility,display"
}
]
}
]
},
"gpu_validation": {
"device_inventory": "host-sysfs-and-stat",
"application_acceleration": "requires-workload-test",
"tone_mapping": "not-implied-by-device-access"
},
"device_permissions": {
"strategy": "linuxserver-native-init",
"service_user": "abc",
"environment": "ATTACHED_DEVICES_PERMS",
"paths": "all-resolved-selected-character-devices"
}
},
"adaptations": [
+115 -2
View File
@@ -41,8 +41,8 @@
"Use a trusted HTTPS reverse proxy for browser access. Port 3001 uses the upstream self-signed certificate; port 3000 is for an HTTP reverse-proxy backend.",
"The upstream default has no login. Optional CUSTOM_USER and PASSWORD variables enable HTTP basic authentication; do not expose an unauthenticated desktop to untrusted networks.",
"/config holds settings and desktop state and is included in Proxmox backups. /storage holds documents and supports a managed volume or an explicitly selected host directory; host directories require separate backups.",
"The default uses software rendering. GPU acceleration and other CPU architectures are not claimed tested by a CPU-only amd64 installation.",
"Without an assigned GPU, an application may ask to switch to CPU rendering. Choose the CPU option; hardware acceleration is not required for the default configuration."
"The default installation draws on the CPU. The advanced installation can assign an Intel or AMD GPU, which the desktop, the application and the video stream then use; NVIDIA is offered when the host has its driver and the NVIDIA Container Toolkit.",
"Without a GPU, an application may ask to switch to CPU rendering. Choose the CPU option; the application remembers it."
],
"mini_changelog": [],
"display_version": null,
@@ -112,6 +112,14 @@
"required": false,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "LC_ALL",
"example": "",
"required": false,
"sensitive": false,
"source": "upstream-documentation",
"prompt": "Language/locale (e.g. es_ES.UTF-8; translation of every application is not guaranteed)"
}
],
"volumes": [
@@ -365,6 +373,111 @@
"stability_seconds": 8,
"accept_any_status": true,
"verify_tls": true
},
"selkies": {
"base": "FROM ghcr.io/linuxserver/baseimage-selkies:ubunturesolute@sha256:6efa3fd775a552938d862f75975d34c418ad26d028ba2c952da58682cfe1cb47",
"dockerfile_url": "https://raw.githubusercontent.com/junkerderprovinz/artcraft-apps/32bee0dea9bdaf5310c693210bea0d732a129ae8/Dockerfile",
"dockerfile_sha256": "69ab1a81d1696d1bd143a6fa5a121c034ddfb3e83008969340e8cd2413547fe1",
"reviewed_on": "2026-11-04",
"documentation": "https://docs.linuxserver.io/images/docker-baseimage-selkies/",
"nvidia": "available-in-advanced-mode-with-compatible-host-driver-and-toolkit",
"validation": "Intel/AMD tested on a Radeon 680M: GL compositor and VAAPI encoding on the render node"
},
"device_requests": [],
"optional_devices": [],
"hardware_acceleration": {
"prompt": "Selkies desktop and streaming acceleration",
"default": "none",
"profiles": [
{
"id": "none",
"label": "No GPU (CPU)",
"device_requests": [],
"environment": [
{
"name": "AUTO_GPU",
"value": "false"
}
]
},
{
"id": "vaapi",
"label": "Intel/AMD (streaming rendering and encoding)",
"device_requests": [
{
"id": "selkies-render",
"kind": "character-device",
"path_prompt": "Intel/AMD render node",
"host_path_default": "/dev/dri/renderD128",
"container_path_strategy": "same-as-host",
"mode": "0660",
"deny_write": false,
"gid_strategy": "host-device-gid",
"drm_vendor_ids": [
"0x8086",
"0x1002"
]
}
],
"environment": [
{
"name": "PIXELFLUX_WAYLAND",
"value": "true"
},
{
"name": "AUTO_GPU",
"value": "false"
}
],
"environment_from_devices": {
"DRINODE": [
"selkies-render"
],
"DRI_NODE": [
"selkies-render"
],
"ATTACHED_DEVICES_PERMS": [
"selkies-render"
]
}
},
{
"id": "nvidia",
"label": "NVIDIA (Selkies rendering and NVENC)",
"device_requests": [
{
"id": "selkies-nvidia",
"kind": "nvidia-runtime",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "AUTO_GPU",
"value": "true"
},
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,video,graphics,utility,display"
}
]
}
]
},
"gpu_validation": {
"device_inventory": "host-sysfs-and-stat",
"application_acceleration": "requires-workload-test",
"tone_mapping": "not-implied-by-device-access"
},
"device_permissions": {
"strategy": "linuxserver-native-init",
"service_user": "abc",
"environment": "ATTACHED_DEVICES_PERMS",
"paths": "all-resolved-selected-character-devices"
}
},
"adaptations": [
+115 -2
View File
@@ -41,8 +41,8 @@
"Use a trusted HTTPS reverse proxy for browser access. Port 3001 uses the upstream self-signed certificate; port 3000 is for an HTTP reverse-proxy backend.",
"The upstream default has no login. Optional CUSTOM_USER and PASSWORD variables enable HTTP basic authentication; do not expose an unauthenticated desktop to untrusted networks.",
"/config holds settings and desktop state and is included in Proxmox backups. /storage holds documents and supports a managed volume or an explicitly selected host directory; host directories require separate backups.",
"The default uses software rendering. GPU acceleration and other CPU architectures are not claimed tested by a CPU-only amd64 installation.",
"Without an assigned GPU, an application may ask to switch to CPU rendering. Choose the CPU option; hardware acceleration is not required for the default configuration."
"The default installation draws on the CPU. The advanced installation can assign an Intel or AMD GPU, which the desktop, the application and the video stream then use; NVIDIA is offered when the host has its driver and the NVIDIA Container Toolkit.",
"Without a GPU, an application may ask to switch to CPU rendering. Choose the CPU option; the application remembers it."
],
"mini_changelog": [],
"display_version": null,
@@ -112,6 +112,14 @@
"required": false,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "LC_ALL",
"example": "",
"required": false,
"sensitive": false,
"source": "upstream-documentation",
"prompt": "Language/locale (e.g. es_ES.UTF-8; translation of every application is not guaranteed)"
}
],
"volumes": [
@@ -365,6 +373,111 @@
"stability_seconds": 8,
"accept_any_status": true,
"verify_tls": true
},
"selkies": {
"base": "FROM ghcr.io/linuxserver/baseimage-selkies:ubunturesolute@sha256:6efa3fd775a552938d862f75975d34c418ad26d028ba2c952da58682cfe1cb47",
"dockerfile_url": "https://raw.githubusercontent.com/junkerderprovinz/artcraft-apps/32bee0dea9bdaf5310c693210bea0d732a129ae8/Dockerfile",
"dockerfile_sha256": "69ab1a81d1696d1bd143a6fa5a121c034ddfb3e83008969340e8cd2413547fe1",
"reviewed_on": "2026-11-04",
"documentation": "https://docs.linuxserver.io/images/docker-baseimage-selkies/",
"nvidia": "available-in-advanced-mode-with-compatible-host-driver-and-toolkit",
"validation": "Intel/AMD tested on a Radeon 680M: GL compositor and VAAPI encoding on the render node"
},
"device_requests": [],
"optional_devices": [],
"hardware_acceleration": {
"prompt": "Selkies desktop and streaming acceleration",
"default": "none",
"profiles": [
{
"id": "none",
"label": "No GPU (CPU)",
"device_requests": [],
"environment": [
{
"name": "AUTO_GPU",
"value": "false"
}
]
},
{
"id": "vaapi",
"label": "Intel/AMD (streaming rendering and encoding)",
"device_requests": [
{
"id": "selkies-render",
"kind": "character-device",
"path_prompt": "Intel/AMD render node",
"host_path_default": "/dev/dri/renderD128",
"container_path_strategy": "same-as-host",
"mode": "0660",
"deny_write": false,
"gid_strategy": "host-device-gid",
"drm_vendor_ids": [
"0x8086",
"0x1002"
]
}
],
"environment": [
{
"name": "PIXELFLUX_WAYLAND",
"value": "true"
},
{
"name": "AUTO_GPU",
"value": "false"
}
],
"environment_from_devices": {
"DRINODE": [
"selkies-render"
],
"DRI_NODE": [
"selkies-render"
],
"ATTACHED_DEVICES_PERMS": [
"selkies-render"
]
}
},
{
"id": "nvidia",
"label": "NVIDIA (Selkies rendering and NVENC)",
"device_requests": [
{
"id": "selkies-nvidia",
"kind": "nvidia-runtime",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "AUTO_GPU",
"value": "true"
},
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,video,graphics,utility,display"
}
]
}
]
},
"gpu_validation": {
"device_inventory": "host-sysfs-and-stat",
"application_acceleration": "requires-workload-test",
"tone_mapping": "not-implied-by-device-access"
},
"device_permissions": {
"strategy": "linuxserver-native-init",
"service_user": "abc",
"environment": "ATTACHED_DEVICES_PERMS",
"paths": "all-resolved-selected-character-devices"
}
},
"adaptations": [
+115 -2
View File
@@ -41,8 +41,8 @@
"Use a trusted HTTPS reverse proxy for browser access. Port 3001 uses the upstream self-signed certificate; port 3000 is for an HTTP reverse-proxy backend.",
"The upstream default has no login. Optional CUSTOM_USER and PASSWORD variables enable HTTP basic authentication; do not expose an unauthenticated desktop to untrusted networks.",
"/config holds settings and desktop state and is included in Proxmox backups. /storage holds documents and supports a managed volume or an explicitly selected host directory; host directories require separate backups.",
"The default uses software rendering. GPU acceleration and other CPU architectures are not claimed tested by a CPU-only amd64 installation.",
"Without an assigned GPU, an application may ask to switch to CPU rendering. Choose the CPU option; hardware acceleration is not required for the default configuration."
"The default installation draws on the CPU. The advanced installation can assign an Intel or AMD GPU, which the desktop, the application and the video stream then use; NVIDIA is offered when the host has its driver and the NVIDIA Container Toolkit.",
"Without a GPU, an application may ask to switch to CPU rendering. Choose the CPU option; the application remembers it."
],
"mini_changelog": [],
"display_version": null,
@@ -112,6 +112,14 @@
"required": false,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "LC_ALL",
"example": "",
"required": false,
"sensitive": false,
"source": "upstream-documentation",
"prompt": "Language/locale (e.g. es_ES.UTF-8; translation of every application is not guaranteed)"
}
],
"volumes": [
@@ -365,6 +373,111 @@
"stability_seconds": 8,
"accept_any_status": true,
"verify_tls": true
},
"selkies": {
"base": "FROM ghcr.io/linuxserver/baseimage-selkies:ubunturesolute@sha256:6efa3fd775a552938d862f75975d34c418ad26d028ba2c952da58682cfe1cb47",
"dockerfile_url": "https://raw.githubusercontent.com/junkerderprovinz/artcraft-apps/32bee0dea9bdaf5310c693210bea0d732a129ae8/Dockerfile",
"dockerfile_sha256": "69ab1a81d1696d1bd143a6fa5a121c034ddfb3e83008969340e8cd2413547fe1",
"reviewed_on": "2026-11-04",
"documentation": "https://docs.linuxserver.io/images/docker-baseimage-selkies/",
"nvidia": "available-in-advanced-mode-with-compatible-host-driver-and-toolkit",
"validation": "Intel/AMD tested on a Radeon 680M: GL compositor and VAAPI encoding on the render node"
},
"device_requests": [],
"optional_devices": [],
"hardware_acceleration": {
"prompt": "Selkies desktop and streaming acceleration",
"default": "none",
"profiles": [
{
"id": "none",
"label": "No GPU (CPU)",
"device_requests": [],
"environment": [
{
"name": "AUTO_GPU",
"value": "false"
}
]
},
{
"id": "vaapi",
"label": "Intel/AMD (streaming rendering and encoding)",
"device_requests": [
{
"id": "selkies-render",
"kind": "character-device",
"path_prompt": "Intel/AMD render node",
"host_path_default": "/dev/dri/renderD128",
"container_path_strategy": "same-as-host",
"mode": "0660",
"deny_write": false,
"gid_strategy": "host-device-gid",
"drm_vendor_ids": [
"0x8086",
"0x1002"
]
}
],
"environment": [
{
"name": "PIXELFLUX_WAYLAND",
"value": "true"
},
{
"name": "AUTO_GPU",
"value": "false"
}
],
"environment_from_devices": {
"DRINODE": [
"selkies-render"
],
"DRI_NODE": [
"selkies-render"
],
"ATTACHED_DEVICES_PERMS": [
"selkies-render"
]
}
},
{
"id": "nvidia",
"label": "NVIDIA (Selkies rendering and NVENC)",
"device_requests": [
{
"id": "selkies-nvidia",
"kind": "nvidia-runtime",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "AUTO_GPU",
"value": "true"
},
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,video,graphics,utility,display"
}
]
}
]
},
"gpu_validation": {
"device_inventory": "host-sysfs-and-stat",
"application_acceleration": "requires-workload-test",
"tone_mapping": "not-implied-by-device-access"
},
"device_permissions": {
"strategy": "linuxserver-native-init",
"service_user": "abc",
"environment": "ATTACHED_DEVICES_PERMS",
"paths": "all-resolved-selected-character-devices"
}
},
"adaptations": [
+115 -2
View File
@@ -41,8 +41,8 @@
"Use a trusted HTTPS reverse proxy for browser access. Port 3001 uses the upstream self-signed certificate; port 3000 is for an HTTP reverse-proxy backend.",
"The upstream default has no login. Optional CUSTOM_USER and PASSWORD variables enable HTTP basic authentication; do not expose an unauthenticated desktop to untrusted networks.",
"/config holds settings and desktop state and is included in Proxmox backups. /storage holds documents and supports a managed volume or an explicitly selected host directory; host directories require separate backups.",
"The default uses software rendering. GPU acceleration and other CPU architectures are not claimed tested by a CPU-only amd64 installation.",
"Without an assigned GPU, an application may ask to switch to CPU rendering. Choose the CPU option; hardware acceleration is not required for the default configuration."
"The default installation draws on the CPU. The advanced installation can assign an Intel or AMD GPU, which the desktop, the application and the video stream then use; NVIDIA is offered when the host has its driver and the NVIDIA Container Toolkit.",
"Without a GPU, an application may ask to switch to CPU rendering. Choose the CPU option; the application remembers it."
],
"mini_changelog": [],
"display_version": null,
@@ -112,6 +112,14 @@
"required": false,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "LC_ALL",
"example": "",
"required": false,
"sensitive": false,
"source": "upstream-documentation",
"prompt": "Language/locale (e.g. es_ES.UTF-8; translation of every application is not guaranteed)"
}
],
"volumes": [
@@ -365,6 +373,111 @@
"stability_seconds": 8,
"accept_any_status": true,
"verify_tls": true
},
"selkies": {
"base": "FROM ghcr.io/linuxserver/baseimage-selkies:ubunturesolute@sha256:6efa3fd775a552938d862f75975d34c418ad26d028ba2c952da58682cfe1cb47",
"dockerfile_url": "https://raw.githubusercontent.com/junkerderprovinz/artcraft-apps/32bee0dea9bdaf5310c693210bea0d732a129ae8/Dockerfile",
"dockerfile_sha256": "69ab1a81d1696d1bd143a6fa5a121c034ddfb3e83008969340e8cd2413547fe1",
"reviewed_on": "2026-11-04",
"documentation": "https://docs.linuxserver.io/images/docker-baseimage-selkies/",
"nvidia": "available-in-advanced-mode-with-compatible-host-driver-and-toolkit",
"validation": "Intel/AMD tested on a Radeon 680M: GL compositor and VAAPI encoding on the render node"
},
"device_requests": [],
"optional_devices": [],
"hardware_acceleration": {
"prompt": "Selkies desktop and streaming acceleration",
"default": "none",
"profiles": [
{
"id": "none",
"label": "No GPU (CPU)",
"device_requests": [],
"environment": [
{
"name": "AUTO_GPU",
"value": "false"
}
]
},
{
"id": "vaapi",
"label": "Intel/AMD (streaming rendering and encoding)",
"device_requests": [
{
"id": "selkies-render",
"kind": "character-device",
"path_prompt": "Intel/AMD render node",
"host_path_default": "/dev/dri/renderD128",
"container_path_strategy": "same-as-host",
"mode": "0660",
"deny_write": false,
"gid_strategy": "host-device-gid",
"drm_vendor_ids": [
"0x8086",
"0x1002"
]
}
],
"environment": [
{
"name": "PIXELFLUX_WAYLAND",
"value": "true"
},
{
"name": "AUTO_GPU",
"value": "false"
}
],
"environment_from_devices": {
"DRINODE": [
"selkies-render"
],
"DRI_NODE": [
"selkies-render"
],
"ATTACHED_DEVICES_PERMS": [
"selkies-render"
]
}
},
{
"id": "nvidia",
"label": "NVIDIA (Selkies rendering and NVENC)",
"device_requests": [
{
"id": "selkies-nvidia",
"kind": "nvidia-runtime",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "AUTO_GPU",
"value": "true"
},
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,video,graphics,utility,display"
}
]
}
]
},
"gpu_validation": {
"device_inventory": "host-sysfs-and-stat",
"application_acceleration": "requires-workload-test",
"tone_mapping": "not-implied-by-device-access"
},
"device_permissions": {
"strategy": "linuxserver-native-init",
"service_user": "abc",
"environment": "ATTACHED_DEVICES_PERMS",
"paths": "all-resolved-selected-character-devices"
}
},
"adaptations": [
+115 -2
View File
@@ -41,8 +41,8 @@
"Use a trusted HTTPS reverse proxy for browser access. Port 3001 uses the upstream self-signed certificate; port 3000 is for an HTTP reverse-proxy backend.",
"The upstream default has no login. Optional CUSTOM_USER and PASSWORD variables enable HTTP basic authentication; do not expose an unauthenticated desktop to untrusted networks.",
"/config holds settings and desktop state and is included in Proxmox backups. /storage holds documents and supports a managed volume or an explicitly selected host directory; host directories require separate backups.",
"The default uses software rendering. GPU acceleration and other CPU architectures are not claimed tested by a CPU-only amd64 installation.",
"Without an assigned GPU, an application may ask to switch to CPU rendering. Choose the CPU option; hardware acceleration is not required for the default configuration."
"The default installation draws on the CPU. The advanced installation can assign an Intel or AMD GPU, which the desktop, the application and the video stream then use; NVIDIA is offered when the host has its driver and the NVIDIA Container Toolkit.",
"Without a GPU, an application may ask to switch to CPU rendering. Choose the CPU option; the application remembers it."
],
"mini_changelog": [],
"display_version": null,
@@ -112,6 +112,14 @@
"required": false,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "LC_ALL",
"example": "",
"required": false,
"sensitive": false,
"source": "upstream-documentation",
"prompt": "Language/locale (e.g. es_ES.UTF-8; translation of every application is not guaranteed)"
}
],
"volumes": [
@@ -365,6 +373,111 @@
"stability_seconds": 8,
"accept_any_status": true,
"verify_tls": true
},
"selkies": {
"base": "FROM ghcr.io/linuxserver/baseimage-selkies:ubunturesolute@sha256:6efa3fd775a552938d862f75975d34c418ad26d028ba2c952da58682cfe1cb47",
"dockerfile_url": "https://raw.githubusercontent.com/junkerderprovinz/artcraft-apps/32bee0dea9bdaf5310c693210bea0d732a129ae8/Dockerfile",
"dockerfile_sha256": "69ab1a81d1696d1bd143a6fa5a121c034ddfb3e83008969340e8cd2413547fe1",
"reviewed_on": "2026-11-04",
"documentation": "https://docs.linuxserver.io/images/docker-baseimage-selkies/",
"nvidia": "available-in-advanced-mode-with-compatible-host-driver-and-toolkit",
"validation": "Intel/AMD tested on a Radeon 680M: GL compositor and VAAPI encoding on the render node"
},
"device_requests": [],
"optional_devices": [],
"hardware_acceleration": {
"prompt": "Selkies desktop and streaming acceleration",
"default": "none",
"profiles": [
{
"id": "none",
"label": "No GPU (CPU)",
"device_requests": [],
"environment": [
{
"name": "AUTO_GPU",
"value": "false"
}
]
},
{
"id": "vaapi",
"label": "Intel/AMD (streaming rendering and encoding)",
"device_requests": [
{
"id": "selkies-render",
"kind": "character-device",
"path_prompt": "Intel/AMD render node",
"host_path_default": "/dev/dri/renderD128",
"container_path_strategy": "same-as-host",
"mode": "0660",
"deny_write": false,
"gid_strategy": "host-device-gid",
"drm_vendor_ids": [
"0x8086",
"0x1002"
]
}
],
"environment": [
{
"name": "PIXELFLUX_WAYLAND",
"value": "true"
},
{
"name": "AUTO_GPU",
"value": "false"
}
],
"environment_from_devices": {
"DRINODE": [
"selkies-render"
],
"DRI_NODE": [
"selkies-render"
],
"ATTACHED_DEVICES_PERMS": [
"selkies-render"
]
}
},
{
"id": "nvidia",
"label": "NVIDIA (Selkies rendering and NVENC)",
"device_requests": [
{
"id": "selkies-nvidia",
"kind": "nvidia-runtime",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "AUTO_GPU",
"value": "true"
},
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,video,graphics,utility,display"
}
]
}
]
},
"gpu_validation": {
"device_inventory": "host-sysfs-and-stat",
"application_acceleration": "requires-workload-test",
"tone_mapping": "not-implied-by-device-access"
},
"device_permissions": {
"strategy": "linuxserver-native-init",
"service_user": "abc",
"environment": "ATTACHED_DEVICES_PERMS",
"paths": "all-resolved-selected-character-devices"
}
},
"adaptations": [
+115 -2
View File
@@ -41,8 +41,8 @@
"Use a trusted HTTPS reverse proxy for browser access. Port 3001 uses the upstream self-signed certificate; port 3000 is for an HTTP reverse-proxy backend.",
"The upstream default has no login. Optional CUSTOM_USER and PASSWORD variables enable HTTP basic authentication; do not expose an unauthenticated desktop to untrusted networks.",
"/config holds settings and desktop state and is included in Proxmox backups. /storage holds documents and supports a managed volume or an explicitly selected host directory; host directories require separate backups.",
"The default uses software rendering. GPU acceleration and other CPU architectures are not claimed tested by a CPU-only amd64 installation.",
"Without an assigned GPU, an application may ask to switch to CPU rendering. Choose the CPU option; hardware acceleration is not required for the default configuration."
"The default installation draws on the CPU. The advanced installation can assign an Intel or AMD GPU, which the desktop, the application and the video stream then use; NVIDIA is offered when the host has its driver and the NVIDIA Container Toolkit.",
"Without a GPU, an application may ask to switch to CPU rendering. Choose the CPU option; the application remembers it."
],
"mini_changelog": [],
"display_version": null,
@@ -112,6 +112,14 @@
"required": false,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "LC_ALL",
"example": "",
"required": false,
"sensitive": false,
"source": "upstream-documentation",
"prompt": "Language/locale (e.g. es_ES.UTF-8; translation of every application is not guaranteed)"
}
],
"volumes": [
@@ -365,6 +373,111 @@
"stability_seconds": 8,
"accept_any_status": true,
"verify_tls": true
},
"selkies": {
"base": "FROM ghcr.io/linuxserver/baseimage-selkies:ubunturesolute@sha256:6efa3fd775a552938d862f75975d34c418ad26d028ba2c952da58682cfe1cb47",
"dockerfile_url": "https://raw.githubusercontent.com/junkerderprovinz/artcraft-apps/32bee0dea9bdaf5310c693210bea0d732a129ae8/Dockerfile",
"dockerfile_sha256": "69ab1a81d1696d1bd143a6fa5a121c034ddfb3e83008969340e8cd2413547fe1",
"reviewed_on": "2026-11-04",
"documentation": "https://docs.linuxserver.io/images/docker-baseimage-selkies/",
"nvidia": "available-in-advanced-mode-with-compatible-host-driver-and-toolkit",
"validation": "Intel/AMD tested on a Radeon 680M: GL compositor and VAAPI encoding on the render node"
},
"device_requests": [],
"optional_devices": [],
"hardware_acceleration": {
"prompt": "Selkies desktop and streaming acceleration",
"default": "none",
"profiles": [
{
"id": "none",
"label": "No GPU (CPU)",
"device_requests": [],
"environment": [
{
"name": "AUTO_GPU",
"value": "false"
}
]
},
{
"id": "vaapi",
"label": "Intel/AMD (streaming rendering and encoding)",
"device_requests": [
{
"id": "selkies-render",
"kind": "character-device",
"path_prompt": "Intel/AMD render node",
"host_path_default": "/dev/dri/renderD128",
"container_path_strategy": "same-as-host",
"mode": "0660",
"deny_write": false,
"gid_strategy": "host-device-gid",
"drm_vendor_ids": [
"0x8086",
"0x1002"
]
}
],
"environment": [
{
"name": "PIXELFLUX_WAYLAND",
"value": "true"
},
{
"name": "AUTO_GPU",
"value": "false"
}
],
"environment_from_devices": {
"DRINODE": [
"selkies-render"
],
"DRI_NODE": [
"selkies-render"
],
"ATTACHED_DEVICES_PERMS": [
"selkies-render"
]
}
},
{
"id": "nvidia",
"label": "NVIDIA (Selkies rendering and NVENC)",
"device_requests": [
{
"id": "selkies-nvidia",
"kind": "nvidia-runtime",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "AUTO_GPU",
"value": "true"
},
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,video,graphics,utility,display"
}
]
}
]
},
"gpu_validation": {
"device_inventory": "host-sysfs-and-stat",
"application_acceleration": "requires-workload-test",
"tone_mapping": "not-implied-by-device-access"
},
"device_permissions": {
"strategy": "linuxserver-native-init",
"service_user": "abc",
"environment": "ATTACHED_DEVICES_PERMS",
"paths": "all-resolved-selected-character-devices"
}
},
"adaptations": [
+115 -2
View File
@@ -41,8 +41,8 @@
"Use a trusted HTTPS reverse proxy for browser access. Port 3001 uses the upstream self-signed certificate; port 3000 is for an HTTP reverse-proxy backend.",
"The upstream default has no login. Optional CUSTOM_USER and PASSWORD variables enable HTTP basic authentication; do not expose an unauthenticated desktop to untrusted networks.",
"/config holds settings and desktop state and is included in Proxmox backups. /storage holds documents and supports a managed volume or an explicitly selected host directory; host directories require separate backups.",
"The default uses software rendering. GPU acceleration and other CPU architectures are not claimed tested by a CPU-only amd64 installation.",
"Without an assigned GPU, an application may ask to switch to CPU rendering. Choose the CPU option; hardware acceleration is not required for the default configuration."
"The default installation draws on the CPU. The advanced installation can assign an Intel or AMD GPU, which the desktop, the application and the video stream then use; NVIDIA is offered when the host has its driver and the NVIDIA Container Toolkit.",
"Without a GPU, an application may ask to switch to CPU rendering. Choose the CPU option; the application remembers it."
],
"mini_changelog": [],
"display_version": null,
@@ -112,6 +112,14 @@
"required": false,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "LC_ALL",
"example": "",
"required": false,
"sensitive": false,
"source": "upstream-documentation",
"prompt": "Language/locale (e.g. es_ES.UTF-8; translation of every application is not guaranteed)"
}
],
"volumes": [
@@ -365,6 +373,111 @@
"stability_seconds": 8,
"accept_any_status": true,
"verify_tls": true
},
"selkies": {
"base": "FROM ghcr.io/linuxserver/baseimage-selkies:ubunturesolute@sha256:6efa3fd775a552938d862f75975d34c418ad26d028ba2c952da58682cfe1cb47",
"dockerfile_url": "https://raw.githubusercontent.com/junkerderprovinz/artcraft-apps/32bee0dea9bdaf5310c693210bea0d732a129ae8/Dockerfile",
"dockerfile_sha256": "69ab1a81d1696d1bd143a6fa5a121c034ddfb3e83008969340e8cd2413547fe1",
"reviewed_on": "2026-11-04",
"documentation": "https://docs.linuxserver.io/images/docker-baseimage-selkies/",
"nvidia": "available-in-advanced-mode-with-compatible-host-driver-and-toolkit",
"validation": "Intel/AMD tested on a Radeon 680M: GL compositor and VAAPI encoding on the render node"
},
"device_requests": [],
"optional_devices": [],
"hardware_acceleration": {
"prompt": "Selkies desktop and streaming acceleration",
"default": "none",
"profiles": [
{
"id": "none",
"label": "No GPU (CPU)",
"device_requests": [],
"environment": [
{
"name": "AUTO_GPU",
"value": "false"
}
]
},
{
"id": "vaapi",
"label": "Intel/AMD (streaming rendering and encoding)",
"device_requests": [
{
"id": "selkies-render",
"kind": "character-device",
"path_prompt": "Intel/AMD render node",
"host_path_default": "/dev/dri/renderD128",
"container_path_strategy": "same-as-host",
"mode": "0660",
"deny_write": false,
"gid_strategy": "host-device-gid",
"drm_vendor_ids": [
"0x8086",
"0x1002"
]
}
],
"environment": [
{
"name": "PIXELFLUX_WAYLAND",
"value": "true"
},
{
"name": "AUTO_GPU",
"value": "false"
}
],
"environment_from_devices": {
"DRINODE": [
"selkies-render"
],
"DRI_NODE": [
"selkies-render"
],
"ATTACHED_DEVICES_PERMS": [
"selkies-render"
]
}
},
{
"id": "nvidia",
"label": "NVIDIA (Selkies rendering and NVENC)",
"device_requests": [
{
"id": "selkies-nvidia",
"kind": "nvidia-runtime",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "AUTO_GPU",
"value": "true"
},
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,video,graphics,utility,display"
}
]
}
]
},
"gpu_validation": {
"device_inventory": "host-sysfs-and-stat",
"application_acceleration": "requires-workload-test",
"tone_mapping": "not-implied-by-device-access"
},
"device_permissions": {
"strategy": "linuxserver-native-init",
"service_user": "abc",
"environment": "ATTACHED_DEVICES_PERMS",
"paths": "all-resolved-selected-character-devices"
}
},
"adaptations": [
+115 -2
View File
@@ -41,8 +41,8 @@
"Use a trusted HTTPS reverse proxy for browser access. Port 3001 uses the upstream self-signed certificate; port 3000 is for an HTTP reverse-proxy backend.",
"The upstream default has no login. Optional CUSTOM_USER and PASSWORD variables enable HTTP basic authentication; do not expose an unauthenticated desktop to untrusted networks.",
"/config holds settings and desktop state and is included in Proxmox backups. /storage holds documents and supports a managed volume or an explicitly selected host directory; host directories require separate backups.",
"The default uses software rendering. GPU acceleration and other CPU architectures are not claimed tested by a CPU-only amd64 installation.",
"Without an assigned GPU, an application may ask to switch to CPU rendering. Choose the CPU option; hardware acceleration is not required for the default configuration."
"The default installation draws on the CPU. The advanced installation can assign an Intel or AMD GPU, which the desktop, the application and the video stream then use; NVIDIA is offered when the host has its driver and the NVIDIA Container Toolkit.",
"Without a GPU, an application may ask to switch to CPU rendering. Choose the CPU option; the application remembers it."
],
"mini_changelog": [],
"display_version": null,
@@ -112,6 +112,14 @@
"required": false,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "LC_ALL",
"example": "",
"required": false,
"sensitive": false,
"source": "upstream-documentation",
"prompt": "Language/locale (e.g. es_ES.UTF-8; translation of every application is not guaranteed)"
}
],
"volumes": [
@@ -365,6 +373,111 @@
"stability_seconds": 8,
"accept_any_status": true,
"verify_tls": true
},
"selkies": {
"base": "FROM ghcr.io/linuxserver/baseimage-selkies:ubunturesolute@sha256:6efa3fd775a552938d862f75975d34c418ad26d028ba2c952da58682cfe1cb47",
"dockerfile_url": "https://raw.githubusercontent.com/junkerderprovinz/artcraft-apps/32bee0dea9bdaf5310c693210bea0d732a129ae8/Dockerfile",
"dockerfile_sha256": "69ab1a81d1696d1bd143a6fa5a121c034ddfb3e83008969340e8cd2413547fe1",
"reviewed_on": "2026-11-04",
"documentation": "https://docs.linuxserver.io/images/docker-baseimage-selkies/",
"nvidia": "available-in-advanced-mode-with-compatible-host-driver-and-toolkit",
"validation": "Intel/AMD tested on a Radeon 680M: GL compositor and VAAPI encoding on the render node"
},
"device_requests": [],
"optional_devices": [],
"hardware_acceleration": {
"prompt": "Selkies desktop and streaming acceleration",
"default": "none",
"profiles": [
{
"id": "none",
"label": "No GPU (CPU)",
"device_requests": [],
"environment": [
{
"name": "AUTO_GPU",
"value": "false"
}
]
},
{
"id": "vaapi",
"label": "Intel/AMD (streaming rendering and encoding)",
"device_requests": [
{
"id": "selkies-render",
"kind": "character-device",
"path_prompt": "Intel/AMD render node",
"host_path_default": "/dev/dri/renderD128",
"container_path_strategy": "same-as-host",
"mode": "0660",
"deny_write": false,
"gid_strategy": "host-device-gid",
"drm_vendor_ids": [
"0x8086",
"0x1002"
]
}
],
"environment": [
{
"name": "PIXELFLUX_WAYLAND",
"value": "true"
},
{
"name": "AUTO_GPU",
"value": "false"
}
],
"environment_from_devices": {
"DRINODE": [
"selkies-render"
],
"DRI_NODE": [
"selkies-render"
],
"ATTACHED_DEVICES_PERMS": [
"selkies-render"
]
}
},
{
"id": "nvidia",
"label": "NVIDIA (Selkies rendering and NVENC)",
"device_requests": [
{
"id": "selkies-nvidia",
"kind": "nvidia-runtime",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "AUTO_GPU",
"value": "true"
},
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,video,graphics,utility,display"
}
]
}
]
},
"gpu_validation": {
"device_inventory": "host-sysfs-and-stat",
"application_acceleration": "requires-workload-test",
"tone_mapping": "not-implied-by-device-access"
},
"device_permissions": {
"strategy": "linuxserver-native-init",
"service_user": "abc",
"environment": "ATTACHED_DEVICES_PERMS",
"paths": "all-resolved-selected-character-devices"
}
},
"adaptations": [
+115 -2
View File
@@ -41,8 +41,8 @@
"Use a trusted HTTPS reverse proxy for browser access. Port 3001 uses the upstream self-signed certificate; port 3000 is for an HTTP reverse-proxy backend.",
"The upstream default has no login. Optional CUSTOM_USER and PASSWORD variables enable HTTP basic authentication; do not expose an unauthenticated desktop to untrusted networks.",
"/config holds settings and desktop state and is included in Proxmox backups. /storage holds documents and supports a managed volume or an explicitly selected host directory; host directories require separate backups.",
"The default uses software rendering. GPU acceleration and other CPU architectures are not claimed tested by a CPU-only amd64 installation.",
"Without an assigned GPU, an application may ask to switch to CPU rendering. Choose the CPU option; hardware acceleration is not required for the default configuration."
"The default installation draws on the CPU. The advanced installation can assign an Intel or AMD GPU, which the desktop, the application and the video stream then use; NVIDIA is offered when the host has its driver and the NVIDIA Container Toolkit.",
"Without a GPU, an application may ask to switch to CPU rendering. Choose the CPU option; the application remembers it."
],
"mini_changelog": [],
"display_version": null,
@@ -112,6 +112,14 @@
"required": false,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "LC_ALL",
"example": "",
"required": false,
"sensitive": false,
"source": "upstream-documentation",
"prompt": "Language/locale (e.g. es_ES.UTF-8; translation of every application is not guaranteed)"
}
],
"volumes": [
@@ -365,6 +373,111 @@
"stability_seconds": 8,
"accept_any_status": true,
"verify_tls": true
},
"selkies": {
"base": "FROM ghcr.io/linuxserver/baseimage-selkies:ubunturesolute@sha256:6efa3fd775a552938d862f75975d34c418ad26d028ba2c952da58682cfe1cb47",
"dockerfile_url": "https://raw.githubusercontent.com/junkerderprovinz/artcraft-apps/32bee0dea9bdaf5310c693210bea0d732a129ae8/Dockerfile",
"dockerfile_sha256": "69ab1a81d1696d1bd143a6fa5a121c034ddfb3e83008969340e8cd2413547fe1",
"reviewed_on": "2026-11-04",
"documentation": "https://docs.linuxserver.io/images/docker-baseimage-selkies/",
"nvidia": "available-in-advanced-mode-with-compatible-host-driver-and-toolkit",
"validation": "Intel/AMD tested on a Radeon 680M: GL compositor and VAAPI encoding on the render node"
},
"device_requests": [],
"optional_devices": [],
"hardware_acceleration": {
"prompt": "Selkies desktop and streaming acceleration",
"default": "none",
"profiles": [
{
"id": "none",
"label": "No GPU (CPU)",
"device_requests": [],
"environment": [
{
"name": "AUTO_GPU",
"value": "false"
}
]
},
{
"id": "vaapi",
"label": "Intel/AMD (streaming rendering and encoding)",
"device_requests": [
{
"id": "selkies-render",
"kind": "character-device",
"path_prompt": "Intel/AMD render node",
"host_path_default": "/dev/dri/renderD128",
"container_path_strategy": "same-as-host",
"mode": "0660",
"deny_write": false,
"gid_strategy": "host-device-gid",
"drm_vendor_ids": [
"0x8086",
"0x1002"
]
}
],
"environment": [
{
"name": "PIXELFLUX_WAYLAND",
"value": "true"
},
{
"name": "AUTO_GPU",
"value": "false"
}
],
"environment_from_devices": {
"DRINODE": [
"selkies-render"
],
"DRI_NODE": [
"selkies-render"
],
"ATTACHED_DEVICES_PERMS": [
"selkies-render"
]
}
},
{
"id": "nvidia",
"label": "NVIDIA (Selkies rendering and NVENC)",
"device_requests": [
{
"id": "selkies-nvidia",
"kind": "nvidia-runtime",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "AUTO_GPU",
"value": "true"
},
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,video,graphics,utility,display"
}
]
}
]
},
"gpu_validation": {
"device_inventory": "host-sysfs-and-stat",
"application_acceleration": "requires-workload-test",
"tone_mapping": "not-implied-by-device-access"
},
"device_permissions": {
"strategy": "linuxserver-native-init",
"service_user": "abc",
"environment": "ATTACHED_DEVICES_PERMS",
"paths": "all-resolved-selected-character-devices"
}
},
"adaptations": [
+115 -2
View File
@@ -41,8 +41,8 @@
"Use a trusted HTTPS reverse proxy for browser access. Port 3001 uses the upstream self-signed certificate; port 3000 is for an HTTP reverse-proxy backend.",
"The upstream default has no login. Optional CUSTOM_USER and PASSWORD variables enable HTTP basic authentication; do not expose an unauthenticated desktop to untrusted networks.",
"/config holds settings and desktop state and is included in Proxmox backups. /storage holds documents and supports a managed volume or an explicitly selected host directory; host directories require separate backups.",
"The default uses software rendering. GPU acceleration and other CPU architectures are not claimed tested by a CPU-only amd64 installation.",
"Without an assigned GPU, an application may ask to switch to CPU rendering. Choose the CPU option; hardware acceleration is not required for the default configuration."
"The default installation draws on the CPU. The advanced installation can assign an Intel or AMD GPU, which the desktop, the application and the video stream then use; NVIDIA is offered when the host has its driver and the NVIDIA Container Toolkit.",
"Without a GPU, an application may ask to switch to CPU rendering. Choose the CPU option; the application remembers it."
],
"mini_changelog": [],
"display_version": null,
@@ -112,6 +112,14 @@
"required": false,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "LC_ALL",
"example": "",
"required": false,
"sensitive": false,
"source": "upstream-documentation",
"prompt": "Language/locale (e.g. es_ES.UTF-8; translation of every application is not guaranteed)"
}
],
"volumes": [
@@ -365,6 +373,111 @@
"stability_seconds": 8,
"accept_any_status": true,
"verify_tls": true
},
"selkies": {
"base": "FROM ghcr.io/linuxserver/baseimage-selkies:ubunturesolute@sha256:6efa3fd775a552938d862f75975d34c418ad26d028ba2c952da58682cfe1cb47",
"dockerfile_url": "https://raw.githubusercontent.com/junkerderprovinz/artcraft-apps/32bee0dea9bdaf5310c693210bea0d732a129ae8/Dockerfile",
"dockerfile_sha256": "69ab1a81d1696d1bd143a6fa5a121c034ddfb3e83008969340e8cd2413547fe1",
"reviewed_on": "2026-11-04",
"documentation": "https://docs.linuxserver.io/images/docker-baseimage-selkies/",
"nvidia": "available-in-advanced-mode-with-compatible-host-driver-and-toolkit",
"validation": "Intel/AMD tested on a Radeon 680M: GL compositor and VAAPI encoding on the render node"
},
"device_requests": [],
"optional_devices": [],
"hardware_acceleration": {
"prompt": "Selkies desktop and streaming acceleration",
"default": "none",
"profiles": [
{
"id": "none",
"label": "No GPU (CPU)",
"device_requests": [],
"environment": [
{
"name": "AUTO_GPU",
"value": "false"
}
]
},
{
"id": "vaapi",
"label": "Intel/AMD (streaming rendering and encoding)",
"device_requests": [
{
"id": "selkies-render",
"kind": "character-device",
"path_prompt": "Intel/AMD render node",
"host_path_default": "/dev/dri/renderD128",
"container_path_strategy": "same-as-host",
"mode": "0660",
"deny_write": false,
"gid_strategy": "host-device-gid",
"drm_vendor_ids": [
"0x8086",
"0x1002"
]
}
],
"environment": [
{
"name": "PIXELFLUX_WAYLAND",
"value": "true"
},
{
"name": "AUTO_GPU",
"value": "false"
}
],
"environment_from_devices": {
"DRINODE": [
"selkies-render"
],
"DRI_NODE": [
"selkies-render"
],
"ATTACHED_DEVICES_PERMS": [
"selkies-render"
]
}
},
{
"id": "nvidia",
"label": "NVIDIA (Selkies rendering and NVENC)",
"device_requests": [
{
"id": "selkies-nvidia",
"kind": "nvidia-runtime",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "AUTO_GPU",
"value": "true"
},
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,video,graphics,utility,display"
}
]
}
]
},
"gpu_validation": {
"device_inventory": "host-sysfs-and-stat",
"application_acceleration": "requires-workload-test",
"tone_mapping": "not-implied-by-device-access"
},
"device_permissions": {
"strategy": "linuxserver-native-init",
"service_user": "abc",
"environment": "ATTACHED_DEVICES_PERMS",
"paths": "all-resolved-selected-character-devices"
}
},
"adaptations": [
+115 -2
View File
@@ -41,8 +41,8 @@
"Use a trusted HTTPS reverse proxy for browser access. Port 3001 uses the upstream self-signed certificate; port 3000 is for an HTTP reverse-proxy backend.",
"The upstream default has no login. Optional CUSTOM_USER and PASSWORD variables enable HTTP basic authentication; do not expose an unauthenticated desktop to untrusted networks.",
"/config holds settings and desktop state and is included in Proxmox backups. /storage holds documents and supports a managed volume or an explicitly selected host directory; host directories require separate backups.",
"The default uses software rendering. GPU acceleration and other CPU architectures are not claimed tested by a CPU-only amd64 installation.",
"Without an assigned GPU, an application may ask to switch to CPU rendering. Choose the CPU option; hardware acceleration is not required for the default configuration."
"The default installation draws on the CPU. The advanced installation can assign an Intel or AMD GPU, which the desktop, the application and the video stream then use; NVIDIA is offered when the host has its driver and the NVIDIA Container Toolkit.",
"Without a GPU, an application may ask to switch to CPU rendering. Choose the CPU option; the application remembers it."
],
"mini_changelog": [],
"display_version": null,
@@ -112,6 +112,14 @@
"required": false,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "LC_ALL",
"example": "",
"required": false,
"sensitive": false,
"source": "upstream-documentation",
"prompt": "Language/locale (e.g. es_ES.UTF-8; translation of every application is not guaranteed)"
}
],
"volumes": [
@@ -365,6 +373,111 @@
"stability_seconds": 8,
"accept_any_status": true,
"verify_tls": true
},
"selkies": {
"base": "FROM ghcr.io/linuxserver/baseimage-selkies:ubunturesolute@sha256:6efa3fd775a552938d862f75975d34c418ad26d028ba2c952da58682cfe1cb47",
"dockerfile_url": "https://raw.githubusercontent.com/junkerderprovinz/artcraft-apps/32bee0dea9bdaf5310c693210bea0d732a129ae8/Dockerfile",
"dockerfile_sha256": "69ab1a81d1696d1bd143a6fa5a121c034ddfb3e83008969340e8cd2413547fe1",
"reviewed_on": "2026-11-04",
"documentation": "https://docs.linuxserver.io/images/docker-baseimage-selkies/",
"nvidia": "available-in-advanced-mode-with-compatible-host-driver-and-toolkit",
"validation": "Intel/AMD tested on a Radeon 680M: GL compositor and VAAPI encoding on the render node"
},
"device_requests": [],
"optional_devices": [],
"hardware_acceleration": {
"prompt": "Selkies desktop and streaming acceleration",
"default": "none",
"profiles": [
{
"id": "none",
"label": "No GPU (CPU)",
"device_requests": [],
"environment": [
{
"name": "AUTO_GPU",
"value": "false"
}
]
},
{
"id": "vaapi",
"label": "Intel/AMD (streaming rendering and encoding)",
"device_requests": [
{
"id": "selkies-render",
"kind": "character-device",
"path_prompt": "Intel/AMD render node",
"host_path_default": "/dev/dri/renderD128",
"container_path_strategy": "same-as-host",
"mode": "0660",
"deny_write": false,
"gid_strategy": "host-device-gid",
"drm_vendor_ids": [
"0x8086",
"0x1002"
]
}
],
"environment": [
{
"name": "PIXELFLUX_WAYLAND",
"value": "true"
},
{
"name": "AUTO_GPU",
"value": "false"
}
],
"environment_from_devices": {
"DRINODE": [
"selkies-render"
],
"DRI_NODE": [
"selkies-render"
],
"ATTACHED_DEVICES_PERMS": [
"selkies-render"
]
}
},
{
"id": "nvidia",
"label": "NVIDIA (Selkies rendering and NVENC)",
"device_requests": [
{
"id": "selkies-nvidia",
"kind": "nvidia-runtime",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "AUTO_GPU",
"value": "true"
},
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,video,graphics,utility,display"
}
]
}
]
},
"gpu_validation": {
"device_inventory": "host-sysfs-and-stat",
"application_acceleration": "requires-workload-test",
"tone_mapping": "not-implied-by-device-access"
},
"device_permissions": {
"strategy": "linuxserver-native-init",
"service_user": "abc",
"environment": "ATTACHED_DEVICES_PERMS",
"paths": "all-resolved-selected-character-devices"
}
},
"adaptations": [
+115 -2
View File
@@ -41,8 +41,8 @@
"Use a trusted HTTPS reverse proxy for browser access. Port 3001 uses the upstream self-signed certificate; port 3000 is for an HTTP reverse-proxy backend.",
"The upstream default has no login. Optional CUSTOM_USER and PASSWORD variables enable HTTP basic authentication; do not expose an unauthenticated desktop to untrusted networks.",
"/config holds settings and desktop state and is included in Proxmox backups. /storage holds documents and supports a managed volume or an explicitly selected host directory; host directories require separate backups.",
"The default uses software rendering. GPU acceleration and other CPU architectures are not claimed tested by a CPU-only amd64 installation.",
"Without an assigned GPU, an application may ask to switch to CPU rendering. Choose the CPU option; hardware acceleration is not required for the default configuration."
"The default installation draws on the CPU. The advanced installation can assign an Intel or AMD GPU, which the desktop, the application and the video stream then use; NVIDIA is offered when the host has its driver and the NVIDIA Container Toolkit.",
"Without a GPU, an application may ask to switch to CPU rendering. Choose the CPU option; the application remembers it."
],
"mini_changelog": [],
"display_version": null,
@@ -112,6 +112,14 @@
"required": false,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "LC_ALL",
"example": "",
"required": false,
"sensitive": false,
"source": "upstream-documentation",
"prompt": "Language/locale (e.g. es_ES.UTF-8; translation of every application is not guaranteed)"
}
],
"volumes": [
@@ -365,6 +373,111 @@
"stability_seconds": 8,
"accept_any_status": true,
"verify_tls": true
},
"selkies": {
"base": "FROM ghcr.io/linuxserver/baseimage-selkies:ubunturesolute@sha256:6efa3fd775a552938d862f75975d34c418ad26d028ba2c952da58682cfe1cb47",
"dockerfile_url": "https://raw.githubusercontent.com/junkerderprovinz/artcraft-apps/32bee0dea9bdaf5310c693210bea0d732a129ae8/Dockerfile",
"dockerfile_sha256": "69ab1a81d1696d1bd143a6fa5a121c034ddfb3e83008969340e8cd2413547fe1",
"reviewed_on": "2026-11-04",
"documentation": "https://docs.linuxserver.io/images/docker-baseimage-selkies/",
"nvidia": "available-in-advanced-mode-with-compatible-host-driver-and-toolkit",
"validation": "Intel/AMD tested on a Radeon 680M: GL compositor and VAAPI encoding on the render node"
},
"device_requests": [],
"optional_devices": [],
"hardware_acceleration": {
"prompt": "Selkies desktop and streaming acceleration",
"default": "none",
"profiles": [
{
"id": "none",
"label": "No GPU (CPU)",
"device_requests": [],
"environment": [
{
"name": "AUTO_GPU",
"value": "false"
}
]
},
{
"id": "vaapi",
"label": "Intel/AMD (streaming rendering and encoding)",
"device_requests": [
{
"id": "selkies-render",
"kind": "character-device",
"path_prompt": "Intel/AMD render node",
"host_path_default": "/dev/dri/renderD128",
"container_path_strategy": "same-as-host",
"mode": "0660",
"deny_write": false,
"gid_strategy": "host-device-gid",
"drm_vendor_ids": [
"0x8086",
"0x1002"
]
}
],
"environment": [
{
"name": "PIXELFLUX_WAYLAND",
"value": "true"
},
{
"name": "AUTO_GPU",
"value": "false"
}
],
"environment_from_devices": {
"DRINODE": [
"selkies-render"
],
"DRI_NODE": [
"selkies-render"
],
"ATTACHED_DEVICES_PERMS": [
"selkies-render"
]
}
},
{
"id": "nvidia",
"label": "NVIDIA (Selkies rendering and NVENC)",
"device_requests": [
{
"id": "selkies-nvidia",
"kind": "nvidia-runtime",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "AUTO_GPU",
"value": "true"
},
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,video,graphics,utility,display"
}
]
}
]
},
"gpu_validation": {
"device_inventory": "host-sysfs-and-stat",
"application_acceleration": "requires-workload-test",
"tone_mapping": "not-implied-by-device-access"
},
"device_permissions": {
"strategy": "linuxserver-native-init",
"service_user": "abc",
"environment": "ATTACHED_DEVICES_PERMS",
"paths": "all-resolved-selected-character-devices"
}
},
"adaptations": [
+115 -2
View File
@@ -41,8 +41,8 @@
"Use a trusted HTTPS reverse proxy for browser access. Port 3001 uses the upstream self-signed certificate; port 3000 is for an HTTP reverse-proxy backend.",
"The upstream default has no login. Optional CUSTOM_USER and PASSWORD variables enable HTTP basic authentication; do not expose an unauthenticated desktop to untrusted networks.",
"/config holds settings and desktop state and is included in Proxmox backups. /storage holds documents and supports a managed volume or an explicitly selected host directory; host directories require separate backups.",
"The default uses software rendering. GPU acceleration and other CPU architectures are not claimed tested by a CPU-only amd64 installation.",
"Without an assigned GPU, an application may ask to switch to CPU rendering. Choose the CPU option; hardware acceleration is not required for the default configuration."
"The default installation draws on the CPU. The advanced installation can assign an Intel or AMD GPU, which the desktop, the application and the video stream then use; NVIDIA is offered when the host has its driver and the NVIDIA Container Toolkit.",
"Without a GPU, an application may ask to switch to CPU rendering. Choose the CPU option; the application remembers it."
],
"mini_changelog": [],
"display_version": null,
@@ -112,6 +112,14 @@
"required": false,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "LC_ALL",
"example": "",
"required": false,
"sensitive": false,
"source": "upstream-documentation",
"prompt": "Language/locale (e.g. es_ES.UTF-8; translation of every application is not guaranteed)"
}
],
"volumes": [
@@ -365,6 +373,111 @@
"stability_seconds": 8,
"accept_any_status": true,
"verify_tls": true
},
"selkies": {
"base": "FROM ghcr.io/linuxserver/baseimage-selkies:ubunturesolute@sha256:6efa3fd775a552938d862f75975d34c418ad26d028ba2c952da58682cfe1cb47",
"dockerfile_url": "https://raw.githubusercontent.com/junkerderprovinz/artcraft-apps/32bee0dea9bdaf5310c693210bea0d732a129ae8/Dockerfile",
"dockerfile_sha256": "69ab1a81d1696d1bd143a6fa5a121c034ddfb3e83008969340e8cd2413547fe1",
"reviewed_on": "2026-11-04",
"documentation": "https://docs.linuxserver.io/images/docker-baseimage-selkies/",
"nvidia": "available-in-advanced-mode-with-compatible-host-driver-and-toolkit",
"validation": "Intel/AMD tested on a Radeon 680M: GL compositor and VAAPI encoding on the render node"
},
"device_requests": [],
"optional_devices": [],
"hardware_acceleration": {
"prompt": "Selkies desktop and streaming acceleration",
"default": "none",
"profiles": [
{
"id": "none",
"label": "No GPU (CPU)",
"device_requests": [],
"environment": [
{
"name": "AUTO_GPU",
"value": "false"
}
]
},
{
"id": "vaapi",
"label": "Intel/AMD (streaming rendering and encoding)",
"device_requests": [
{
"id": "selkies-render",
"kind": "character-device",
"path_prompt": "Intel/AMD render node",
"host_path_default": "/dev/dri/renderD128",
"container_path_strategy": "same-as-host",
"mode": "0660",
"deny_write": false,
"gid_strategy": "host-device-gid",
"drm_vendor_ids": [
"0x8086",
"0x1002"
]
}
],
"environment": [
{
"name": "PIXELFLUX_WAYLAND",
"value": "true"
},
{
"name": "AUTO_GPU",
"value": "false"
}
],
"environment_from_devices": {
"DRINODE": [
"selkies-render"
],
"DRI_NODE": [
"selkies-render"
],
"ATTACHED_DEVICES_PERMS": [
"selkies-render"
]
}
},
{
"id": "nvidia",
"label": "NVIDIA (Selkies rendering and NVENC)",
"device_requests": [
{
"id": "selkies-nvidia",
"kind": "nvidia-runtime",
"device_selection": "all-requested-by-compose"
}
],
"environment": [
{
"name": "AUTO_GPU",
"value": "true"
},
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
},
{
"name": "NVIDIA_DRIVER_CAPABILITIES",
"value": "compute,video,graphics,utility,display"
}
]
}
]
},
"gpu_validation": {
"device_inventory": "host-sysfs-and-stat",
"application_acceleration": "requires-workload-test",
"tone_mapping": "not-implied-by-device-access"
},
"device_permissions": {
"strategy": "linuxserver-native-init",
"service_user": "abc",
"environment": "ATTACHED_DEVICES_PERMS",
"paths": "all-resolved-selected-character-devices"
}
},
"adaptations": [
+1 -3
View File
@@ -513,9 +513,7 @@ class CatalogRefresh:
text += "\n" + translate("New applications since your last visit: {count}").format(count=added)
if updated:
text += "\n" + translate("Updated recipes since your last visit: {count}").format(count=updated)
if self.active:
text += "\n" + translate("Refreshing the application catalog...")
elif self.failed:
if self.failed:
text += "\n" + translate("Catalog refresh unavailable; using the local catalog.")
return text
+3 -2
View File
@@ -606,8 +606,9 @@ def interactive(catalog: Catalog) -> int:
updates.wait()
continue
try:
kwargs = ({'refresh': lambda: updates.changed() or catalog_refresh.changed()}
if updates.active or catalog_refresh.active else {})
# The catalog downloads behind the open menu without closing it:
# a new catalog is shown the next time the menu is drawn.
kwargs = {'refresh': updates.changed} if updates.active else {}
selected = ui.choose(text, entries, selection, size=MENU_SIZE, **kwargs)
except MenuRefresh:
continue
+6 -1
View File
@@ -70,7 +70,12 @@ def apply_gpu_contract(template: dict[str, Any]) -> None:
def apply_selkies_contract(template):
profile = template['proxmox']['installer_profile']
if not template['container_contract']['image']['reference'].startswith('lscr.io/linuxserver/'):
# A LinuxServer image, or one whose reviewed Dockerfile is built on the
# LinuxServer Selkies base and so has the same init and GPU variables.
built_on_base = str(profile['selkies'].get('base', '')).startswith(
'FROM ghcr.io/linuxserver/baseimage-selkies:')
if not (template['container_contract']['image']['reference'].startswith('lscr.io/linuxserver/')
or built_on_base):
raise ValueError(translate('The Selkies profile requires a verified LinuxServer image'))
environment = template['container_contract']['environment']
if not any(e['name'] == 'LC_ALL' for e in environment):
+9 -6
View File
@@ -361,9 +361,8 @@ class CatalogRefreshTests(unittest.TestCase):
next_visit = refresh.CatalogRefresh(self.root, Catalog(self.root))
self.assertIn("New applications since your last visit: 1", next_visit.describe())
def test_main_menu_redraws_totals_and_news_after_background_refresh(self):
def test_the_download_never_closes_the_open_menu_and_shows_on_the_next_draw(self):
from proxmenux_oci import cli, updates
from proxmenux_oci.ui import MenuRefresh
status = refresh.CatalogRefresh(self.root, Catalog(self.root))
status.process = Mock(returncode=0)
status.process.poll.return_value = None
@@ -374,14 +373,16 @@ class CatalogRefreshTests(unittest.TestCase):
def choose(self, text, entries, default, **kwargs):
screens.append((text, dict(entries)))
if len(screens) == 1:
# The catalog finishes downloading while the menu is open:
# nothing may close it, so no refresh is watched.
owner.assertNotIn('refresh', kwargs)
owner.assertNotIn('Refreshing the application catalog', text)
owner.add_app()
owner.sync()
refresh.write_json(refresh.cache_root(owner.root) / 'main-result.json',
{"ok": True, "changed": True})
status.process.poll.return_value = 0
self_refreshed = kwargs['refresh']()
owner.assertTrue(self_refreshed)
raise MenuRefresh()
return 'search' # any action brings the user back to the menu
return None
checker = Mock(active=False)
checker.status.return_value = {"available": []}
@@ -396,6 +397,7 @@ class CatalogRefreshTests(unittest.TestCase):
patch.object(refresh, 'CatalogRefresh', return_value=status), \
patch.object(cli, 'PROJECT_ROOT', self.root), \
patch.object(cli, 'interactive_ui', return_value=UI()), \
patch.object(cli, '_search'), \
patch.object(updates, 'UpdateCheck', return_value=checker_context):
self.assertEqual(cli.interactive(Catalog(self.root)), 0)
self.assertIn('Available applications: 1', screens[0][0])
@@ -447,7 +449,8 @@ class CatalogRefreshTests(unittest.TestCase):
with patch.object(refresh.threading, "Thread") as thread:
with status:
self.assertTrue(status.active)
self.assertIn("Refreshing", status.describe())
# The download is transparent: the open menu does not announce it.
self.assertNotIn("Refreshing", status.describe())
thread.return_value.start.assert_called_once()
spawn.return_value.wait.assert_not_called()
+50
View File
@@ -0,0 +1,50 @@
"""An image built on the LinuxServer Selkies base, but published by someone
else, receives the same GPU profile as the LinuxServer Selkies images."""
import copy
import json
from pathlib import Path
import sys
import unittest
ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(ROOT / 'src'))
from proxmenux_oci.catalog import Catalog
from proxmenux_oci.gpu import apply_selkies_contract
ARTCRAFT = ('cadcraft', 'deckcraft', 'designcraft', 'effectcraft', 'figcraft', 'filmcraft', 'gridcraft',
'lightcraft', 'pdfcraft', 'photocraft', 'soundcraft', 'vectorcraft', 'wordcraft')
def template(reference, base):
return {'container_contract': {'image': {'reference': reference}, 'environment': []},
'proxmox': {'installer_profile': {'selkies': {'base': base}}}}
class SelkiesBaseImageTests(unittest.TestCase):
def test_an_image_built_on_the_selkies_base_gets_the_gpu_profile(self):
built = template('docker.io/junkerderprovinz/photocraft:latest',
'FROM ghcr.io/linuxserver/baseimage-selkies:ubunturesolute')
apply_selkies_contract(built)
profiles = built['proxmox']['installer_profile']['hardware_acceleration']['profiles']
self.assertEqual([item['id'] for item in profiles], ['none', 'vaapi', 'nvidia'])
def test_any_other_image_is_still_refused(self):
other = template('docker.io/someone/desktop:latest', 'FROM ubuntu:24.04')
with self.assertRaises(ValueError):
apply_selkies_contract(copy.deepcopy(other))
def test_every_artcraft_app_offers_the_gpu_to_its_desktop(self):
catalog = Catalog(ROOT)
for app in ARTCRAFT:
with self.subTest(app=app):
profile = catalog.compose(app)['proxmox']['installer_profile']
vaapi = next(item for item in profile['hardware_acceleration']['profiles'] if item['id'] == 'vaapi')
self.assertEqual(set(vaapi['environment_from_devices']),
{'DRINODE', 'DRI_NODE', 'ATTACHED_DEVICES_PERMS'})
self.assertEqual(profile['device_permissions']['environment'], 'ATTACHED_DEVICES_PERMS')
self.assertEqual(profile['hardware_acceleration']['default'], 'none')
if __name__ == '__main__':
unittest.main()