Home Software How to Install Jellyfin on TrueNAS SCALE: Step-by-Step Guide

How to Install Jellyfin on TrueNAS SCALE: Step-by-Step Guide

How to Install Jellyfin on TrueNAS SCALE: Step-by-Step Guide

Installing Jellyfin on TrueNAS SCALE is the fastest way to turn your NAS into a dedicated media server. This guide walks you through the entire process: preparing datasets, installing the app through the built-in Apps system, and completing the first-run setup. You’ll have Jellyfin streaming your media collection in under 30 minutes.

This guide applies to TrueNAS SCALE 24.10+. Jellyfin is not supported on TrueNAS CORE (FreeBSD-based) — if you’re still on CORE, consider migrating to SCALE or running Jellyfin in a separate Linux VM.

Prerequisites for Installing Jellyfin on TrueNAS SCALE

Before you start, confirm your system meets these requirements. Missing any one of them will cause the install to fail or run poorly.

  • TrueNAS SCALE 24.10 or newer — Jellyfin is only available via the built-in Apps system, which is exclusive to SCALE.
  • A dedicated SSD-backed apps pool — The IX Applications system and Jellyfin’s config/cache datasets should live on an SSD pool, not your bulk HDD storage pool.
  • At least 4GB of RAM allocated to the apps system — Jellyfin itself is lightweight (512MB-2GB), but TrueNAS SCALE’s Kubernetes backend reserves 4GB minimum.
  • Media datasets already created — You’ll mount these read-only into the Jellyfin container. Create them under your main storage pool (e.g., /mnt/tank/media/movies).
  • Port 8096 available — Jellyfin uses TCP 8096 by default. Ensure no other service on your NAS uses this port.

💾 Expert Note:

If you’re running TrueNAS SCALE on a single pool with both apps and data on HDDs, Jellyfin’s metadata database will slow down significantly during library scans. An SSD-backed apps pool (even a small 120GB SATA SSD) eliminates this bottleneck. For a deeper look at CPU choices for this workload, see our Best CPU for TrueNAS in 2026 guide.

Step 1: Create Datasets for Jellyfin Config and Cache

Jellyfin needs two persistent datasets: one for configuration files (user settings, library metadata) and one for transcoding cache. Creating them before installation prevents data loss during app updates or reinstallation.

1

Navigate to Datasets

In the TrueNAS web UI, go to Storage > Datasets. Select your apps pool (the SSD pool you set up for IX Applications).

2

Create the config dataset

Click Add Dataset. Name it jellyfin-config. Set the Dataset Type to Generic. Leave all other options at defaults.

3

Create the cache dataset

Add a second dataset named jellyfin-cache, also type Generic. This stores transcoded chunks and thumbnails.

4

Verify permissions

Both datasets should be owned by the apps user (UID 568) with 755 permissions. If not, edit the ACL on each dataset to grant Read/Write access to the apps user.

Tip:

Using separate datasets for config and cache makes it easy to back up your Jellyfin configuration independently of your media files. If you ever need to reinstall the app, you just point it back to the same datasets.

Step 2: Install Jellyfin via TrueNAS Apps

TrueNAS SCALE uses a built-in Kubernetes-based Apps system. Installing Jellyfin is a two-click process once your datasets are ready.

1

Open the Apps page

Go to Apps > Discover Apps. If you haven’t set up the IX Applications pool yet, the system will prompt you to select a pool — choose your SSD-backed pool.

2

Find Jellyfin

Search for “jellyfin” in the Discover Apps catalog. Click the Jellyfin app card, then click Install.

3

Configure storage mounts

In the install wizard, scroll to the Storage section. Add two host path volumes:

  • Config storage: Mount /mnt/your-ssd-pool/jellyfin-config to /config
  • Cache storage: Mount /mnt/your-ssd-pool/jellyfin-cache to /cache

