mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-09-30 10:36:41 +00:00
Adds the OCI manager: an engine that turns a Docker Compose file into an LXC definition, a catalog of 365 applications drawn from LinuxServer.io and other container image sources, and a per-instance registry recording what each container was built from. Reachable from the main menu. Catalog text is translated like every other string in the project: the taglines go through translate() and land in lang/*.json, so the entries read in all eight languages instead of only English. Translation cache builder: - a failed translation leaves the key absent rather than writing English, which previously made the string count as translated forever - a result identical to a 3+ word source is rejected, catching a provider that silently returns the text it was given - strings that are nothing but glossary terms keep their source spelling instead of being discarded as failures - no backoff between attempts when the provider is deterministic - application names are protected so "HAOS One" survives translation - argos joins the provider list, and the workflow reads the OCI sources Audit & Report: - findings that moved in the wrong direction between runs are reported alongside the ones that improved - an accepted risk can carry a review date and is flagged when it falls due - backup checks explain in plain language what they looked at and what to do next Monitor: - disks can be excluded from periodic reads, and an idle disk says so instead of showing a stale temperature - per-disk identity survives a controller or enclosure change - scheduled Borg backups resolve their SSH key from the repository entry - PVE upgrades log the package list and the resulting dpkg changes The web build no longer copies scripts/ into public/: the documentation links to GitHub, so nothing read that folder. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
318 lines
10 KiB
JSON
318 lines
10 KiB
JSON
{
|
|
"catalog_ui": {
|
|
"title": {
|
|
"en_US": "Jellyfin"
|
|
},
|
|
"tagline": {
|
|
"en_US": "LinuxServer Jellyfin with optional GPU passthrough"
|
|
},
|
|
"tips": [
|
|
"VA-API and OpenCL tone mapping are separate capabilities. The tested LinuxServer image provides AMD VA-API; AMD OpenCL required the official jellyfin-amd mod.",
|
|
"Choose AMD + OpenCL or Intel + OpenCL to install the corresponding official LinuxServer mod at startup. These are options for the same image, not additional catalog variants.",
|
|
"ProxMenux passes explicit device paths through ATTACHED_DEVICES_PERMS so the native LinuxServer init grants the service user access. No privileged LXC or mode 0777 is needed.",
|
|
"Optional Jellyfin settings are persisted in /config/encoding.xml. AMD OpenCL and VA-API were tested on Lucienne; Intel OpenCL remains untested in this laboratory. Dolby Vision support depends on the source profile and FFmpeg/GPU capabilities."
|
|
]
|
|
},
|
|
"proxmox": {
|
|
"deployment_profile": {
|
|
"variant": "hardware-selectable",
|
|
"gpu_passthrough": "installer-selection"
|
|
},
|
|
"installer_profile": {
|
|
"hardware_acceleration": {
|
|
"prompt": "Hardware acceleration for Jellyfin",
|
|
"default": "none",
|
|
"profiles": [
|
|
{
|
|
"id": "none",
|
|
"label": "No acceleration (CPU)",
|
|
"device_requests": []
|
|
},
|
|
{
|
|
"id": "vaapi",
|
|
"label": "Intel/AMD VA-API (no OpenCL mod)",
|
|
"device_requests": [
|
|
{
|
|
"id": "vaapi-render",
|
|
"kind": "character-device",
|
|
"purpose": "vaapi",
|
|
"path_prompt": "GPU render device",
|
|
"host_path_default": "/dev/dri/renderD128",
|
|
"container_path_strategy": "same-as-host",
|
|
"mode": "0660",
|
|
"deny_write": false,
|
|
"gid_strategy": "host-device-gid",
|
|
"environment": [
|
|
{
|
|
"name": "LIBVA_DRIVER_NAME",
|
|
"prompt": "VA-API driver",
|
|
"choices": [
|
|
"auto",
|
|
"radeonsi",
|
|
"iHD",
|
|
"i965"
|
|
],
|
|
"default": "auto",
|
|
"omit_values": [
|
|
"auto"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"environment_from_devices": {
|
|
"ATTACHED_DEVICES_PERMS": [
|
|
"vaapi-render"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"id": "amd-opencl",
|
|
"label": "AMD VA-API + OpenCL (official mod)",
|
|
"device_requests": [
|
|
{
|
|
"id": "vaapi-render",
|
|
"kind": "character-device",
|
|
"purpose": "vaapi",
|
|
"path_prompt": "GPU render device",
|
|
"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": [
|
|
"0x1002",
|
|
"0x1022"
|
|
]
|
|
},
|
|
{
|
|
"id": "amd-kfd",
|
|
"kind": "character-device",
|
|
"purpose": "amd-opencl",
|
|
"path_prompt": "AMD KFD device",
|
|
"host_path_default": "/dev/kfd",
|
|
"container_path_strategy": "same-as-host",
|
|
"mode": "0660",
|
|
"deny_write": false,
|
|
"gid_strategy": "host-device-gid"
|
|
}
|
|
],
|
|
"environment_from_devices": {
|
|
"ATTACHED_DEVICES_PERMS": [
|
|
"vaapi-render",
|
|
"amd-kfd"
|
|
]
|
|
},
|
|
"environment": [
|
|
{
|
|
"name": "DOCKER_MODS",
|
|
"value": "linuxserver/mods:jellyfin-amd"
|
|
}
|
|
],
|
|
"post_start_configurations": [
|
|
{
|
|
"id": "jellyfin-amd-opencl",
|
|
"type": "jellyfin-encoding-xml",
|
|
"enable_prompt": "Enable VA-API, hardware encoding and OpenCL tone mapping in Jellyfin",
|
|
"enabled_default": true,
|
|
"required": true,
|
|
"timeout_seconds": 120,
|
|
"candidate_paths": [
|
|
"/config/encoding.xml"
|
|
],
|
|
"settings": {
|
|
"HardwareAccelerationType": "vaapi",
|
|
"VaapiDevice": {
|
|
"device_path_from": "vaapi-render"
|
|
},
|
|
"EnableHardwareEncoding": "true",
|
|
"EnableTonemapping": "true",
|
|
"EnableVppTonemapping": "false"
|
|
}
|
|
}
|
|
],
|
|
"architectures": [
|
|
"amd64"
|
|
]
|
|
},
|
|
{
|
|
"id": "intel-opencl",
|
|
"label": "Intel VA-API + OpenCL (official mod)",
|
|
"device_requests": [
|
|
{
|
|
"id": "vaapi-render",
|
|
"kind": "character-device",
|
|
"purpose": "vaapi",
|
|
"path_prompt": "GPU render device",
|
|
"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"
|
|
]
|
|
}
|
|
],
|
|
"environment_from_devices": {
|
|
"ATTACHED_DEVICES_PERMS": [
|
|
"vaapi-render"
|
|
]
|
|
},
|
|
"environment": [
|
|
{
|
|
"name": "DOCKER_MODS",
|
|
"value": "linuxserver/mods:jellyfin-opencl-intel"
|
|
}
|
|
],
|
|
"post_start_configurations": [
|
|
{
|
|
"id": "jellyfin-intel-opencl",
|
|
"type": "jellyfin-encoding-xml",
|
|
"enable_prompt": "Enable VA-API, hardware encoding and OpenCL tone mapping in Jellyfin",
|
|
"enabled_default": true,
|
|
"required": true,
|
|
"timeout_seconds": 120,
|
|
"candidate_paths": [
|
|
"/config/encoding.xml"
|
|
],
|
|
"settings": {
|
|
"HardwareAccelerationType": "vaapi",
|
|
"VaapiDevice": {
|
|
"device_path_from": "vaapi-render"
|
|
},
|
|
"EnableHardwareEncoding": "true",
|
|
"EnableTonemapping": "true",
|
|
"EnableVppTonemapping": "false"
|
|
}
|
|
}
|
|
],
|
|
"architectures": [
|
|
"amd64"
|
|
]
|
|
},
|
|
{
|
|
"id": "nvidia",
|
|
"label": "NVIDIA (NVENC/NVDEC)",
|
|
"device_requests": [
|
|
{
|
|
"id": "nvidia-runtime",
|
|
"kind": "nvidia-runtime",
|
|
"purpose": "nvidia-cuda-nvenc-nvdec",
|
|
"device_selection": "all-requested-by-compose"
|
|
}
|
|
],
|
|
"environment": [
|
|
{
|
|
"name": "NVIDIA_VISIBLE_DEVICES",
|
|
"value": "all"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"startup_healthcheck": {
|
|
"scheme": "http",
|
|
"port": 8096,
|
|
"path": "/System/Info/Public",
|
|
"timeout_seconds": 600,
|
|
"request_timeout_seconds": 10,
|
|
"stability_seconds": 4,
|
|
"verify_tls": false
|
|
}
|
|
},
|
|
"application_options": {
|
|
"hdr10_dolby_vision_tone_mapping": {
|
|
"show_in_catalog": true,
|
|
"selectable": true,
|
|
"provided_by_image": false,
|
|
"configuration": "Optional official LinuxServer GPU mod and persistent Jellyfin encoding settings",
|
|
"scope": "OpenCL tone mapping; not a guarantee for every HDR/Dolby Vision source"
|
|
}
|
|
},
|
|
"defaults": {
|
|
"cores": 2,
|
|
"memory_mb": 2048
|
|
},
|
|
"gpu_lab_references": {
|
|
"amd_mod": "https://github.com/linuxserver/docker-mods/tree/jellyfin-amd",
|
|
"intel_mod": "https://github.com/linuxserver/docker-mods/tree/jellyfin-opencl-intel"
|
|
}
|
|
},
|
|
"container_contract": {
|
|
"environment": [
|
|
{
|
|
"name": "PUID",
|
|
"example": "1000",
|
|
"required": true,
|
|
"sensitive": false,
|
|
"source": "linuxserver-compose"
|
|
},
|
|
{
|
|
"name": "PGID",
|
|
"example": "1000",
|
|
"required": true,
|
|
"sensitive": false,
|
|
"source": "linuxserver-compose"
|
|
},
|
|
{
|
|
"name": "TZ",
|
|
"example": "Etc/UTC",
|
|
"required": true,
|
|
"sensitive": false,
|
|
"source": "linuxserver-compose"
|
|
}
|
|
],
|
|
"volumes": [
|
|
{
|
|
"id": "volume-0",
|
|
"container_path": "/config",
|
|
"compose_source_example": "/path/to/jellyfin/library",
|
|
"read_only": false,
|
|
"required": true,
|
|
"installation_choice": [
|
|
"managed-volume",
|
|
"host-bind"
|
|
],
|
|
"default": "managed-volume",
|
|
"managed_volume": {
|
|
"backup": true,
|
|
"default_size_gb": 16
|
|
}
|
|
},
|
|
{
|
|
"id": "volume-1",
|
|
"container_path": "/data/tvshows",
|
|
"compose_source_example": "/path/to/tvseries",
|
|
"read_only": false,
|
|
"required": true,
|
|
"installation_choice": [
|
|
"managed-volume",
|
|
"host-bind"
|
|
],
|
|
"default": "managed-volume",
|
|
"managed_volume": {
|
|
"backup": true,
|
|
"default_size_gb": 8
|
|
}
|
|
},
|
|
{
|
|
"id": "volume-2",
|
|
"container_path": "/data/movies",
|
|
"compose_source_example": "/path/to/movies",
|
|
"read_only": false,
|
|
"required": true,
|
|
"installation_choice": [
|
|
"managed-volume",
|
|
"host-bind"
|
|
],
|
|
"default": "managed-volume",
|
|
"managed_volume": {
|
|
"backup": true,
|
|
"default_size_gb": 8
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|