"en_US":"Official Jellyfin image with optional VA-API or NVIDIA acceleration."
},
"description":{
"en_US":"Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps. Jellyfin is descended from Emby's 3.5.2 release and ported to the .NET Core framework to enable full cross-platform support. There are no strings attached, no premium licenses or features, and no hidden agendas: just a team who want to build something better and work together to achieve it."
"native_lxc_behavior":"ProxMenux merges the same values into lxc.environment.runtime while the CT is stopped.",
"reason":"PVE imports image Env automatically; Compose values still need to override it.",
"behavioral_impact":"None expected.",
"validation":"pending-per-application"
},
{
"id":"stop-grace-period",
"upstream_behavior":"Docker waits for Compose stop_grace_period before forcing termination.",
"native_lxc_behavior":"ProxMenux records the same timeout for its pct shutdown lifecycle operations.",
"reason":"Proxmox has no equivalent per-CT persistent restart-policy field; startup.down is not a shutdown timeout.",
"behavioral_impact":"Normal Proxmox node shutdown remains governed by the node-wide shutdown policy.",
"validation":"not-requested-by-compose"
},
{
"id":"compose-shm-size",
"upstream_behavior":"Compose sets the size of the container /dev/shm tmpfs.",
"native_lxc_behavior":"ProxMenux mounts a native LXC tmpfs at /dev/shm with the same requested capacity.",
"reason":"The OCI image runs directly as an LXC and therefore needs the equivalent Proxmox mount entry.",
"behavioral_impact":"None expected.",
"validation":"not-requested-by-compose"
},
{
"id":"compose-command",
"upstream_behavior":"Compose replaces the image Cmd while retaining its Entrypoint.",
"native_lxc_behavior":"ProxMenux reads the official OCI Entrypoint and combines it with the Compose command as the native LXC init command.",
"reason":"Proxmox stores the effective OCI process as one entrypoint string.",
"behavioral_impact":"None expected.",
"validation":"not-requested-by-compose"
},
{
"id":"compose-process-runtime",
"upstream_behavior":"Compose can replace Entrypoint, User and WorkingDir and request an init process or interactive terminal.",
"native_lxc_behavior":"ProxMenux applies the process overrides through native LXC init directives; lxc-init provides PID 1 supervision and the CT console provides terminal access.",
"reason":"The OCI process must start with the same identity, command and working directory without Docker.",
"behavioral_impact":"Compose stdin_open and tty become access through the Proxmox LXC console.",
"validation":"not-requested-by-compose"
},
{
"id":"compose-healthcheck",
"upstream_behavior":"Docker periodically executes the declared container healthcheck.",
"native_lxc_behavior":"For a single-service LXC, ProxMenux translates HTTP localhost checks into a mandatory first-start service check.",
"reason":"Proxmox has no persistent Docker health state, while the installer still must detect a failed first boot.",
"behavioral_impact":"The check runs during installation rather than continuously after installation.",
"validation":"not-requested-by-compose"
},
{
"id":"compose-cpu-priority",
"upstream_behavior":"Docker cpu_shares sets a relative scheduling weight with 1024 as its neutral value.",
"native_lxc_behavior":"ProxMenux converts the relative weight to Proxmox cpuunits with 100 as its neutral value and lets the user review it.",
"reason":"Both settings express relative CPU priority on different scales.",
"behavioral_impact":"Rounding and Proxmox minimum limits can slightly change very low weights.",
"validation":"not-requested-by-compose"
},
{
"id":"compose-network-identity",
"upstream_behavior":"Compose can set hostname, MAC address, extra hosts and attach a service to Docker networks.",
"native_lxc_behavior":"ProxMenux applies hostname and MAC to net0, writes additional host aliases into the LXC and uses its dedicated bridge connection for single-service networks.",
"reason":"A dedicated LXC has its own network namespace and does not need a Docker bridge per service.",
"behavioral_impact":"host-gateway resolves to the IPv4 address of the selected Proxmox bridge.",
"validation":"not-requested-by-compose"
},
{
"id":"compose-network-mode",
"upstream_behavior":"Docker host mode removes Docker network isolation; bridge and default use a Docker-managed network.",
"native_lxc_behavior":"The OCI process uses the dedicated LXC network namespace directly, so host, bridge and default all listen on the LXC address without Docker NAT.",
"reason":"The LXC is the application host and already has its own address and port namespace.",
"behavioral_impact":"host means the LXC host, never the Proxmox host; this preserves Proxmox network isolation.",
"validation":"not-requested-by-compose"
},
{
"id":"compose-capabilities-and-sysctls",
"upstream_behavior":"Compose can add Linux capabilities and set kernel parameters in the container network namespace.",
"native_lxc_behavior":"ProxMenux validates requested capabilities against the native LXC capability set and writes namespaced network settings as lxc.sysctl directives.",
"reason":"A native OCI-LXC already starts with the namespaced capability set; lxc.cap.keep would incorrectly discard unrelated required capabilities.",
"behavioral_impact":"Host-global capabilities such as SYS_MODULE remain blocked until their host prerequisite is explicitly adapted.",
"validation":"not-requested-by-compose"
},
{
"id":"docker-engine-metadata",
"upstream_behavior":"Compose labels annotate Docker objects and the json-file logging driver rotates Docker-managed logs.",
"native_lxc_behavior":"Labels remain source metadata; Docker json-file settings are not applied because the OCI process runs directly under LXC.",
"reason":"There is no Docker object or Docker json-file log behind a native OCI-LXC application.",
"behavioral_impact":"Docker-only label consumers and Docker log-driver rotation do not exist in the native deployment.",
"validation":"not-requested-by-compose"
},
{
"id":"compose-device-passthrough",
"upstream_behavior":"Compose passes host character devices or requests an NVIDIA runtime GPU.",
"native_lxc_behavior":"ProxMenux converts recognized device declarations to native Proxmox dev resources; NVIDIA profiles also inject compatible host driver libraries read-only.",
"reason":"Native OCI-LXC does not execute Docker device or NVIDIA runtime hooks.",
"behavioral_impact":"Hardware is exposed only after explicit user confirmation and host-path validation.",
"validation":"not-requested-by-compose"
},
{
"id":"compose-host-ipc",
"upstream_behavior":"ipc: host shares the Docker host IPC namespace, commonly to avoid Docker's small default shared-memory allocation.",
"native_lxc_behavior":"The application keeps the LXC IPC namespace and receives a configurable 1 GiB /dev/shm instead of sharing Proxmox host IPC.",
"reason":"Processes in a single native LXC already share one IPC namespace; retaining isolation is safer than exposing host IPC.",
"behavioral_impact":"The application cannot exchange IPC objects with processes on the Proxmox host.",
"validation":"not-requested-by-compose"
}
],
"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)",
"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"
]
}
]
}
],
"post_start_configurations":[
{
"id":"jellyfin-vaapi-hdr-tone-mapping",
"type":"jellyfin-encoding-xml",
"enable_prompt":"Enable VA-API transcoding and HDR10/Dolby Vision to SDR tone mapping",
"enabled_default":true,
"required":true,
"timeout_seconds":120,
"candidate_paths":[
"/config/encoding.xml",
"/config/config/encoding.xml"
],
"settings":{
"HardwareAccelerationType":"vaapi",
"VaapiDevice":{
"device_path_from":"vaapi-render"
},
"EnableDecodingColorDepth10Hevc":"true",
"EnableHardwareEncoding":"true",
"EnableTonemapping":"true",
"EnableVppTonemapping":"false",
"TonemappingAlgorithm":"bt2390",
"TonemappingMode":"auto",
"TonemappingRange":"auto"
},
"lists":{
"HardwareDecodingCodecs":[
"h264",
"hevc",
"vc1"
]
}
}
]
},
{
"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"
}
],
"post_start_configurations":[
{
"id":"jellyfin-nvidia-hdr-tone-mapping",
"type":"jellyfin-encoding-xml",
"enable_prompt":"Enable NVIDIA transcoding and HDR10/Dolby Vision to SDR tone mapping",