fix(m3-hermes): stable Matrix device + DNS pin for homeserver #24

Closed
m3ta-chiron wants to merge 1 commits from fix/matrix-stable-token-dns-pin into master
2 changed files with 21 additions and 0 deletions
+12
View File
@@ -13,6 +13,18 @@
networking.hostName = "m3-hermes";
networking.hostId = "a1b2c3d4"; # TODO: Generate unique hostId
networking.networkmanager.enable = true;
# Matrix homeserver pin: DNS on this host resolves exclusively via the
# Netbird-managed resolver (see /etc/resolv.conf → wt0). When the Netbird
# nameserver group is unreachable, matrix.m3ta.dev fails to resolve and the
# gateway cannot log in (observed 2026-08-16). Pinning the public IP of
# m3-atlas (TLS termination for matrix.m3ta.dev) makes the Matrix connection
# independent of Netbird DNS health. Update here if the m3-atlas public IP
# ever changes.
networking.hosts = {
"152.53.85.162" = ["matrix.m3ta.dev"];
};
time.timeZone = "Europe/Berlin";
i18n.defaultLocale = "en_US.UTF-8";
@@ -104,6 +104,15 @@ in {
GIT_COMMITTER_EMAIL = "m3ta-chiron@agentmail.to";
GIT_INIT_DEFAULT_BRANCH = "master";
# ── Matrix: stable device (Fix 0, root cause of ghost-device churn) ──
# Every gateway restart with password login creates a NEW device on the
# homeserver when MATRIX_DEVICE_ID is unset. The matching secret
# MATRIX_ACCESS_TOKEN lives in agenix (secrets/hermes-env.age). The token
# also keeps Matrix in the gateway's reconnect queue: without it, a
# failed startup (e.g. transient DNS outage) permanently drops the
# platform ("no bot credential on queued config").
MATRIX_DEVICE_ID = "HERMES01";
# ── API Server (OpenAI-compatible, for Hermes Desktop App) ─────────
# Accessible via Netbird mesh VPN — not exposed to the public internet.
# Bind to 0.0.0.0 so the Netbird interface can reach it.