Preface
Before diving into this post, it’s important to note that this guide assumes you have a basic understanding of Docker and Docker Compose.
Project Overview
Jellyfin is a free media hosting server designed to allow you to store and provide multimedia through your local network. I chose Jellyfin because it aligns perfectly with my goal of staying cost-free while not sacrificing functionality. Plus, let’s be honest—I’m broke.
The Journey
The primary goal of this project was to digitize all of my movies and TV shows and put them in a single place for easy access. Instead of using a DVD player or scrolling through five different streaming services to find a movie, I wanted a centralized media library.
For this setup, I am using Docker Compose on an Ubuntu VM that runs on a Proxmox Host. The detailed setup process for Docker and Docker Compose will be discussed in another blog post on my Walkthrough’s page (which is currently a work in progress).
Setting Up the Jellyfin Server
The initial step involves creating a docker-compose.yml
file to define the Jellyfin container and its configuration. Here is an example of what the Docker Compose file might look like:
version: '3.8'
services:
jellyfin:
image: jellyfin/jellyfin
container_name: jellyfin
volumes:
- ./path/to/config:/config
- ./path/to/cache:/cache
- ./path/to/media:/media
ports:
- 8096:8096
restart: unless-stopped
Replace ./path/to/config
, ./path/to/cache
, and ./path/to/media
with the appropriate paths on your host system. You can then run the container with the follow command:
docker compose up -d
Challenges and Solutions
One of the biggest challenges I faced during the setup was syncing a folder on the Docker container to an SMB share from my Synology NAS. I used a Synology NAS to set up storage for this project and had to share a folder for the media through SMB.
After some research, I found that I could bind a folder from the Ubuntu host to the Jellyfin container and then set up a file share between my Synology NAS and that specific folder. This way, when I add media to the folder on my NAS, it is also added to the Ubuntu VM and the Jellyfin container.
Outcome and Lessons Learned
The outcome was exactly as I expected. I can now rip DVDs that I own to digitize them, place them into a shared folder on my NAS, and update the Jellyfin libraries to recognize the new titles. This allows me to watch them from any device on my network.
A key takeaway from this project is the importance of understanding file sharing to its fullest. Setting up the Docker Compose file and Jellyfin container was the easy part. The real challenge came with troubleshooting file sharing between my NAS and the container.
Future Plans
My future plans include ripping all the DVDs I own to create a digital library. I also want to find a way to make the container accessible from outside of my network. Although I could probably do it via Cloudflare (similar to this site), hosting video through their tunnels might be against Cloudflare’s TOS (Terms of Service). We’ll see how it goes.
Leave a Reply