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...
Website: https://this-is-tobi.com/homelab/introduction.
Table of Contents - md sources:
Make sure all prerequisites are met.
Setup directory:
# 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/inventorySetup inventory:
Install:
# Deploy gateway and K3s cluster, fetch kubeconfig
./run.sh -p ./ansible/install.yml -u -kSetup 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). See Installation > Tier-flexible apps for apps (ingress, cert-manager, keycloak, prometheus-stack, ...) that can live in either tier depending on topology.
Install:
# 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.