From Cloud to Ground: My DIY Home Server Journey
I’ve always been a tech enthusiast, so when I read DHH’s blog post about exiting from the cloud, I was immediately inspired. Throughout my career as a software developer, my personal hardware had mainly been used for local tests and development. In fact, during my time at Shopify, even local development transitioned to the cloud using an in-house tool called Spin. My Macbook was mostly used to connect to cloud services, and most of my tasks were done remotely in the cloud. For that reaasons, I didn’t pay much attention to what was possible with my powerful hardware I own.
For years, I’ve been hosting some of my personal services and a few scripts on AWS EC2 and DigitalOcean droplets. They’ve been reliable and easy-to-use. However, the recurring costs started to add up. I did a quick back-of-the-napkin calculation and realized I could easily buy a small server for the same amount I was paying over time.
I was exploring options and the Raspberry Pi 4 caught my eyes. It had great reviews and there was a starter kit that seemed to make the setup easier. That same day, I pulled my trigger. A few days later, it arrived and I couldn’t wait to get started. The setup turned out to be surprisingly easy and simple. The starter kit included everything I needed and not only was the hardware setup easy, but also the software setup was. I used NOOBS and it simplified the process of installing the Raspberry Pi OS with only a few simple clicks. I finally had a fresh and complete installation of Raspbian and everything was ready to go!
There are a few exciting things I’d love to do with this machine. First, I want to migrate my personal blog currently running on GitHub Pages. It offers a free service for hosting a static website (limited to one per account), but I want more control and flexibility over infrastructure. Second, I want to host my personal projects currently running on AWS cloud. Since each project has a different env, I will containerize them with Docker. Lastly, auto deployment. I’ve been doing it by manually sshing into them. I’ve managed to make this work but it’s not the best developer experience especially when compared to the experience in my past jobs. Moreover, I don’t like the fact the maunal process creates downtime as services go down when applying changes. The end-users are my family and myself so it’s not very critical to have the short downtime so this part is a back-burner thing but after a quick research I feel like the Docker Stack has everything I need for my production-like env.
If I get a chance, I’ll share my experiences of migrating them once I finish setting up. Stay tuned for more updates on my DIY home server journey!