Christmas Special: About My First Homelab

This is the story of how cloud storage pricing pushed me into building a quiet, always-on homelab that now runs everything I care about.

6 min
28 views
Published December 25, 2025
Homelab
Self-hosting
Fly-io
Hardware
Proxmox
Postgres
Nginx
Cloud
Linux
Co-authored with gpt-5.2

It is Christmas today. Things are slower, people are offline, and I am on leave for the week. I finally had time to sit down and write this, instead of tweaking code or spinning up yet another side project.

So this is a small Christmas tale. Nothing emotional, just practical. I have always wanted to share how I ended up getting into homelab stuff.

This is not a guide. Think of it as an origin story and the journey of how I ended up here.

If you have ever looked at cloud pricing for a small personal project and thought it was overkill, this will probably resonate.


The Trigger: Cloud Limits and Storage Pricing

This started while I was building and deploying the backend for one of my personal projects, TT4D. I was hosting it on Fly.io and trying to stay within the free $5 tier.

The shared one vCPU was rough. The project involved scraping and storing data, and once I started looking at persistent storage pricing on Fly.io and other cloud providers, the numbers felt absurd for what I actually needed.

I just wanted an always-on Postgres database for a personal project, not a production SaaS with strict SLAs.

At some point I caught myself thinking: why am I even paying so much monthly just to keep a database alive?

That was the mental trigger.


Falling Into the Homelab Rabbit Hole

I started by browsing Carousell, looking for cheap servers. What I found were mostly large, noisy enterprise machines that needed racks and space I did not have.

Then I searched for "mini PC".

That led me straight into the world of self-hosting and homelabs. I started watching a lot of YouTube guides and reviews from ServeTheHome, Jeff Geerling, Craft Computing, and many others.

It was eye-opening to see how much you could do with small, efficient hardware at home.

The idea of owning a quiet, low-power box that runs 24/7 seemed popular among tech enthusiasts, which explained the sheer amount of content around it.


Sourcing The Hardware

Eventually, I found a second-hand Intel 11th-gen i5 NUC on Carousell for S$280. It came with 8 GB RAM and a 256 GB SSD. There was a Microsoft Teams sticker on it, so I assume it spent its previous life doing video calls in an office.

That amount of compute being used for a single app felt wasted. I was happy to give it a second life.

The base specs unfortunately were not enough for what I wanted, so upgrades were next.

I bumped the RAM to 32 GB using two second-hand 16 GB DDR4 sticks. They were about S$15 each, cheap enough that buying new did not make sense.

For storage, I wanted something I would not have to think about again for a long time. I went down the usual rabbit hole of DRAM cache, TLC vs QLC, Gen3 vs Gen4, endurance ratings, and future use cases. I even briefly thought about what it would take to run something like a crypto validator one day.

I eventually settled on a new 4 TB Seagate FireCuda NVMe SSD. It was TLC, high endurance, and felt future-proof enough. It cost around S$360.

There was a small detour where I accidentally bought the version with a heatsink, only to realize it would not fit inside the NUC enclosure. The heatsink stuck out just enough that I could not close the lid. I sold it at a small loss and bought the correct version without a heatsink.

After that, everything went smoothly.


First Boot and Proxmox

I loaded the Proxmox installer onto a USB stick, plugged in an old keyboard and monitor, and powered the box on for the first time. The installation was pretty painless and straightforward.

Once Proxmox was up, I created my first few LXCs:

  • one for the TT4D backend
  • one for Postgres
  • one for Nginx as a reverse proxy

After verifying that everything worked on my local network, I configured my router and Cloudflare so that the frontend, hosted on Vercel, could talk to the backend over the public internet.

When everything was stable, I shut down and decommissioned my Fly.io instance. The free tier was generous, but now that I had my own self-hosted setup, I no longer needed it.


Why Proxmox

I was introduced to Proxmox through YouTube, and it seemed to be a popular OS choice in the homelab world.

I already knew a bit about Docker and wanted to try something new. With Proxmox, I could spin up containers quickly from the UI, and use the built-in console to install and configure things directly. I did not need to write a Dockerfile for every service just to get started.

I chose LXCs because they were lightweight and more than capable for what I needed. If I ever wanted Docker, I could always run it inside a VM. There was no real lock-in.

One drawback is that some homelab services require Docker, which means dedicating a VM just for Docker-only services. I should also consider bundling my own personal projects with a Dockerfile to make them easier to self-host, but that is future-me's problem.


Current State

As of now, this single Intel NUC is running 19 LXCs.

This box runs a mix of open-source services and my own personal projects. It is quiet, low-power, and sits in a corner of my house doing its thing 24/7. Very low maintenance.


Constraints And Trade-Offs

One constraint I accepted early on was running the machine headless.

After the initial setup, I did not want a monitor or keyboard attached permanently. I wanted to manage everything through the Proxmox web UI over my local network from my MacBook only.

This works great most of the time. The trade-off is that if the box reboots and the Proxmox UI does not come up properly, I need to physically plug in a screen and keyboard again to debug it.

I am okay with that. The simplicity and cleanliness of an always-on, headless setup is worth the occasional inconvenience.


Takeaway So Far

The upfront cost for this homelab was around S$700.

After that, the ongoing cost is almost nothing. Based on measurements from a smart plug, the electricity usage is under S$1 per month.

For comparison, an always-on persistent cloud storage setup at the scale I am using would cost roughly S$400-S$800 per month just for storage.

Self-hosting turned out to be cheaper and far more educational than I expected.


What's Next

In the next post, I will go deeper into the services running on this homelab, and how I started using Terraform and Ansible to automate provisioning and configuration.

If you are in a similar holiday mood of tinkering and reflection, a single small box like mine is more than enough to get started with self-hosting. Here's hoping Santa got you what you actually wanted this year - your first homelab.

Merry Christmas everyone! 🎄

--
Cheers,
Ted