Then add a host path for each media folder (e.g., /mnt/tank/media/movies mounted to /media/movies). Set all media mounts to Read Only.

4

Set the port

Under Networking, ensure the NodePort for WebUI is set to 8096 (default). Leave other ports at defaults unless you need hardware transcoding (requires GPU passthrough setup).

5

Install and wait

Click Install. Wait 1-3 minutes for the container to pull and start. You’ll see the app status change to “Running” in the Installed Applications list.

💾
Key RuleMount your media datasets as Read Only in the Jellyfin container. This prevents accidental deletion or modification of your media files through the Jellyfin interface.

Step 3: First-Run Setup and Accessing Jellyfin

Once the app is running, complete the initial configuration to connect your media libraries.

1

Access the web interface

Open a browser and go to http://[your-truenas-ip]:8096. You’ll see the Jellyfin welcome page.

2

Set up your admin account

Enter a username and password for the local administrator account. This is your main Jellyfin login — store this in a password manager.

3

Add media libraries

Click Add Media Library. Select a content type (Movies, TV Shows, Music, etc.). Under Folders, click + and navigate to the mount point you set earlier (e.g., /media/movies). Save the library.

4

Let Jellyfin scan

The library scan starts automatically. For a large collection (10TB+), the first scan may take 30-60 minutes. You can close the browser and check back later.

Good to Know:

Jellyfin’s default transcoding directory uses the /cache mount you configured. If you have limited SSD space, monitor the cache dataset — it can grow to 10-20GB during heavy transcoding sessions. Setting a maximum cache size in Jellyfin’s Dashboard > Playback settings prevents it from filling your pool.

Why an SSD Apps Pool Matters for Jellyfin

TrueNAS SCALE’s Apps system runs on Kubernetes, which stores pod manifests, container images, and persistent volume data on the IX Applications pool. If this pool lives on HDDs, every Jellyfin metadata query (library listing, search, thumbnail generation) incurs HDD latency. The difference is noticeable:

Pool Type Library Scan Time (10TB media) UI Responsiveness
HDD pool (7200 RPM) 45-90 minutes Sluggish — 2-3 second delays on page loads
SSD pool (SATA or NVMe) 10-20 minutes Snappy — sub-second responses

If you don’t have a spare SSD, a single 120GB SATA SSD ($15-25 used) is sufficient for the apps pool plus Jellyfin’s config and cache. This is one of the cheapest performance upgrades you can make for your TrueNAS build. For more power-saving tips, check out How to Reduce Your NAS’s Power Consumption.

Hardware Transcoding Considerations

Jellyfin supports GPU-accelerated transcoding (Intel Quick Sync, NVIDIA NVENC, AMD VCE). On TrueNAS SCALE, passing a GPU to a container requires additional configuration:

  • Intel iGPU: Works out of the box with Intel CPUs that have Quick Sync (8th gen or newer). In the Jellyfin install wizard, under Resources > GPU Configuration, check Enable Intel GPU.
  • NVIDIA GPU: Requires installing the NVIDIA driver via System Settings > Shell (apt update && apt install nvidia-driver), then selecting the GPU in the app install wizard.
  • No GPU: Jellyfin falls back to software transcoding. A modern CPU (Intel 12th gen or AMD Ryzen 5000+) can handle one or two 1080p transcodes, but 4K transcoding will struggle.

Warning:

GPU passthrough on TrueNAS SCALE can break after system updates. Always test transcoding after a SCALE update and re-apply GPU configuration if needed. Keep a backup of your Jellyfin config dataset before major updates.

Common Issues During Jellyfin TrueNAS App Installation

Even with correct setup, a few hiccups are common. Here’s how to fix them quickly.

Issue

  • App stays in “Deploying” state
  • Media folders appear empty in Jellyfin
  • Cannot access port 8096

