# Mumble Argo CD deploys Mumble and its CloudNativePG cluster in the `mumble` namespace. The published `brunner.ninja/mumble` chart owns the workload, TCP/UDP Services, probes, configuration rendering, and optional PostgreSQL modes. GitOps selects the chart version and supplies this cluster's addresses, registration details, Secret names, and PostgreSQL endpoint. ## PostgreSQL and credentials `mumble-postgresql` is a one-instance CloudNativePG cluster using PostgreSQL 18.6 and an 8 GiB Ceph RBD claim. Mumble connects to `mumble-postgresql-rw.mumble.svc.cluster.local`. The `mumble-secrets` Secret in this namespace supplies both Mumble's application credentials and the CloudNativePG bootstrap username/password. It was copied from the prior `default/mumble-secrets` by the guarded source-repository helper; neither Secret's values are stored in this public repository. The TLS Secret `brunner-ninja-tls` is produced by the namespace-local Certificate and `letsencrypt-dns` ClusterIssuer. The new PVC `mumble-postgresql-1` is UID `c979de80-a2bf-41ae-91a6-96034ee9277d`, bound to PV `pvc-c979de80-a2bf-41ae-91a6-96034ee9277d`. The old default-namespace claim remains separately bound and untouched for rollback. ## Networking The LoadBalancer Service exposes TCP/UDP 64738 and retains the MikroTik operator annotations; Kubernetes dynamically allocated `192.168.0.14` after the move. Do not pin that address. The chart's `mumble-funkfeuer` Service keeps the direct addresses `10.12.4.170` and `192.168.0.2`. Both Services select the Mumble Pod in this namespace. ## Migration and recovery On 2026-10-25, the old Mumble Deployment was stopped before the final database dump. The final custom-format dump is at `/mnt/backup/mumble-migration-20261025T065619Z/final-cutover.dump` on `arschrock` (mode 0600), and its archive was validated with `pg_restore --list`. All 14 application table counts matched after restore, including 34 users, 18 channels, and 6,536 log rows. The server was then started against the new database. The pre-cutover snapshot is in the same directory. The first complete scheduled-format backup was also verified on 2026-10-25: `/mnt/backup/kubernetes/postgresql/mumble/2026-10-25T06-59-24Z/`. The Job ran on `arschrock`, wrote a `complete` marker, and its database archive passed `pg_restore --list`. The daily backup CronJob refuses to write unless the `/mnt/backup` host mount is bcachefs. The old `default/data-mumble-postgresql-0` PVC is retained for rollback (UID `6d0c591f-9aae-4932-8f94-ebf5ec1032a8`, PV `pvc-6d0c591f-9aae-4932-8f94-ebf5ec1032a8`). Its StatefulSet is retired after the new cluster and backup were verified; do not delete this PVC or its PV without an explicit recovery decision. The old `default/mumble-secrets` and `default/mumble-postgres` Secrets are likewise retained as cold rollback material. To roll back, quiesce the new Mumble writer, preserve a fresh dump of new writes, then restore/reconnect the old database before starting the old server. Never run both Mumble servers as writers at once.