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.
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
- Create a Droplet from this 1-Click image (use at least 2 GB RAM).
- 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. - Open Jellyfin at
https://your-droplet-ipand finish the setup wizard immediately to create your admin account. - 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.
Custom Domain (Recommended)
- Create a DNS A record pointing your domain to the Droplet IP.
- SSH in and run:
sudo /opt/setup-jellyfin-domain.sh- 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 jellyfinHelper 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.11Update
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 |