You can run your own Netflix-style media server at home with free software. This is how to set up Jellyfin in Docker on a Linux machine and watch your videos on a TV, a phone or any web browser.
Why Jellyfin
I wanted to play my own videos on the TV. Casting from my desktop browser found no devices, so I set up a media server instead. Jellyfin is free and open source, has no accounts or subscriptions, and keeps your videos on your own hardware. It also has apps for Roku, Android TV, Fire TV and more.
What you need
A Linux machine that stays on, such as an old PC or a small home server. These steps use Ubuntu.
Enough storage for your videos.
A TV or streaming stick that has a Jellyfin app.
Videos that you own or made yourself, such as home videos and your own backups.
Step 1: Install Docker
On Ubuntu, the quickest route is the packages in the standard repositories:
Run id -u and id -g and replace the 1000:1000 with your own numbers if they differ. The :ro on the media folder means Jellyfin can read your videos but can't change or delete them.
Step 4: Start it
docker compose up -d
Open a browser on any computer on your home network and go to http://YOUR-SERVER-ADDRESS:8096. The first-run wizard asks you to create an admin account. Use a strong password.
Step 5: Add your libraries
In the wizard, add a library for each folder: Movies from /media/movies, Shows from /media/shows, and Home Videos from /media/home-videos. Let Jellyfin scan them.
Name your files so Jellyfin understands them
movies/Movie Name (2020)/Movie Name (2020).mkv
shows/Show Name/Season 01/Show Name S01E01.mkv
Good names are what let Jellyfin find posters and descriptions on its own.
Watch it on your TV
Install the Jellyfin app on your streaming stick or smart TV. It should find the server on your network, or you can type the address in. Sign in with the account you made.
Tips
Direct play is easier on weak hardware. If your server has no graphics card, video that your TV can play directly won't need converting. Common formats like H.264 work well.
Back up the settings folder. The config folder holds your libraries and watch history.
Keep it off the internet. Don't open the Jellyfin port on your router. If you want to watch away from home, use a VPN to reach your network instead.
If something doesn't work
The TV can't find the server. Make sure both are on the same network, and type the server's address in by hand.
The page won't load. Run docker ps to see that the container is running, and check the firewall. On Ubuntu with ufw, you can allow your home network to reach port 8096.
Libraries look empty. Check the folder permissions with ls -l /srv/media, and make sure the user in the compose file matches the owner of the folders.
Video stutters. Check whether the player is converting the video instead of playing it directly. Jellyfin's dashboard shows this.
Questions?
If you get stuck, post in the Linux or Servers and Security forum and tell me your distro and what you see.
You can run your own Netflix-style media server at home with free software. This is how to set up Jellyfin in Docker on a Linux machine and watch your videos on a TV, a phone or any web browser.
Why Jellyfin
I wanted to play my own videos on the TV. Casting from my desktop browser found no devices, so I set up a media server instead. Jellyfin is free and open source, has no accounts or subscriptions, and keeps your videos on your own hardware. It also has apps for Roku, Android TV, Fire TV and more.
What you need
A Linux machine that stays on, such as an old PC or a small home server. These steps use Ubuntu.
Enough storage for your videos.
A TV or streaming stick that has a Jellyfin app.
Videos that you own or made yourself, such as home videos and your own backups.
Step 1: Install Docker
On Ubuntu, the quickest route is the packages in the standard repositories:
Log out and back in so the group change takes effect. Then check it with
docker --version.Step 2: Make the folders
Keep your media and Jellyfin's settings in separate places:
Step 3: Create the compose file
Make a folder for the project and add a file called
compose.yaml:Run
id -uandid -gand replace the 1000:1000 with your own numbers if they differ. The:roon the media folder means Jellyfin can read your videos but can't change or delete them.Step 4: Start it
Open a browser on any computer on your home network and go to
http://YOUR-SERVER-ADDRESS:8096. The first-run wizard asks you to create an admin account. Use a strong password.Step 5: Add your libraries
In the wizard, add a library for each folder: Movies from /media/movies, Shows from /media/shows, and Home Videos from /media/home-videos. Let Jellyfin scan them.
Name your files so Jellyfin understands them
Good names are what let Jellyfin find posters and descriptions on its own.
Watch it on your TV
Install the Jellyfin app on your streaming stick or smart TV. It should find the server on your network, or you can type the address in. Sign in with the account you made.
Tips
Direct play is easier on weak hardware. If your server has no graphics card, video that your TV can play directly won't need converting. Common formats like H.264 work well.
Back up the settings folder. The config folder holds your libraries and watch history.
Keep it off the internet. Don't open the Jellyfin port on your router. If you want to watch away from home, use a VPN to reach your network instead.
If something doesn't work
The TV can't find the server. Make sure both are on the same network, and type the server's address in by hand.
The page won't load. Run
docker psto see that the container is running, and check the firewall. On Ubuntu with ufw, you can allow your home network to reach port 8096.Libraries look empty. Check the folder permissions with
ls -l /srv/media, and make sure the user in the compose file matches the owner of the folders.Video stutters. Check whether the player is converting the video instead of playing it directly. Jellyfin's dashboard shows this.
Questions?
If you get stuck, post in the Linux or Servers and Security forum and tell me your distro and what you see.