Homelab ⚗️
This project aims to build a homelab for personal testing on infrastructure, development, CI/CD, etc...
It provides a complete configuration with common web services using:
- Ansible for infrastructure deployment (gateway and k3s cluster)
- GitOps (ArgoCD) for Kubernetes applications deployment
It is a quick starting point for simple infrastructure needs or for testing various tools such as monitoring, alerting, automated deployment, security testing, etc...
Quickstart
Make sure all prerequisites are met (check the installation section if needed).
Setup directory:
sh
# Clone the repository
git clone --depth 1 https://github.com/this-is-tobi/homelab.git && cd ./homelab && rm -rf ./.git && git init
# Copy inventory example to inventory
cp -R ./ansible/inventory-example ./ansible/inventoryInfrastructure
Setup inventory:
Install:
sh
# Deploy gateway and K3s cluster, fetch kubeconfig
./run.sh -p ./ansible/install.yml -u -kKubernetes Services (GitOps)
Setup configuration:
- Pick (or create) an instance under ./argo-cd/instances/ (e.g.
homelab/):instance.yaml— cluster destination, env, repos, project bindings.core.yaml— platform/core tier app catalog.tenant.yaml— user-facing apps catalog.
- Configure values in ./argo-cd/instances/homelab/values/core/ and ./argo-cd/instances/homelab/values/tenant/.
- For a brand-new instance, copy the documented template at ./argo-cd/instances/_example/ (folders prefixed with
_are excluded by the root manager and treated as templates). SeeInstallation > Tier-flexible appsfor apps (ingress, cert-manager, keycloak, prometheus-stack, ...) that can live in either tier depending on topology.
Install:
sh
# Set kubectl context
kubectl config use-context homelab
# Bootstrap (or upgrade) the homelab instance
./run.sh -b homelabOptionally pass
ARGOCD_ADMIN_PASSWORD=mypassbefore the command to set the ArgoCD admin password explicitly. Otherwise the chart auto-generates one and the script prints it at the end.