Maybe you're tired of paying $20/month for a VPS to host a side project. Maybe you want a real environment to deploy things to instead of everything living on localhost. Maybe you have a spare Raspberry Pi collecting dust and want to finally do something cool with it. Or maybe you just want to understand how production infrastructure actually works by building it from scratch instead of reading a blog post about it
This guide walks you through all of it, starting from bare hardware and ending with a self-hosted Kubernetes cluster with GitOps, monitoring, automated CI/CD, and zero open ports on your router
This covers most of what went into building my personal cloud project firsthand. Use it to get something running, then go read the official docs, experiment, break things, and learn from them. Every reference link throughout the guide is a good next step or starting point to learn from
Beginners are welcome. No prior experience with any of these technologies is required. Feel free to give a ⭐ too!
| Folder | What's inside | After this section | |
|---|---|---|---|
| 🟢 | 01-Cluster Setup (Start here) | Hardware options, OS prep, K3S install (single-node, multi-node, HA), kubectl, Helm | K3S running, kubectl working from your local machine |
| 🟢 | 02-Expose Services | Cloudflare Tunnel, public IP/VPS, and LAN-only access options | Services reachable from your LAN or the internet |
| 🟢 | 03-Gitops | Kustomize, cluster secrets, ArgoCD bootstrap, app-of-apps pattern | ArgoCD managing your cluster - commit to git, the cluster follows |
| 🟢 | 04-Deploy | Writing app manifests, deploying your first app end-to-end | A real app live in a browser at your own domain |
| 🟢 | 05-Extras | Cloudflare Access, monitoring & alerting, persistent storage, CI/CD pipelines | Auth, observability, and CI gates in place |
| references | Troubleshooting, useful tools, resetting your cluster, reference links |
Found something wrong, outdated, or confusing? Have a suggestion for what should be added or changed?
Open an issue or start a discussion on the GitHub repository: corrections, improvements, and questions are all welcome. If you built something based on this guide and ran into a gap, that feedback is especially useful
You can also reach me directly at guide-support@krmed.cloud