ohmlab ⚗️
ohmlab is a GitOps kit to run a self-hosted platform on Kubernetes:
- Ansible roles that provision a gateway and a k3s cluster
- a bootstrap chart that installs a self-managed Argo CD, which then deploys everything else from git
- a catalog of charts (identity, secrets, storage, observability, security, developer tools) that each instance enables and configures
- a controller that seeds the secrets the apps need into Vault
A cluster's own configuration lives in an instance: which apps it runs, with which values, on which machines. An instance can sit in a clone of this repository or in a repository of its own; this-is-tobi/homelab is the reference deployment.
It is a quick starting point for simple infrastructure needs, or for testing tools such as monitoring, alerting, automated deployment and security scanning.
Quickstart
Make sure all prerequisites are met (check the installation section if needed).
Setup directory:
# Clone the repository
git clone --depth 1 https://github.com/this-is-tobi/ohmlab.git && cd ./ohmlab && rm -rf ./.git && git init
# Copy inventory example to inventory
cp -R ./ansible/inventory-example ./ansible/inventoryInfrastructure
Setup inventory:
Install:
# 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.
mylab/):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/<instance>/values/core/ and ./argo-cd/instances/<instance>/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:
# Set kubectl context
kubectl config use-context homelab
# Bootstrap (or upgrade) the mylab instance
./run.sh -b mylabOptionally 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.