vps cluster docs

Storage

This page describes the live storage layout after the 2026-10-27 vcap v1 retirement. Verify live state before you rely on any number here.

Live data

Dataset Namespace Backing Size Backup
Postgres gitorgasm gitorgasm static PV on hostPath /srv/data/gitorgasm-postgres, Retain not measured class A logical dump
Postgres vcap-v1 (retired, retained) vcap-v1 static PV vcap-v1-postgres-data-vps, hostPath /srv/data/vcap-v1-postgres, Retain 67 MB class C raw
Final dump vcap-v1 (retired, retained) none host directory /srv/data/vcap-v1-final-dump, file vcap-v1-pg_dumpall-20261027.sql.gz not measured class C raw
Application data vcap-v1 (retired, retained) vcap-v1 local-path PV pvc-d4b91391-4691-43c4-9590-6bbe1ddf0ad9, Retain since 2026-10-27 15 MB class C raw
Postgres and MinIO vcap-staging vcap-staging static PV vcap-backend-staging-data-vps, hostPath /srv/data/vcap-staging, Retain 75 MB class A raw
Postgres and MinIO vcap-dev vcap-dev static PV vcap-backend-dev-data-vps, hostPath /srv/data/vcap-dev, Retain 70 MB class C raw
Postgres meghmitra meghmitra static PV meghmitra-postgres-pvc-vps, hostPath /srv/data/meghmitra-postgres, Retain 206 MB class C raw
Postgres and MinIO bitvault bitvault local-path PVs pvc-4f59ae33… and pvc-acbed98f…, Retain 48 MB + 148 KB class C raw
Mongo rankstack rankstack local-path PV pvc-fb2fad5e…, Retain 509 MB class C raw
Mock service data kirro kirro local-path PV pvc-623ce531…, Delete 76 MB class C raw
Voice logs kirro kirro local-path PV pvc-905a8d2c…, Delete 456 KB class C raw
SQLite and model data adhigrahan-radar static PV adhigrahan-radar-data-pvc-vps, hostPath /srv/data/adhigrahan-radar-data, Retain 23 MB class C raw plus consistent vivaad.db copy
Corpus meghmitra local-path PV pvc-a5b3a672…, Retain 4 KB none
Grafana monitoring PV pv-grafana, hostPath /var/lib/k8s-monitoring/grafana, Retain 52 MB class C raw plus consistent grafana.db copy

The vcap-staging, vcap-dev, vcap-v1, bitvault, rankstack, and kirro workloads are gone. Their namespaces, PVCs, PVs, Secrets, and data remain. Their Postgres and Mongo trees are static. Do not start a server on a retained tree. Copy it first. See the restore runbooks.

The meghmitra Postgres workload is also gone. The data remains. The adhigrahan-radar workload replaced the old meghmitra application and is live.

Namespace vcap-v1 also keeps these objects:

The vcap-v1 Postgres 16 data is in the pgdata/ directory. Postgres stopped cleanly before the retirement. No postmaster.pid file exists. The final dump has mode 600. It holds 58 tables and 104 live rows. Its gzip check passed. The local-path host directory for the application data is /var/lib/rancher/k3s/storage/pvc-d4b91391-4691-43c4-9590-6bbe1ddf0ad9_vcap-v1_vcap-backend-v1-data.

The namespace is still declared in k8s/platform/storage/namespaces-tenants.yaml.

Disposable and infrastructure data

Dataset Backing Size Backup
Prometheus TSDB PV pv-prometheus, /var/lib/k8s-monitoring/prometheus, Retain 3.8 GB none
Loki chunks PV pv-loki, /var/lib/k8s-monitoring/loki, Retain 3.4 GB none
etcd /var/lib/rancher/k3s/server/db 546 MB restic --tag etcd, 5 local + 14 offsite
k3s token and TLS /var/lib/rancher/k3s/server/{token,tls} 216 KB same restic snapshot as etcd

Prometheus and Loki are disposable. Their loss does not affect an application dataset.

Space

Measured 2026-10-23:

Storage configuration

Backup coverage

Class A runs every 30 minutes. Class C runs daily. See backups.md for the exact targets and retention.

Not backed up:

Known gaps

meghmitra-data-pvc is empty

PV meghmitra-data-pvc-vps is Bound and claims hostPath /srv/data/meghmitra-data. The directory exists. The Ansible data_volume role created it on 2026-10-23. It is empty. The PVC has no recoverable content. Do not delete the PVC or the PV. The binding records the configured intent, and a future restoration may write data to the path. No backup target exists for it because there is no data to read.

smart-home-system-api is out of this inventory

The deployment is scaled to zero by KEDA. It has a PVC in both its own namespace and default. This predates the retirement. Leave it alone unless a separate task takes it.

Historical notes