How to Install Jellyfin on NAS for Private Streaming
You've seen how straightforward it is to set up Plex on your NAS, you might want to explore its powerful open-source alternative, Jellyfin—a media server that offers unparalleled data control without any subscription fees.In this guide, we’ll not only explore the key advantages of Jellyfin but also provide a crystal-clear, step-by-step walkthrough for installing it on your UGREEN NAS.
Dig deeper: Plex vs. Jellyfin for Home NAS.
Simple App vs. Advanced Docker
There are two straightforward methods to install Jellyfin on your UGREEN NAS. For most users, especially those new to media servers, we recommend starting with the Container App from our app store—it’s designed for simplicity and quick setup. If you’re an advanced user who needs greater flexibility, custom configurations, or access to the latest features, the Docker method gives you full control. We’ll provide complete, step-by-step guides for both approaches below.
Method 1: Simple App Installation (Recommended for Beginners)
Here’s the straightforward way to install Jellyfin directly from our App Center:
- Install Jellyfin: Open the App Center, find the Jellyfin application, and click “Install”.
- Select Storage: Choose the storage volume where you want to install Jellyfin and click “Next” to continue.
- Set Media Path: Configure the resource access path. Jellyfin will scan this location for your media files and automatically fetch movie posters and metadata.
- Set Plugin Path (Optional): Configure the plugin path if you plan to use custom plugins, then click “Install” to proceed.
Initial Setup for Jellyfin
When you open Jellyfin for the first time, you’ll need to complete a quick setup wizard:
- Set Display Language: Choose your preferred language (e.g., “English”) and click “Next”.

- Create Admin Account: Set up a username and password for your administrator account, then click “Next”.
- Skip Media Library Setup: You can skip adding media libraries during this initial setup. Just click “Next” to continue.
- Set Preferred Language: Configure your preferred metadata language (this determines how Jellyfin fetches movie/TV show information).
- Configure Remote Access: Keep the default settings as shown (this ensures optimal functionality) and click “Next”.
- Finish Setup: Click “Finish” to complete the initial configuration.
You can now log in to your Jellyfin server using the administrator account you just created.
Adding Your Media Library
After logging in, follow these steps to add your media library:
- On the Jellyfin main interface, click the “Management Menu” button in the top-left corner. In the expanded side panel, click “Dashboard” to enter the page.
- In the Dashboard, navigate to Libraries > Media Libraries and click “Add Media Library”.
- Choose the appropriate content type (such as “Movies” or “TV Shows”) for your media collection.
Method One: Advanced Docker (Flexible Configuration and Management)
For users who need to deploy and manage multiple containers quickly, we recommend using Docker Compose. This method allows you to orchestrate your entire multi-container application from a single, unified configuration file.
{{UGPRODUCT}}
Configure the Docker Compose File
open the Docker application, click on [Project] > [Create] to initiate the project creation wizard. When creating a project, you need to provide a Docker Compose configuration file:
services:
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
restart: always
devices:
- /dev/dri:/dev/dri # Integrated graphics
environment:
PUID: 0
PGID: 0
volumes:
- ./config:/config
- ./cache:/cache
- /volume2/video:/video2 #Library location
ports:
- 9096:8096/TCP
network_mode: "bridge"
Parameters Explanation
- image: nyanmisaka/jellyfin:latest specifies the latest version of the Jellyfin server image.
- container_name: Sets a specified name for the container jellyfin for easy management.
- restart: always means that the container always restarts, automatically if it stops unexpectedly.
- devices: /dev/dri:/dev/drimounts the host’s /dev/dri device into the container for hardware acceleration, such as video transcoding.
environment:
Sets environment variables to configure services within the container.
- PUID: 0:Sets the user ID inside the container, 0means running with root privileges.
- PGID: 0:Sets the group ID inside the container, 0means running with the root group.
volumes:
- Feature: Mount local folder paths to the container to ensure data persistence.
- ./config:./ represents the directory where the current Docker Compose file is located. The config folder in this directory is mounted to the /config directory inside the container, which is used to store Jellyfin’s configuration files. This ensures that configuration data is not lost even if the container is restarted or recreated.
- ./cache:The cache folder in the current directory is mounted to the /cache directory inside the container, which is used to store Jellyfin’s cache.
- /volume2/video:/video2:The /volume2/video folder on the NAS is mounted to the /video2 directory inside the container, serving as the source directory for the library. Note that the path before the colon is the path on the NAS, and the path after the colon is the path inside the Docker, which is the path you need to enter during Jellyfin configuration. You can replace /volume2/video with other folder paths on the NAS according to your actual needs.
ports:
- 8096:8096/TCPmaps the container’s 8096 port (TCP protocol) to the 9096 port on the UGREEN NAS. This is used for the Jellyfin web management interface for library management and playback operations.
network_mode:
- bridge:Sets the container’s network mode to bridge mode.
- Feature: Bridge mode allows the container to share the network with the host and be accessible via the host’s IP. That is, the container provides services through the mapped ports and can communicate with other devices on the same network.
Initial Jellyfin Configuration
Now that Jellyfin is running, it’s time to set it up.
- Open a new web browser tab and navigate to
http://[YOUR-NAS-IP]:9096, replacing[YOUR-NAS-IP]with the IP address of your UGREEN NAS. - The Jellyfin setup wizard will appear. Follow the on-screen prompts:
- Choose your preferred language.
- Create an administrator account with a secure username and password.
- Add your media libraries. Click Add Media Library, select the content type (e.g., Movies), and for the folder, add the path from inside the container, which is
/videofrom our setup. - Select your preferred language and country for fetching metadata.
- Configure remote access settings if you plan to stream from outside your home network.
- Once the wizard is complete, sign in with your new credentials to confirm everything is working correctly.
Enabling Hardware Transcoding
To get the best performance, especially with 4K content, you’ll want to enable hardware transcoding. This uses your NAS’s storage integrated Intel GPU to handle video conversion efficiently.