Fix

  • Check Apps > Settings > Advanced Settings > Update Container Images. Pull fresh images and restart.
  • Verify the host path mount in the app settings matches the actual dataset path. Also check ACL permissions for the apps user.
  • Ensure no other service uses port 8096. Run sudo netstat -tulpn | grep 8096 in the TrueNAS shell to check.

If Jellyfin still won’t start, check the pod logs: go to Apps > Installed Applications, click the Jellyfin app, then Logs. Common errors include missing /config directory (dataset not mounted correctly) or insufficient permissions on media mounts.

Bottom Line: Installing Jellyfin on TrueNAS SCALE

Installing Jellyfin on TrueNAS SCALE is straightforward once you prepare your datasets and apps pool in advance. The process takes about 20 minutes from start to your first library scan. For most homelab users, this is the best way to run a media server alongside your NAS — you avoid running a separate VM or Docker host, and Jellyfin integrates with TrueNAS’s ZFS snapshots for backup.

If you’re comparing TrueNAS SCALE with other NAS operating systems, our TrueNAS vs Unraid: Which Should You Run in 2026? guide covers the trade-offs for media server use cases. And if you’re planning storage capacity for your media library, see How Much Storage Do You Need for a NAS?

Recommendation: Use an SSD-backed apps pool, create separate config and cache datasets, and mount your media folders as read-only. This setup gives you a stable, fast Jellyfin instance that survives app updates and system reboots. Remember that RAID is not a backup — always maintain separate backups of your critical data.

Frequently Asked Questions

Does Jellyfin work on TrueNAS CORE?

No, Jellyfin does not run natively on TrueNAS CORE. CORE is based on FreeBSD and lacks the Kubernetes-based Apps system that TrueNAS SCALE uses. If you’re on CORE, you have two options: migrate to TrueNAS SCALE (which uses the same ZFS storage backend), or run Jellyfin in a separate Linux VM or Docker host alongside your CORE system. The VM approach adds overhead and complexity, so migration to SCALE is generally recommended for media server use.

What datasets does Jellyfin need on TrueNAS?

Jellyfin requires two persistent datasets: one for configuration files (settings, user data, metadata database) and one for cache (transcoding chunks, thumbnails, subtitle cache). Both should be created on your SSD-backed apps pool for best performance. The config dataset typically needs 5-20GB depending on library size (metadata for 10,000 movies can take 15-20GB). The cache dataset can grow to 10-30GB during active transcoding. You also need at least one read-only mount for your media files, which can live on your HDD storage pool.

Should the TrueNAS apps pool be SSD or HDD?

Always use an SSD for the TrueNAS apps pool. The IX Applications system runs Kubernetes, which constantly reads and writes pod manifests, container images, and persistent volume data. On HDDs, this creates noticeable latency — Jellyfin’s library page loads can take 3-5 seconds instead of sub-second responses. A single 120GB SATA SSD ($15-25 used) is sufficient for the apps pool plus Jellyfin’s config and cache. If you have a spare NVMe drive, that’s even better, but SATA SSDs are more than adequate for this workload.

What port does Jellyfin use by default?

Jellyfin uses TCP port 8096 for its web interface by default. This is the port you access in your browser (http://your-nas-ip:8096). The install wizard on TrueNAS SCALE sets this as the NodePort automatically. If you need to change it (because another service uses 8096), you can modify the NodePort setting during installation or edit it afterward in the app’s configuration. Jellyfin also uses port 8920 for HTTPS if you enable SSL, but this is optional for local network use.

📋 Sources & Last Verified:

Last verified: July 09, 2026. Specifications cross-checked against manufacturer documentation where available.

🛡 Shop Recommended Hardware

Prices and stock verified regularly by our affiliate partners. As an affiliate, HomeLabCost may earn a commission on qualifying purchases at no extra cost to you.

Browse Hardware Picks →

homelabcost

HomeLabCost editor covering NAS builds, hardware selection, and homelab server setup guides.

Leave a Reply

Your email address will not be published. Required fields are marked *