fix(diagnostic): Nach Bridge-Neustart nicht mehr ohne Netz haengen bleiben

Die Diagnostic teilt das Netz der Bridge. Startet die Bridge neu (Liveness-
Self-Kill bei RVS-Ausfall), blieb der alte Namensraum zurueck: nur lo, Port
3001 tot, Container trotzdem "Up". Fehlt das Netz dreimal in Folge, beendet
sich die Diagnostic jetzt, und Docker startet sie im aktuellen Netz neu.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-05 08:39:40 +01:00
co-authored by Claude Opus 5.5
parent f28c0e2b90
commit 6137769d91
+28
View File
@@ -17,6 +17,7 @@ const { WebSocket, WebSocketServer } = require("ws");
const crypto = require("crypto");
const fs = require("fs");
const path = require("path");
const os = require("os");
const vpn = require("./vpn");
// ── Konfiguration ───────────────────────────────────────
@@ -2630,6 +2631,33 @@ setInterval(checkDiskSpace, 30000);
// Watchdog entfernt — war auf aria-core/OpenClaw zugeschnitten (doctor --fix,
// docker restart aria-core). Der Brain-Loop bekommt seinen eigenen Health-Check.
// ── Netz-Waechter ───────────────────────────────────────
// Die Diagnostic teilt das Netz der Bridge (network_mode: service:bridge).
// Startet die Bridge neu (z.B. Liveness-Self-Kill bei RVS-Ausfall), bleibt hier
// der alte Namensraum zurueck: nur noch lo, Port 3001 tot, der Container gilt
// aber weiter als "Up". Dann beenden wir uns; restart: unless-stopped startet
// uns neu, und Docker haengt uns ins aktuelle Netz der Bridge.
const NETZ_CHECK_MS = parseInt(process.env.DIAG_NETZ_CHECK_MS || "10000", 10);
const NETZ_MAX_FEHLT = 3; // mehrmals in Folge, damit die Bridge Zeit zum Hochkommen hat
function hatNetz() {
return Object.values(os.networkInterfaces()).flat().some((a) => !a.internal);
}
let netzGesehen = false; // ohne je Netz gehabt zu haben kein Beenden (z.B. lokal ohne Docker)
let netzFehlt = 0;
setInterval(() => {
if (hatNetz()) {
netzGesehen = true;
netzFehlt = 0;
return;
}
if (!netzGesehen) return;
netzFehlt++;
if (netzFehlt >= NETZ_MAX_FEHLT) {
log("error", "server", "Netz der Bridge verloren — beende mich, Docker startet mich neu");
process.exit(1);
}
}, NETZ_CHECK_MS);
// ── HTTP Server + WebSocket fuer Browser ────────────────
// ── Modell-Downloads auf LLM-Boxen ──────────────────────────────────