Enable Hardware Transcoding on DXP Series Devices
Enable Hardware Acceleration Transcoding (Intel QuickSync - QSV), In the console’s left menu, click [Playback] > [Transcoding].
- Hardware Acceleration: Select Intel QuickSync (QSV).
- QSV Device: Enter the device path /dev/dri/renderD128.
- Enable Hardware Decoding: Check all supported codec formats.
After completing the settings, scroll to the bottom of the page and click “Save”.
Enable Hardware Transcoding on DH Series Devices
DH series devices are based on the ARM architecture and come with a built-in VPU (Video Processing Unit) to support video hardware acceleration. When using Jellyfin to play videos, you can enable hardware transcoding by utilizing the VPU to improve transcoding performance.
- In the left-hand menu of the dashboard, click [Playback] > [Transcoding].
- For Hardware Acceleration, select Rockchip MPP (RKMPP).
- Check all supported encoding formats.
- After configuring, click the “Save” button at the bottom of the page.
Troubleshooting Common Jellyfin Setup Issues
If you run into trouble, here are a few common fixes:
- Media Not Showing Up? This is usually a folder mapping issue. Go back to your Docker container settings and double-check the “Volume Settings.” The “Host Path” for your media must exactly match the location of your folders on the NAS.
- Login Failing? Double-check your username and password. If you’ve forgotten them, you may need to delete the container and the config folder you created and start over.
- Transcoding Not Working? First, confirm your UGREEN NAS has an Intel processor that supports Quick Sync. Then, go back to the Jellyfin Dashboard and verify that “Intel QuickSync (QSV)” is selected as the hardware acceleration method.
- Can’t Access the Jellyfin Web Page? This is likely a port conflict. Check if another service on your NAS is already using port 9096. You can easily change this in your Docker container’s “Port Settings” by changing the “Host Port” to something else, like 8097.