Jellyfin

Generated on 17 Aug 2026 from the Jellyfin catalog page

Jellyfin 1-Click Application

Deploy Jellyfin, a free and open-source media system that lets you manage and stream your media library from your own server.

System Components

Component Details
Ubuntu 24.04 LTS
Docker Container runtime (docker.io)
Jellyfin jellyfin/jellyfin:10.11.11
Caddy Reverse proxy with automatic Let’s Encrypt TLS
UFW Firewall (SSH 22, HTTP 80, HTTPS 443)

System Requirements

Minimum Droplet size: s-1vcpu-2gb (2 GB RAM). Jellyfin’s media transcoding benefits from additional CPU and memory for larger libraries or concurrent streams.

Use case Recommended
Light / small library 2 GB RAM, 1 vCPU
Multiple streams / transcoding 4 GB+ RAM, 2+ vCPU

Software Included

Package Version License
Docker 29.1.3 Apache License 2.0
Caddy 2.11.4 Apache License 2.0 (GitHub)

Creating an App using the Control Panel

Click the Deploy to DigitalOcean button to create a Droplet based on this 1-Click App. If you aren’t logged in, this link will prompt you to log in with your DigitalOcean account.

Deploy to DO

Creating an App using the API

In addition to creating a Droplet from the Jellyfin 1-Click App using the control panel, you can also use the DigitalOcean API. As an example, to create a 4GB Jellyfin Droplet in the SFO2 region, you can use the following curl command. You need to either save your API access token to an environment variable or substitute it in the command below.

curl -X POST -H 'Content-Type: application/json' \
         -H 'Authorization: Bearer '$TOKEN'' -d \
        '{"name":"choose_a_name","region":"sfo2","size":"s-2vcpu-4gb","image":"jellyfin"}' \
        "https://api.digitalocean.com/v2/droplets"

Getting Started After Deploying Jellyfin

Getting Started

  1. Create a Droplet from this 1-Click image (use at least 2 GB RAM).
  2. SSH in once — first login runs /opt/claim-jellyfin-access.sh, which enables Caddy and unlocks HTTPS. Until then, the setup wizard is not publicly reachable.
  3. Open Jellyfin at https://your-droplet-ip and finish the setup wizard immediately to create your admin account.
  4. Add media by uploading or mounting files under /var/lib/jellyfin/media, then configure libraries in the Jellyfin UI.

Security note: Public HTTPS stays disabled until the first SSH claim. After claim, complete the setup wizard right away — the first person to finish it gets full administrative access.

Jellyfin listens on 127.0.0.1:8096 only. Public access is through Caddy on ports 80/443 after claim.

  1. Create a DNS A record pointing your domain to the Droplet IP.
  2. SSH in and run:
sudo /opt/setup-jellyfin-domain.sh
  1. Visit https://your-domain — Caddy obtains a Let’s Encrypt certificate automatically.

Managing Jellyfin

systemd

systemctl start jellyfin
systemctl stop jellyfin
systemctl restart jellyfin
systemctl status jellyfin

Helper scripts

Helpers wrap systemctl so unit state stays consistent:

/opt/start-jellyfin.sh
/opt/stop-jellyfin.sh
/opt/restart-jellyfin.sh
/opt/status-jellyfin.sh
/opt/claim-jellyfin-access.sh
sudo /opt/update-jellyfin.sh 10.11.11

Update

sudo /opt/update-jellyfin.sh <version>

This pulls the requested jellyfin/jellyfin image tag, recreates the container, and keeps data under /var/lib/jellyfin.

Data Locations

Path Purpose
/var/lib/jellyfin/config Server configuration
/var/lib/jellyfin/cache Transcoding / metadata cache
/var/lib/jellyfin/media Suggested media library root

Support

We can't find any results for your search.

Try using different keywords or simplifying your search terms.