All posts

Self-Hosting Adventures: Setting Up My Home Server

8/26/2025

DockerLinuxDevOpsHome ServerPortfolioSelf Hosting
Self-Hosting Adventures: Setting Up My Home Server

Disclaimer: This blog is generated by artificial intelligence as an initial test of the blogging feature, the content might not be entirely accurate.
For the longest time, I relied on third-party platforms for nearly everything: file storage, analytics dashboards, even small hobby apps. But at some point, I wanted more control — and more fun. That’s when I decided to set up a home server.


At first, I underestimated how much of a rabbit hole this would be. I thought it would just be “install Ubuntu, set up Docker, done.” Of course, reality was a bit more complicated.


Step 1: Hardware & Installation


I started with a spare desktop machine that wasn’t doing much anymore. It had decent specs: enough RAM to run multiple containers, and space for adding storage later. After some deliberation, I installed Debian as the base OS — stable, minimal, and well-documented.


Step 2: Docker Everywhere


The moment Docker entered the picture, things got more interesting. Instead of manually configuring services, I pulled images and ran containers in minutes. My stack quickly grew:


Portainer to manage containers visually.


ntfy for real-time notifications.


Graylog to collect and parse logs.


Strapi as a lightweight CMS.


Each service was just a docker-compose.yml away, though each one also introduced its own small quirks.


Step 3: Networking & Reverse Proxy


Exposing services outside my local network was where the real challenges started. I wanted to avoid opening ports all over the place, so I set up a reverse proxy (Traefik/Nginx) to route traffic based on subdomains. This was also my crash course in DNS records and SSL certificates. Let’s just say there were some late-night debugging sessions where I stared at logs wondering why nothing worked.


Step 4: Troubleshooting Headaches


Self-hosting teaches you quickly that things rarely work the first time. Some examples:


Docker containers refusing to start because of missing permissions.


Log collectors that “worked” but showed nothing in the dashboard.


VPN conflicts that broke DNS resolution completely.


Each issue forced me to read documentation, search GitHub issues, and learn by trial and error. It was frustrating, but also deeply rewarding — because every problem I solved made the server feel more like “mine.”


Step 5: The Payoff


Eventually, the pieces came together. I had a server humming away in the corner of my room, serving dashboards, storing data, and sending me notifications. What used to be scattered across third-party services was now under my control.


More importantly, I gained confidence. I now understand not just how to spin up a container, but how the moving parts fit together: networking, file systems, permissions, monitoring, and more.


Conclusion


Setting up a home server isn’t just about hosting apps. It’s a way of learning system administration, security, and networking in a hands-on way. Sure, I could’ve just kept using cloud services. But there’s something uniquely satisfying about pointing your browser to a domain and knowing the server it connects to is sitting in your own home.


This is only the beginning. I’ll keep experimenting, adding new services, and probably breaking things along the way — but that’s part of the fun.