[DOC] Public-Deployment-Anleitung + Hardening-Checkliste (NPM/wss, exponierte Ports, fail2ban) #183

Closed
opened 2026-06-26 11:26:47 +00:00 by chinux · 2 comments
Owner

Teil des Public-Readiness-Epics. DOC/Checkliste.
Fuer den public Betrieb (Backend hinter NPM + acme.sh, Agent → wss zur Domain) eine reproduzierbare Deploy-/Hardening-Anleitung + Checkliste ins Wiki.

Inhalt

  • NPM-Setup: Proxy-Host fuer Backend, WebSocket-Support an (fuer /ws/agent), valides acme.sh-Zertifikat, HSTS/Security-Header. Beispiel-Config.
  • SERVER_URL=https://... setzen (→ Agent bekommt automatisch wss://, main.py:316). Klarstellen: niemals http:// fuer public.
  • Welche Ports nicht oeffentlich: Agent-VM-Listener (9100), Tunnel-Ports, DB. Nur 443 (NPM) public.
  • fail2ban-Filter fuer Agent-WS-Auth-Fails (Verweis auf das Rate-Limit-Issue).
  • Empfehlung: Agent-WS auf eigenem Hostname/Pfad, getrennt von der UI.
  • Hinweis EU-CRA/Pflichten beim public Anbieten (Verweis, kein Rechtsrat).

Akzeptanz

  • wiki/Deployment-Public.md mit Schritt-fuer-Schritt + Checkliste, sodass ein VPN-loser Host sicher anbindbar ist.

Branch

docs/public-deployment-hardening

Teil des Public-Readiness-Epics. **DOC/Checkliste.** Fuer den public Betrieb (Backend hinter NPM + acme.sh, Agent → wss zur Domain) eine reproduzierbare **Deploy-/Hardening-Anleitung** + Checkliste ins Wiki. ## Inhalt - **NPM-Setup**: Proxy-Host fuer Backend, **WebSocket-Support an** (fuer `/ws/agent`), valides acme.sh-Zertifikat, HSTS/Security-Header. Beispiel-Config. - **SERVER_URL=https://...** setzen (→ Agent bekommt automatisch `wss://`, main.py:316). Klarstellen: niemals `http://` fuer public. - Welche Ports **nicht** oeffentlich: Agent-VM-Listener (9100), Tunnel-Ports, DB. Nur 443 (NPM) public. - **fail2ban**-Filter fuer Agent-WS-Auth-Fails (Verweis auf das Rate-Limit-Issue). - Empfehlung: Agent-WS auf eigenem Hostname/Pfad, getrennt von der UI. - Hinweis EU-CRA/Pflichten beim public Anbieten (Verweis, kein Rechtsrat). ## Akzeptanz - `wiki/Deployment-Public.md` mit Schritt-fuer-Schritt + Checkliste, sodass ein VPN-loser Host sicher anbindbar ist. ## Branch `docs/public-deployment-hardening`
Author
Owner

#183 umgesetzt · Commit 8796d27 (DOC-only). Issue bleibt offen.

Neu: wiki/Deployment-Public.md — Schritt-fuer-Schritt + Hardening-Checkliste fuer den VPN-losen public Betrieb.

