Media 1 service 2 GiB RAM 115 GB disk

Jellyfin

The free media server - stream your movies, TV, and music to any device. Plex without the paywall.

One-click deploy, from $49/mo on a Miget plan.

Jellyfin is the free, self-hosted media server: stream your movies, TV shows, music, and photos to a web player and native apps on practically every device, with no subscription, no account upsell, and no telemetry. It is the community alternative to Plex and Emby.

It is a single self-contained container with an embedded SQLite database, so there is nothing else to run. Jellyfin only sets its HTTP port through network.xml, so this template uses a thin wrapper that seeds port 5000 on first boot (and never touches it again, so changes you make in the UI stick).

The honest caveat is transcoding: a PaaS does not pass through a GPU, so transcoding is CPU-only. Direct-play - when the client can play the source file as-is - uses almost no CPU and is the happy path; heavy on-the-fly transcoding costs roughly a core per stream, so size the plan or prefer compatible clients.

#what you get

  • Stream movies, TV, music, and photos to every device
  • Web player plus native apps (Android, iOS, TV, Kodi, Roku)
  • Live TV / DVR, subtitles, and user profiles
  • Single container, embedded SQLite - nothing else to run
  • No subscription, no paywalled features, no tracking
  • GPL-2.0; port-5000 wrapper (network.xml seed)

#topology

ServiceRolePublic
jellyfinmedia server + web player (:5000)yes
volumesconfig + cache + media library (filesystem)no

#miget sizing

// this stack needs

2 GiB RAM · 115 GB disk · 1 service

Direct-play idles near zero; budget ~1 CPU core per 1080p software transcode. The 100 GB media volume is the variable - resize it to your library. Keep replicas at 1 (SQLite + library).

Hobby - recommended fit

$49/mo

4 vCPU · 8 GiB · 160 GiB disk

Headroom for your own apps: 16 GiB at $97/mo

Professional - production

$337/mo

16 vCPU · 32 GiB · 200 GiB disk

Dedicated resources, production SLOs - plan details

One Miget plan is a fixed pool of compute - the whole stack (managed databases included) deploys inside it, and anything left over runs your other apps. No per-service or per-seat math.

#vs. the managed service

What the hosted equivalents charge, against the flat Miget plan this stack fits on. Prices as of June 2026, sources linked.

ServicePlanMonthlyWhat you get
Jellyfin on Miget 8 GiB plan$49this whole stack, flat - no usage meters, and room left for your own apps
NetflixStandard~$15$15.49/mo - a rotating catalogue you do not own
Plex PassMonthly~$7$6.99/mo; lifetime rises to $749.99 on Jul 1 2026

Jellyfin is free software; you pay only for the plan it runs on, and the library is yours.

#vs. other PaaS

Estimated monthly cost of running this exact stack (2 GiB RAM, 115 GB disk, 1 container) elsewhere, from published June 2026 rates.

PlatformEst. monthlyNotes
Miget $49 flat compose stacks first-class: one deploy, dedicated vCPU, managed Postgres/Valkey, volumes and TLS all included in the plan
Heroku ~$100 no volumes; nothing between 1 GB ($50) and 2.5 GB ($250) dynos - 2 GB containers cost far more than shown
Render ~$54 per-service instances (0.5 GB $7, 2 GB $25) - every container is its own paid service
Railway ~$37 usage-based ($10/GB RAM-mo); vCPU billed separately at $20/vCPU-mo on top
Fly.io ~$29 cheapest sticker price - but burstable shared CPUs (1/16 core; dedicated vCPUs cost ~2-3×), no compose deploys (one app per container, manual wiring), managed DBs billed extra
DO App Platform ~$29 no persistent volumes - stateful containers need managed DBs/Spaces (base $5 Spaces included here)

Estimates assume RAM fully allocated at published on-demand rates - and sticker price isn't the whole comparison: the cheaper rows buy burstable shared CPUs, per-service wiring instead of a compose deploy, and managed databases billed separately. Heroku and DO App Platform have no persistent volumes at all - stateful stacks like this one need workarounds there.

#deploy it

On Miget

  1. Create a Compose Stack in app.miget.com pointing at the templates repository
  2. Set the stack path to jellyfin
  3. Set the required variables:
    • (none), first account created on first visit becomes admin
    • PUBLISHED_SERVER_URL, optional: the https domain for client auto-discovery
  4. Deploy. Miget layers compose.miget.yaml (RAM, privacy, volumes, managed services) automatically

Locally first?

Every template is portable, vanilla Docker Compose - the Miget overrides are ignored locally:

git clone https://github.com/deployable-sh/stacks
cd miget-compose-templates/jellyfin
docker compose up -d

Same files, same behavior. The template README covers connection strings and scaling notes.

#faq

What does this save vs Plex or streaming services?

Plex keeps moving features behind Plex Pass ($6.99/month, lifetime jumping to $749.99 on Jul 1 2026), and Netflix-style services rent you a rotating catalogue. Jellyfin is one plan streaming a library that is entirely yours, with every feature included.

Can it transcode without a GPU?

Yes, in software, but a 1080p transcode uses roughly a full CPU core. Direct-play (a client that supports the source format) avoids transcoding entirely and is the recommended path on a PaaS, where GPU passthrough is not available.

Why does it need a wrapper for port 5000?

Jellyfin reads its listen port from network.xml, not an env var or flag. The thin wrapper seeds network.xml with port 5000 on first boot only, so it lands on Miget’s public port without clobbering any port change you make later in the UI.

Ship Jellyfin today

One compose stack, 2 GiB of RAM, from $49/month flat, and it runs on your laptop with the same files.