🎬 Setup Jellyfin — Self-Hosted Media Server

Deploy Jellyfin on Ubuntu with Docker and stream your movies, TV shows, and music from anywhere — completely free and open-source.

⚠️ This script is provided for demo and testing purposes only. Not intended for production use.

📦 Resources & Setup Scripts

Grab the automated bash script from GitHub to follow along with the video.

Automated install script — Jellyfin ready in one command.
View on GitHub

Quick Install:

wget https://raw.githubusercontent.com/mhmdali94/Docker/main/media/jellyfin/jellyfin-ubuntu.sh
chmod +x jellyfin-ubuntu.sh
sudo bash jellyfin-ubuntu.sh

Tutorial Steps

1 Download & Run the Script

The script installs Docker if needed, pulls the Jellyfin image, and starts the container with persistent storage.

wget https://raw.githubusercontent.com/mhmdali94/Docker/main/media/jellyfin/jellyfin-ubuntu.sh
chmod +x jellyfin-ubuntu.sh
sudo bash jellyfin-ubuntu.sh

2 Access the Web UI

Open your browser and navigate to the Jellyfin setup wizard:

http://YOUR-SERVER-IP:8096

3 Complete the Setup Wizard

Create your admin account, choose your preferred language, and add your media libraries (Movies, TV Shows, Music). Point each library to the correct directory on your server.

4 Connect a Client App

Install the official Jellyfin app on your TV, phone, or tablet, or simply use the browser. Enter your server IP and port 8096 to connect.

Ports Used

PortProtocolPurpose
8096TCPWeb UI & API
8920TCPHTTPS (optional)

Files Location

/root/docker/jellyfin/docker-compose.yml

Overview

Jellyfin is a completely free and open-source media server that lets you organize, manage, and stream your personal video, music, and photo collections. It is the community-maintained fork of Emby and has no premium tiers, no licensing fees, and no tracking. All processing happens on your own hardware.

Why Use It

Jellyfin is the only fully free, open-source media server with no premium tiers, no account requirements, and no tracking. It streams your personal media collection to any device — phones, tablets, smart TVs, browsers — without subscribing to any cloud service or creating an account with a third party. For households that already own movies, TV shows, and music, Jellyfin turns a server into a private Netflix-like experience with full control over your data and zero recurring costs.

When You Need It

    Who Should Use It

      Real Use Cases

        Main Features

          How to Use After Installation

            Security Best Practices

              Ports and Firewall Notes

              Jellyfin uses port 8096 for HTTP web UI and streaming, and port 8920 for HTTPS (if configured locally). For service discovery on the local network it uses port 1900 (UDP) for DLNA and port 7359 (UDP) for client discovery. Port 8096 should never be exposed directly to the internet without a reverse proxy providing TLS encryption. Place Jellyfin behind Nginx Proxy Manager on port 443 with a valid SSL certificate. Block all Jellyfin ports at the firewall for external traffic and allow access only through the reverse proxy or a VPN.

              Backup and Maintenance

                Common Mistakes

                  Troubleshooting

                    Alternatives

                    Plex is the most popular media server with a polished client experience but requires a Plex account, phones home telemetry, and locks key features behind a Plex Pass subscription. Emby is the original project Jellyfin forked from — it still exists but most premium features now require Emby Premiere licensing. Kodi is a local media player, not a server — it plays files on the device it runs on but does not stream to other devices over the network. Navidrome focuses exclusively on music streaming with the Subsonic API and is far lighter than Jellyfin if you only need audio. For a full media server that is completely free with no account or subscription requirements, Jellyfin is the clear choice.

                    When Not to Use It

                    Jellyfin is not a cloud streaming service — it only serves media files you already own and store on your server. If you need on-demand streaming of content you do not own, use Netflix or similar platforms. Jellyfin requires a reasonably powerful server for transcoding — if your hardware is very weak (single-core VPS with no GPU) and you need to serve multiple simultaneous streams, performance will suffer. For music-only collections, Navidrome is simpler and uses far fewer resources. If you need a turnkey commercial solution with guaranteed client polish and do not mind creating an account, Plex offers a more refined app experience.

                    PrismaTechWork Professional Help

                    PrismaTechWork provides end-to-end infrastructure services — from initial deployment and security hardening to ongoing monitoring, automated backups, and dedicated support. Whether you need a single-server setup or a multi-site network, our team ensures your infrastructure is built right, secured properly, and maintained reliably.

                      Contact Us

                      Frequently Asked Questions

                      Is Jellyfin completely free?

                      Yes. Jellyfin is 100% free and open-source under the GPL license. There are no premium tiers, no feature locks, no account requirements, and no telemetry. Every feature including hardware transcoding, live TV, and multi-user support is available at no cost.

                      Does Jellyfin support 4K streaming?

                      Yes. Jellyfin can stream 4K content if your server hardware is powerful enough to transcode it when needed. Direct play of 4K files requires no server processing. For transcoding 4K, a modern CPU with hardware encoding (Intel Quick Sync 7th gen+, NVIDIA GPU, or AMD AMF) is strongly recommended.

                      Can I access Jellyfin outside my home network?

                      Yes. Set up a reverse proxy with Nginx Proxy Manager and a domain name with HTTPS, then enable remote access in Dashboard → Networking. Alternatively, use a VPN like WireGuard to access Jellyfin without exposing it to the public internet.

                      How do I enable hardware transcoding?

                      Go to Dashboard → Playback → Transcoding and select your hardware acceleration method (Intel Quick Sync, NVIDIA NVENC, or AMD AMF). Make sure the corresponding driver is installed on the host. For Docker, pass the GPU device to the container using the --device flag or docker-compose device mapping.

                      Why is metadata not appearing for my files?

                      The most common cause is incorrect file naming. Movies must be named Movie Name (Year).ext and placed in their own folder. TV shows must follow Series Name/Season 01/S01E01.ext structure. Check Dashboard → Libraries → identify the failed items and review the log for specific matching errors.

                      Can multiple users watch different things at the same time?

                      Yes. Each user has independent playback, watch history, and bookmarks. Multiple simultaneous streams are supported — the limit depends on your server hardware, especially if transcoding is needed. A modern CPU with hardware transcoding can handle 5-10 concurrent transcodes comfortably.

                      Does Jellyfin support live TV?

                      Yes. Jellyfin supports live TV and DVR through TV tuner devices (HDHomeRun, Hauppauge) and M3U playlist sources. You can watch live channels and schedule recordings that are saved to your server. This feature works best on a local network with a reliable tuner.

                      How do I update Jellyfin?

                      Pull the latest Docker image with docker pull jellyfin/jellyfin:latest, then stop and remove the current container, and recreate it using the same docker-compose.yml or run command. Your data directory is preserved across updates since it is stored in a persistent volume. Always back up the data directory before major updates.