The platform I run
I run my sites and services on a k3s cluster hosted by Proxmox. I wanted one place to rebuild and understand the machines, apps and storage I use every day. Git records the desired state, and Argo CD applies it.
From Git to the cluster
OpenTofu provisions the VMs and public DNS. A Cloudflare Tunnel routes web traffic to apps that use Authentik for sign in. Argo CD reads this repo and reconciles the k3s manifests with prune and self heal enabled. Cilium handles networking while Prometheus, Grafana and Alertmanager show me what is happening. CloudNativePG stores app databases and backs them up to R2.
Build
- OpenTofu
- Proxmox VMs
- k3s
Deploy
- Git
- Argo CD
- apps on Cilium
Run
- Cloudflare Tunnel
- Authentik
- Prometheus and Grafana
- CNPG backups to R2
Making media imports hardlink
Media imports copied files instead of hardlinking them.
Media imports copied each file onto a slow disk because downloads and media lived on separate ZFS datasets. I found identical duplicate files during a storage audit. Even after merging the datasets, separate NFS mounts made hardlinks fail with EXDEV. I traced the error through the Kubernetes mount paths and found that subPath made the same split. I mounted one dataset once at /data and updated the app paths so new imports hardlink.
New imports can hardlink inside one shared mount.
Screenshots
Hubble shows traffic between Argo CD components and the cluster edge.