Files
homelab-gitops/apps/mumble

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.

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.