How to install Jellyfin on TrueNAS SCALE
Updated ยท 5 min read
TrueNAS keeps your files safe; Jellyfin makes them watchable. To install Jellyfin on TrueNAS SCALE, now sold as TrueNAS Community Edition, you use the built-in apps catalog. This guide covers the datasets, the permissions, and the two settings people miss.
Before you start
Jellyfin's documentation covers TrueNAS SCALE 24.10 (Electric Eel) and later, where apps run on Docker. TrueNAS CORE, the older FreeBSD edition, isn't supported. If your system still runs an older SCALE release, update it before installing apps.
Plan three places for Jellyfin's own data, separate from your media: config (its database and settings), cache, and transcodes (temporary files while video converts). Put config and cache on an SSD pool if you have one. Library pages load from the database, so a fast pool makes Jellyfin feel quicker. The app can create these datasets for you (ixVolume), or you can create your own under, say, apps/jellyfin and choose Host Path. Your own datasets are easier to snapshot and back up, and they survive deleting the app.
Permissions: the apps user
The Jellyfin app's container runs as user and group 568, the built-in apps user. This is only who the container runs as on the NAS; it has nothing to do with Jellyfin's own sign-in. The apps user needs:
- Full control of Jellyfin's config, cache and transcodes datasets. ixVolume datasets get this automatically; for your own, set it when you create them or in the dataset's permissions.
- Read access to your media datasets. Open Datasets, select the media dataset, and edit its permissions to add the
appsuser (or group) with read access. Read is enough to play everything and means Jellyfin can't alter your files.
Most "my library is empty" reports on TrueNAS come down to this step. If you share the same media over SMB, add the apps user to the existing ACL rather than replacing it, so your Windows and Mac access keeps working.
Install the app, step by step
- Find Jellyfin in the catalog. Open Apps, click Discover Apps, search for Jellyfin and click Install.
- Keep the user at 568. In the user and group settings, leave user and group at 568 unless you've prepared another user with the same permissions.
- Set the web port. The app's WebUI port defaults to 30013. You can keep it, or change it to Jellyfin's usual 8096 so apps and guides match. Tick Host Network only if you need DLNA.
- Choose storage for config, cache and transcodes. Pick ixVolume to let TrueNAS create them, or Host Path to use the datasets you made. Avoid tmpfs for transcodes: converted video can outgrow memory.
- Add your media. Under additional storage, click Add, choose Host Path, pick the media dataset, and give it a path inside the container such as
/media/movies. Mount media as a host path rather than an SMB share: Jellyfin's documentation notes its real-time scanning only works with host paths. - Turn on graphics if you have them. In the resources section, tick the GPU passthrough option for an Intel or AMD chip (see below for NVIDIA).
- Install and open it. Click Install, wait for the app to show as running, then open
http://<TrueNAS address>:30013(or your chosen port). Create the administrator with a strong password and add libraries using the container paths.
Tip: the TrueNAS web interface itself uses ports 80 and 443. Don't give Jellyfin either of them, and keep any reverse proxy you add on other host ports too.
Graphics for faster video
For Intel or AMD graphics, the passthrough checkbox in the app's resources is all TrueNAS needs. Then, in Jellyfin's Dashboard, choose VAAPI or Intel QuickSync (QSV) as the hardware acceleration and tick only the formats your chip decodes.
NVIDIA cards need the driver first. Jellyfin's TrueNAS instructions say to install it from the apps settings, using the Install NVIDIA Drivers option (under Apps, Configure, Settings), then give the app the card in its resources. Afterwards choose NVIDIA NVENC in Jellyfin. If the option isn't there, check your TrueNAS version's documentation, because how NVIDIA drivers are delivered has changed between releases. Jellyfin hardware transcoding covers which formats to tick for each chip.
Careful: don't forward the Jellyfin port to the internet. It's plain HTTP, so passwords and video would be readable on the way, and your NAS would answer anyone who scans for it. Use HTTPS or a private network, as Jellyfin remote access explains; Jellyfin behind CGNAT also helps if your provider blocks incoming connections.
Questions
What port does Jellyfin use on TrueNAS SCALE?
The catalog app's WebUI port defaults to 30013. You can change it to 8096, Jellyfin's usual port, when you install or edit the app.
Why can't Jellyfin see my media on TrueNAS?
The app runs as the apps user, 568. Give that user read access to your media dataset, and mount the media as a Host Path in the app's storage settings.
Does Jellyfin work on TrueNAS CORE?
No. Jellyfin's documentation supports TrueNAS SCALE 24.10 and later, now called TrueNAS Community Edition. CORE isn't supported.
The one-click way: Reelhost
On TrueNAS, install Jellyfin from the catalog as above, then Reelhost's Docker edition as a Custom App with image registry.reelhost.app/reelhost and tag latest. Mount a dataset at /data, Jellyfin's config dataset at /jellyfin-config, and your media at the same path as in Jellyfin, then set JELLYFIN_URL to Jellyfin's address and port. The check-up and previews are free; applying fixes needs Core, and watching away from home needs Complete or Yearly.
The check-up is free and changes nothing. Every fix is previewed, backed up and reversible.