infra: rongorongo state-sync backend + Traefik basicAuth

Add a Flask backend service for cross-device state persistence, storing
JSON state on an NFS volume at /mnt/docker-data/configs/rongorongo/data.
Frontend Dockerfile/nginx.conf reorganised into frontend/ subdirectory;
frontend API calls now route to /api/* handled by the backend container
over a dedicated bridge network. Traefik basicAuth middleware added to
the public URL with the bcrypt hash deliberately kept out of git
(REPLACE_AT_DEPLOY placeholder in rongorongo.yml). Prometheus probe moved
from https-external to internal http://192.168.86.192:8181/health to
bypass the new auth wall.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-07 18:51:47 -05:00
parent 795908e1ef
commit a908973264
10 changed files with 354 additions and 34 deletions
+1 -1
View File
@@ -70,6 +70,7 @@ scrape_configs:
- http://192.168.86.192:9093 # Alertmanager
- http://192.168.86.192:18795 # Spirit (infra ops agent)
- http://192.168.86.192:8085 # VoiceCoach web client
- http://192.168.86.192:8181/health # Rongorongo (probe internal — Traefik basicAuth blocks external)
- http://192.168.86.192:7880 # VoiceCoach LiveKit server
relabel_configs:
- source_labels: [__address__]
@@ -153,7 +154,6 @@ scrape_configs:
- https://vault.hobbs.farm # Vaultwarden
- https://git.hobbs.farm # Gitea
- https://coach.hobbs.farm # VoiceCoach web client
- https://rongorongo.hobbs.farm # Rongorongo decipherment engine
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
+7
View File
@@ -5,6 +5,7 @@ http:
entryPoints:
- websecure
middlewares:
- rongorongo-auth
- security-headers
service: rongorongo
tls:
@@ -21,6 +22,12 @@ http:
redirectScheme:
scheme: https
permanent: true
rongorongo-auth:
basicAuth:
realm: "rongorongo.hobbs.farm"
# users entries are appended at deploy time as: <user>:<bcrypt-hash>
users:
- "REPLACE_AT_DEPLOY"
services:
rongorongo:
loadBalancer: