
If you’re anything like me, you like collecting physical media. There are a few reasons to this.
- It (usually) has better quality than streaming or downloads.
- It’s always available, even if your internet is down.
- You dont have to pay a subscription fee every month – you own it forever. This also means it can never be taken away.
So, you have all this media (TV series, films, maybe even home videos), but how do you share this?. Sure, you can put the files on your Server and play them on each client device using their built in media player such as Windows Media Player or QuickTime on Mac, but there is a better way.
Jellyfin is a self-hosted app that allows you to import your media and allow users on the same network to access a nice user interface and stream the content. It’s really sleek and works well. You can set up different user accounts, automatically pull information for show metadata and even put your media into custom libraries. In this guide, I’ll show you how to set it up.
This guide is a little more complex as we will have to deal with passing through volumes from the host system into the Docker container. It can be done, but may require some tinkering to get it to work. We shall do it together 🙂
Grabbing the image from Jellyfin
The first thing to do is head over to this Docker repo and copy and paste the Compose file.

This is where we will begin. Paste this into a text editor like Notepad++ or CotEditor is a good shout if you are sensible and are on a Mac or other Unix-based machine. Make sure you set the file format to ‘YAML”, so the editor knows the correct syntax. Remember, YAML uses indentations and even if a line is off by one space, the file will not work properly.
Of course, I will provide my own YAML file to copy and paste and download – you’ll just need to change a few things and map your own media library in.
Here’s mine.
---
# https://hub.docker.com/r/linuxserver/jellyfin
services:
jellyfin:
image: lscr.io/linuxserver/jellyfin:latest
container_name: jellyfin
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
volumes:
- /<SHARED_FOLDER_PATH>/DockerComposeData/jellyfin/config:/config
- /<SHARED_FOLDER_PATH>/Media:/data/media # <---- This is the path to your media shared folder.
ports:
- 8096:8096 # <---- Port to access web interface
- 8920:8920 #optional
- 7359:7359/udp #optional
- 1900:1900/udp #optional
restart: unless-stopped
Making a few changes to YAML config
Now with that open in OMV Compose plugin window or a text editor, let’s make a few changes so that we can import your media. Head over to:
Storage > Shared Folders
Now, I have my media on a separate drive, which is in turn, on another shared folder. Having your media on a shared folder is highly recommended. If you don’t have a media folder, create one now. If you need a quick reminder, my guide is here.
We need to find the ‘absolute path’ of your shared media folder. An absolute path is a unique way that the system references the data. The absolute path means that there is no ambiguity when the system attempts to access the data on the drive – it knows exactly where it is.
Hover over the little clipboard icon to copy it.

Great! Well done. Now that we have this path, we can go back to editing our YAML file.

The main things we need to change are adding the absolute path for the media shared folder. The first entry under ‘volumes’ is for the app files themselves. (I’d also suggest using the absolute path for your Docker shared folder).
Anyways, replace this line so it looks something like:
- /srv/dev-disk-by-uuid-b5e02fa8-630c-400d-b860-325c98917835/Media:/data/media
It’s important that you don’t touch the text after the colon. This is the file structure internal to the container. Once your file path to your media share has been entered.

Once all changes have been made, run the container.
Configuring the app via web GUI
Head over to the IP and Port combination that Jellyfin is on. You should see a screen like this.

This is the initial setup for Jellyfin. Give your server a unique name. This is how it will appear on the network and to other users who are trying to connect to your media server. You can also set your preferred language.

Like many other Docker apps, it will require you to make a local account for the administrator. Make this password secure as the admin has entire control over the container and can modify other user accounts, manage libraries and do all sorts of stuff.
Next, youll be asked to add media libraries. These are the locations on your disks where your media is stored and needs to be imported by Jellyfin.

This is where things can get a little funky. This actually happened to me whilst making this guide. Because I am using a VM of OMV to make these guides, the behaviour of my virtual instance does not always match the expected behaviour seen from a real system running it on bare metal. This prevented me from adding media so the rest of this guide will use a real server with Jellyfin already running.

Click on the ‘Add media library’ button. Select the type of content in the library. You can also set a custom name for the library. Where it gets important, however is selecting the path. This will depend on how you have your media folder organised.

And as you can see, this corresponds directly to the paths available in Jellyfin. I’d recommend creating a library for each folder, otherwise you’ll get everything mixed up.

After clicking ‘OK’, the system will very quickly import the media, fetch the metadata including seasons, episode titles, casting information and ratings from public sites and put all of your media in a nice interface.
Connecting to the server and streaming content
Now with the server all set up on the network and with media to share, other users can connect using the IP of the server and the port (default is 8096). Jellyfin also loosley maintain a mobile app and desktop app. Once downloaded, the app will ask for a server to be pointed to. Again, enter the IP of the server followed by the port number.
Thanks for reading!
