2026-09-03 19:57:53 -03:00
2026-08-23 20:34:43 -03:00
2026-09-03 19:57:53 -03:00
2026-09-02 19:53:17 -03:00
2026-09-03 06:52:24 -03:00
2026-09-02 19:53:41 -03:00
2026-09-02 19:53:41 -03:00
2026-09-02 19:59:56 -03:00
2026-07-10 23:22:28 -03:00

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.

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
│   ├── <app>.yaml             # <app> credentials from BitWarden
│   └── ...
├── apps/
│   ├── root/
│   │   ├── kustomization.yaml # points to applicationset.yaml
│   │   └── applicationset.yaml# auto-discovers apps/*/*.yaml
│   └── <namespace>/           # e.g., dev/, default/, infra/, monitoring/
│       ├── <app-1>.yaml       # all-in-one manifest per app
│       ├── <app-2>.yaml       # ...
|       └──── ...
S
Description
Readme
216 KiB
Languages
Markdown 100%