Haven

**A *forever-work-in-progress* self-hosted server setup** Runs on a multi-node k3s cluster deployed across VMs and bare-metal hosts. Application configuration is stored on an NFS share located on a dedicated SSD. This uses `nfs-subdir-external-provisioner` as a dynamic storage provisioner with PVC-specific paths. Additional data is stored on a NAS exported via NFS. The cluster runs `k3s` with `nginx` as the ingress controller. `MetalLB` is used in layer 2 mode for load balancing. `cert-manager` provides a local CA and issues certificates (required by Vaultwarden). For setup details, see [SETUP.md](SETUP.md). The repository name references my local TLD, `.haven` ;) ## Repository Layout ``` haven/ ├── bootstrap/ │ ├── namespaces.yaml # cluster namespaces │ ├── secretstores.yaml # cluster secret stores for BitWarden ESO │ ├── address-pool.yaml # cluster IP pool for MetalLB │ ├── argocd-install/ # Argo CD install manifests + ingress │ └── root-app.yaml # root Application watching apps/root ├── secrets/ │ ├── adguard.yaml # adguard credentials from BitWarden │ ├── .yaml # credentials from BitWarden │ └── ... ├── apps/ │ ├── root/ │ │ ├── kustomization.yaml # points to applicationset.yaml │ │ └── applicationset.yaml# auto-discovers apps/*/*.yaml │ └── / # e.g., dev/, default/, infra/, monitoring/ │ ├── .yaml # all-in-one manifest per app │ ├── .yaml # ... | └──── ... ```