Today, we will show you how to Install and configure Jellyfin as a Raspberry Pi media server. We will be using a docker composed stack in Portainer to deploy the Jellyfin server.
Difficulty=Easy
Table of Contents
Prerequisites:
Recommended USB Hard Drives For Jellyfin On A Raspberry Pi:
What is Jellyfin?.

Jellyfin enables you to collect, manage, and stream your media. Run the Jellyfin server on your system and gain access to the leading free-software entertainment system, bells and whistles included.
Jellyfin is a fork of Emby. It has remained true to its open-source roots and is free forever. It also respects your privacy and is self-hosted.
Install Jellyfin Docker on Raspberry Pi 4
Step 1 – Create the folders needed for the Jellyfin Docker container.
Open up a terminal or Putty application (See our guide How to install Putty on Windows).
Connect to your Raspberry Pi via SSH (secure shell).
ssh -p PORT USERNAME@YOURRASPBERRYPIIP
Navigate to your “Appdata” folder or the place where you store all your containers persistent configuration data.
cd /srv/YOURUSBDISKUUID/Appdata
Create a folder called “jellyfin“.
mkdir jellyfin
Navigate into the “jellyfin” folder.
cd jellyfin
Create the “config” folder where all the Plex configuration data will reside.
mkdir config
Now navigate into the “config” folder.
cd config
From here you will need to get your “absolute path” for your “config” folder.
pwd
Copy the output of the pwd command and paste it into a text file. You will need this in Step 2.
You now need to locate your Media folders. Using the above steps. Navigate into each folder using the terminal one at a time. Movies, TV Series, Music, and Photos are supported.
Once you are in each folder, as we have done above. Use the “pwd” command to get the absolute path of each folder and copy and paste the output paths into the same text file as above so you can add them to your stack in Step 2.
Step 2 – Create & deploy the Docker Compose Stack
Navigate to your Portainer dashboard and log in.
http://YOURRASPBERRYPIIP:9000

From the left-hand menu click on “Stacks“.

Now in the Stacks dashboard click on “Add a stack“.

In the “Name” field enter “jellyfin“
Now Copy and paste the following docker-compose data into the “Web editor” field. Be sure to change all the file paths to the absolute paths you saved to a text file in step 1.
Jellyfin Docker Compose Stack
--- version: "2.1" services: jellyfin: image: lscr.io/linuxserver/jellyfin container_name: jellyfin environment: - PUID=1001 - PGID=100 - TZ=Europe/London volumes: - /path/to/Appdata/jellyfin/config:/config - /path/to/TVShows:/data/tvshows - /path/to/Movies:/data/movies - /path/to/Music:/data/music - /opt/vc/lib:/opt/vc/lib #optional ports: - 8096:8096 - 8920:8920 #optional - 7359:7359/udp #optional - 1900:1900/udp #optional devices: - /dev/vchiq:/dev/vchiq #optional - /dev/video10:/dev/video10 #optional - /dev/video11:/dev/video11 #optional - /dev/video12:/dev/video12 #optional restart: unless-stopped
You will also need to change the “TZ“, “PUID” and “PGID” fields to match your setup.
You can find the “PUID” and “PGID” by using the “id” command in the terminal and copying the returned values.
id $user
You can also add additional media folders that you would like to mount and use in Jellyfin. By adding more paths to the “volumes” section.
Once you have completed all the fields in the stack. You are ready to click “Deploy the stack“.

Wait for the deployment to complete.
Now you can navigate to “Containers” in the left menu

You should now see your “Jellyfin” container in the list.

Configure The Jellyfin Media Server
Give the container a few minutes to fully startup then you can connect to the Jellyfin dashboard GUI.
http://<your-pi-ip>:8096
You should now see the Jellyfin “Welcome” screen.

Select your preferred display language and click “Next“.
In the next screen give your admin account a “username” and “password“. Also, confirm the password a second time.

When you are done click on the “Next” button.
In the next screen “Setup your media libraries” add your media folders. You will need to do the following for each media source you have chosen to bind in your Stack deployment.
Click on the Plus icon to “Add Media Library“.

Select the “Content type:”

Give your library folder a “Display name“.

Now we need to add the media folder. Under “Folders” click on the “round plus icon“.
In the next screen “Select Path“, select your media folder from the “Folder” dropdown list.

When you are done selecting your media click on “OK“.

Continue down the list selecting your preferred languages and countries.
Also, change any other settings that you think is appropriate. We recommend leaving everything set to the defaults values other than the language settings.
Now Scroll to the bottom and click on “OK“.

Repeat this process for any additional folders you would like to add. This could be TV Shows and Music.

Once you have completed adding your Libraries you can click the “Next” button.
Under “Preferred Metadata Language” select your preferred language for the metadata and click on “Next“.

On the next screen “Configure Remote Access” we recommend unchecking both remote boxes. Then click “Next“.

Note: If you would like to access your Jellyfin server from outside your network (remotely) then we recommend using a VPN. If you would like to learn how to set up a Wireguard VPN please follow our episode 28 guide which will walk you through the process step by step.
In the “You’re Done!” screen click on the “Finish” button to complete the Jellyfin setup.

You should now see the “Please Sign In” screen. You can log in with the username and password you set in the install wizard. Just click “Sign In“.

Congratulations you should have a working Jellyfin server and be able to stream your media to all your devices. Enjoy!.
If you have any questions let us know in the comments below or on our YouTube Channel.
We need your support.
We hope you enjoyed this episode and that it was helpful and you got benefit out of it.
If you did, please consider supporting our channel by Subscribing to our YouTube channel, and liking and sharing our content.
You can also make a donation via Paypal or become a Patreon if you wish to do so.
You can also follow us on Facebook or Twitter.
If you have any questions or any requests please ask in the comments below or on YouTube.
Thank you so much for responding to users requests and creating this video
Can you please explain how to setup the nginx remote connection to the JellyFin server?
There is no need to add it to the video, but a text explanation here will be very helpful.
Thank you very much for all your efforts
What about hw acceleration for transcoding?