Skip to content

Kodi on the TV plugged into the server - #74

Open
eschultz wants to merge 6 commits into
stagingfrom
feature/kodi-tv-app
Open

eschultz wants to merge 6 commits into
stagingfrom
feature/kodi-tv-app

Conversation

@eschultz

@eschultz eschultz commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

What changed

  • kodi.json: Kodi as a custom app that draws on the TV plugged into the server, straight through the server's own Intel, AMD or NVIDIA graphics card. It runs eshtek/kodi:21.2-1 unprivileged on the host network (restart_policy: unless-stopped), with the six default media folders mounted read-only at /media/<folder> and its config in ApplicationsPerformance/kodi/config. The platform fills in $DISPLAY_DEVICES() (the display card's DRM and render nodes, its HDMI audio's ALSA nodes, /dev/input) $DISPLAY_GPU_PCI() (the card's PCI slot), $DISPLAY_PORT() (the port Kodi shows on, e.g. HDMI-A:1, passed as HEXOS_DISPLAY_PORT) and $DISPLAY_GPU_CONFIG() in resources.gpus (an NVIDIA card by UUID, so TrueNAS runs the container with NVIDIA's runtime; no GPU for Intel and AMD). The limits are the custom app's defaults, 2 CPUs and 4096 MB. The one question is the web remote's password, generated by default; the user name is kodi. The portal opens Kodi's web remote on 8080.
  • The DISPLAY requirement: a TV or monitor plugged into the server. _lib/contract.ts accepts it and the four new macros.
  • README row, Kodi's blue logo mark as the icon (without the wordmark), and a screenshot of Kodi's home screen from a lab box.

bun run validate: 52 install scripts, 0 errors, 0 warnings. The script also parses with the platform's appsInstallScriptSchema. It installed, moved between ports and cards, and uninstalled through HexOS on two lab boxes (TrueNAS 26.0 BETA.3 with an AMD iGPU and an Arc B580; TrueNAS 25.10.7 with an RTX 3080) in eshtek/hexos-platform#2135's E2E runs, with the image tag pointed at a build on each box.

Merge after eshtek/hexos-platform#2135, and keep it off catalog prod until a platform prod release carries #2135 and its workflow has pushed eshtek/kodi:21.2-1. A box on an older platform leaves the macros as text and TrueNAS refuses the install ("devices: Input should be a valid list"), so nothing half-configured can land, but the app would show and fail.

TrueNAS's custom app defaults restart_policy to "no", so without unless-stopped Kodi stayed stopped after every reboot, and after the supervisor's deliberate exit when a remote is plugged in. Reboots of the NVIDIA lab box showed it. The field has been in TrueNAS's custom app since its first version (September 2024).

The icon's paths come from the XBMC Foundation's logo on Wikimedia Commons (File:Kodi-top-bottom.svg), which is public domain there and marked as a trademark.

…ver through its own Intel or AMD graphics card
TrueNAS's custom app defaults restart_policy to "no", so Kodi stayed
stopped after every reboot, and after the supervisor's deliberate exit when
a remote or keyboard is plugged in. unless-stopped brings it back in both
cases and still respects an app the owner stopped.
An NVIDIA card reaches the container through NVIDIA's runtime rather than
device entries: resources.gpus takes $DISPLAY_GPU_CONFIG(), which the
platform expands to the card by UUID (TrueNAS then sets
NVIDIA_VISIBLE_DEVICES and NVIDIA_DRIVER_CAPABILITIES=all), or to no GPU for
Intel and AMD. The limits are the custom app's defaults.
Taken with Kodi's own screenshot action from the image in
eshtek/hexos-platform#2135, which drops the "from debian" line and installs
the fonts Estuary uses.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant