Setting up a home server has always been on my to-do list, one day I saw someone selling a second-hand mini PC, and I thought it would be perfect for my home server. I had always wanted to have complete control over my services, and I thought this was the perfect opportunity. I bought the mini PC and set it up as my home server. In this blog post, I’ll walk you through my journey and setup.
Motivation
A home server offers numerous benefits, from data privacy to having complete control over my services. This blog post walks you through my journey and setup.
Hardware and Setup
Someone was selling a second-hand mini PC on kleinanzeigen. It comes with a Ryzen 7 5700G and 16GB of DDR4 RAM and a 512GB NVMe SSD, for only €250. I installed Umbrel OS, it has just been released a few weeks ago, Umbrel has been around but this version offers an Over-The-Air (OTA) update feature. Setting up Umbrel OS was straightforward, faster than installing Ubuntu Desktop. I was up and running in no time. Through the browser-based interface, I installed Portainer (in one click, you heard it right) and started deploying my services.
Orchestration and Management
I manage everything with Portainer, which simplifies the orchestration of services and containers. It’s user-friendly and provides a clean interface for monitoring and managing my services. It lets you import app templates, which is a huge time-saver. I use this template that offers +500 app templates: portainer-templates.as93.net. I installed plausible.io for analytics, but it was not available in the template, so I had to add it manually, which is not a big deal if you are familiar with docker-compose.
Applications and Uses
I installed a variety of applications on my home server, including:
- Immich to host 175GB of my family’s photos and videos.
- Plausible to track visitors on my blog and my other websites.
- Code-server to code from anywhere, leaving my laptop free from heavy tasks. Although I still have a problem running docker inside code-server.
Exposure and Security
I use Cloudflare’s Tunnel to expose only necessary ports to the internet. Additionally, for private services, I use another tunnel by tailscale to access them privately and securely. I will spend some time studying the security measures and risks to further secure my server.
Costs and Efficiency
The Ryzen 7 5700G is equipped with 8 cores and 16 threads, clocked at 3.8GHz and 4.6GHz boost. At only 65W TDP, it’s quite efficient. I’m keen on measuring the operating costs, primarily electricity, since the internet cost is fixed. The mini PC consumes around 20W when idle, which is quite efficient. I’m excited to see how much it costs to run the server for a year.
My electricity provider charges €0.30 per kWh, so the server costs around €0.15 per day to run. Or €4.5 per month, which is quite reasonable for the services it provides.
Reliability and Uptime
Electricity in Germany is said to be very reliable, giving me confidence in achieving high uptime. One friend has been living in Germany for 14 years and has almost never experienced a power outage that one time it did happen to him for a few hours, he thought a war had started.
The internet, although a bit expensive, is fairly reliable as well. I’m aiming for a 99.9% uptime for both.
After all, I don’t expect the same reliability as a data center, I traded off reliability for privacy and control. Don’t get me wrong, I still aim for high uptime (which I measure and will post in a few weeks), but I’m willing to accept a bit of downtime in exchange for the benefits of self-hosting.
Challenges Ahead
There are still challenges ahead, such as:
- Data protection against:
- data loss due to hardware failure.
- data theft due to security breaches.
- Monitoring the operating costs and uptime.
These are problems for another day, trust me when it comes to data protection, it never ends. But I’m excited to tackle them.
Conclusion
Running a home server has been a rewarding experience, despite the challenges. I plan to continue optimizing my setup and exploring the risks and measures to mitigate them. If you’re considering setting up a home server, I hope this post has been helpful.