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.
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