The Default Is Not Yours
Most people rent their digital lives. Google holds your email. GitHub holds your code. Vercel holds your sites. Cloudflare holds your DNS. And when any of these services change their terms, raise their prices, or go down — you're just along for the ride.
I started self-hosting because I didn't want to be along for the ride.
What Self-Hosting Actually Means
Self-hosting isn't about running a data center in your basement. It's about owning the critical paths. For me, that means:
- Email runs through my own domain with Postfix. Gmail is just a relay.
- DNS is managed through Cloudflare, but with configurations I control via Terraform.
- Code lives on GitHub, but I have local mirrors and backups that GitHub can't touch.
- Sites run on my own VPS with Nginx. If a provider changes, I move.
The Tradeoffs
Self-hosting costs time. You're the SRE, the DBA, the security team, and the on-call engineer. Last month, my monitoring caught a disk filling up at 2 AM. I fixed it at 2:15 AM.
Was it worth it? Yes. Because the alternative is waking up to an email saying "we're deprecating your plan, migrate by Friday."
Where I Draw the Line
I don't self-host everything. Some things aren't worth it:
- Object storage — S3 is too good and too cheap to replicate.
- Email delivery — I relay through Gmail's SMTP because deliverability is a dark art.
- Monitoring alerts — I use UptimeRobot because I don't want to build a monitoring service to monitor my monitoring.
The Philosophy
Self-hosting is a discipline. It forces you to understand your stack because you fix it when it breaks. It's the difference between driving a car and knowing how the engine works.
I choose to know how the engine works.