This post contains the instructions to set up a home server. It will host a number of services that I use regularly, like hosting my personal files, a remote development environment, web apps, and anything else I can think of running on a piece of silicon.
Requirements
- 💸 The server should be relatively cheap to run. No GPU clusters running ChatGPT, I have bills to pay
- 🐧 Use free and open-source software where possible
- 🔒 Private services: personal file hosting, remote development environment, productivity tools like my notes, task management etc.
- 🔓 Public services: primarily my public-facing experiments in software like this website
- 🔑 Private services should be secure and accessible only to me, such as through a VPN
- 🌐 All services should be accessible via HTTPS from outside my home network using subdomains for each service (for example https://batcave.sy3d.dev)
- 📞 The server should use dynamic DNS instead of static IP. The less I interact with my ISP, the happier I am
- 📈 Compatible with observability and monitoring tools such as Grafana and Prometheus
Hardware
I ended up buying an HP EliteDesk G3 Mini PC.