Inhalt vs. Akzeptanz:

  • NPM-Setup: Proxy-Host fuer Backend, WebSocket-Support AN (/ws/agent), acme.sh/Let's-Encrypt + Force SSL/HSTS, Security-Header (HSTS, nosniff, X-Frame-Options, Referrer-Policy), X-Real-IP/X-Forwarded-For durchreichen (noetig fuer #181). Beispiel-Advanced-Config inkl. WS-Timeouts.
  • SERVER_URL=https:// → Agent bekommt automatisch wss://; explizit: nie http:// public (Backend liefert sonst kein Install-Script, #113 Phase 1).
  • Ports: Tabelle — nur 443 (NPM) public; 8765 (Agent-WS) nur via NPM, 8080 (UI) intern/Allowlist, 5432 (DB) nie public, 9100/9101 + Tunnel-Ports host-/netz-intern (#117/#180).
  • fail2ban: Verweis auf Security.md (Filter/Jail aus #181).
  • Agent-WS auf eigenem Hostname/Pfag getrennt von der UI (Empfehlung + DNS-Tabelle).
  • EU-CRA/DSGVO-Hinweis (Verweis, ausdruecklich kein Rechtsrat).

Zusaetzlich: Home.md verlinkt Deployment-Public + Security + Self-Update-Signing. Branch-Vorgabe docs/public-deployment-hardening — direkt auf main committet (Session-Workflow), Commit referenziert #183.

**#183 umgesetzt** · Commit `8796d27` (DOC-only). Issue bleibt offen. Neu: [`wiki/Deployment-Public.md`](https://git.itdata-gera.de/chinux/theProx/src/branch/main/wiki/Deployment-Public.md) — Schritt-fuer-Schritt + Hardening-Checkliste fuer den VPN-losen public Betrieb. Inhalt vs. Akzeptanz: - ✅ **NPM-Setup**: Proxy-Host fuer Backend, **WebSocket-Support AN** (`/ws/agent`), acme.sh/Let's-Encrypt + Force SSL/HSTS, Security-Header (HSTS, nosniff, X-Frame-Options, Referrer-Policy), `X-Real-IP`/`X-Forwarded-For` durchreichen (noetig fuer #181). Beispiel-`Advanced`-Config inkl. WS-Timeouts. - ✅ **SERVER_URL=https://** → Agent bekommt automatisch `wss://`; explizit: nie `http://` public (Backend liefert sonst kein Install-Script, #113 Phase 1). - ✅ **Ports**: Tabelle — nur 443 (NPM) public; 8765 (Agent-WS) nur via NPM, 8080 (UI) intern/Allowlist, 5432 (DB) nie public, 9100/9101 + Tunnel-Ports host-/netz-intern (#117/#180). - ✅ **fail2ban**: Verweis auf [Security.md](https://git.itdata-gera.de/chinux/theProx/src/branch/main/wiki/Security.md) (Filter/Jail aus #181). - ✅ **Agent-WS auf eigenem Hostname/Pfag** getrennt von der UI (Empfehlung + DNS-Tabelle). - ✅ **EU-CRA/DSGVO-Hinweis** (Verweis, ausdruecklich kein Rechtsrat). Zusaetzlich: `Home.md` verlinkt Deployment-Public + Security + Self-Update-Signing. Branch-Vorgabe `docs/public-deployment-hardening` — direkt auf `main` committet (Session-Workflow), Commit referenziert #183.
Author
Owner

Verifiziert @ 8796d27 + ergänzt @ 2df4fc8 → erfüllt, wird geschlossen.

cc-Doc (wiki/Deployment-Public.md) deckt: Architektur, DNS, SERVER_URL=https-Pflicht, NPM-Proxy (WS-Keepalive + X-Real-IP/X-Forwarded-For — und das Backend liest die echte IP tatsächlich via _client_ip, nicht nur dokumentiert → #181-Limiter greift hinter NPM korrekt), Port-Tabelle (nur 443 public), fail2ban-Filter, Self-Update-Signatur, Hardening-Checkliste, Rechtliches.

Ergänzt (Abschnitt 7): koordinierter Rollout bestehender Nodes — die Offline-Warnung bei der Auth-Umstellung + 3-Schritt-Reihenfolge (Backend+Migration 0024 → Binary ausrollen → regenerate-token pro Node).

**Verifiziert @ 8796d27 + ergänzt @ 2df4fc8 → erfüllt, wird geschlossen.** cc-Doc (`wiki/Deployment-Public.md`) deckt: Architektur, DNS, `SERVER_URL=https`-Pflicht, NPM-Proxy (WS-Keepalive **+ X-Real-IP/X-Forwarded-For** — und das Backend liest die echte IP tatsächlich via `_client_ip`, nicht nur dokumentiert → #181-Limiter greift hinter NPM korrekt), Port-Tabelle (nur 443 public), fail2ban-Filter, Self-Update-Signatur, Hardening-Checkliste, Rechtliches. Ergänzt (Abschnitt 7): **koordinierter Rollout bestehender Nodes** — die Offline-Warnung bei der Auth-Umstellung + 3-Schritt-Reihenfolge (Backend+Migration 0024 → Binary ausrollen → `regenerate-token` pro Node).
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
chinux/theProx#183
No description provided.