Hosting Jellyfin cheap
AWS Hosted Jellyfin
I’ve been hard at work the the past month or two creating a full featured media NAS in AWS, with most of efforts spent on automations that reduce my monthly cost. The goal was to reach $25/month for a single family home and I think I’ve just about reached my goal.
AWS cloud is notoriously expensive, so
Here’s how I did it:
I use S3 storage for all my media files. Both the types of files and my the method I used to mount S3 as a drive in Linux are optimized for long sequential data reads. This avoids buffering when playing media from S3.
I use a pair of EC2 spot instances to keep the running costs low, and my instances auto-hibernate themselves when they detect they’re not in use, so they stop billing. This part is key.
Video streaming is my most resource intensive workload the machine that supports this should be off most of the time because it only needs to run on-demand (when I want to watch a show) and otherwise it doesn’t need to run. Thanks to spot instance pricing, when it does run this costs less than $.10 an hour.
My “other utility” containers (which need to run 24/7) aren’t very resource intensive. They happily run on a t3.small instance so they’re separate. This one costs less than three cents an hour when it’s running.
I’ve reduced spending on fast SSD EBS storage by developing scripts that scale up and scale down my volumes so I only pay for a large disk while it’s in use and release unused storage as soon as possible.
Between both instances I only have 40GB of EBS provisioned most of the time. This flexes up and down on demand but when the system is idle it rests at 40GB.
As my build is very sensitive to file formats that trigger a lot of random access reads I remux everything to MKV which is sequential read optimized. (anything in MP4 will buffer when playing out of S3 storage)
I use a Lambda function for the remux from MP4 to MKV using FFmpeg. I don’t do any transcoding of any kind as that would require paying for GPU instances, and I’m allergic to paying those kind of prices.
H.265 HVEC media plays just fine from a C7i large compute instance, although it puts substantial load on the CPUs when playing back, they keep up and nevertheless buffer so that’s fine 😊
My content preferences are set for MKV container video encoded with H.265 @ about 1.6GB/hour. I manage to find everything I want like this, and these settings keeps things tight on the file storage side by keeping out poorly encoded flabby files that are sometimes 3-4times larger than they really need to be.
I find that 1080p media look surprisingly good with these settings, often far better than what HBO and Netflix will pipe to me. Their streams look blurry and full of artifacts to me now that I’ve gotten settled in with this build.
I just don’t do 4K, end of story. If I did it would blow out the envelope on my target cost in every possible way.
Lastly, I automatically clear out all media one day after it’s been watched again via a script. Titles are easy enough to fetch especially with the fast connection in AWS, so why hoard the data? I don’t see the point of paying to hold something I don’t plan to use soon, so I just don’t hold them long term.
VPN and full disk encryption are used all around etc. I don’t need anyone peeking in.
I have everything set up to deploy automatically too, so I can build this environment again as many times as I want in AWS. I’m working towards reselling. I think folks out there need a build that just works out of the box from the cloud without expense or trouble so they can cut the cord with all these streaming services.
Posted Mar 8, 2026, 5:56 PM UTC