Initial commit: Nexus Mission Control Platform
- ASP.NET Core 10 Backend (JWT Auth, Agent config API) - Vue 3 Frontend (Dashboard, Team, Agents, Config Editor) - PostgreSQL Database - Docker Compose setup - Mission Control Dashboard redesign
This commit is contained in:
@@ -0,0 +1,155 @@
|
||||
# Nexus Phase 1 Deployment Plan
|
||||
|
||||
> Generiert: 2026-06-09T02:49 CEST | Agent: architekt
|
||||
|
||||
## Status: ✅ Bereit zum Deployment
|
||||
|
||||
### Build-Artefakte
|
||||
|
||||
| Komponente | Build-Methode | Status |
|
||||
|---|---|---|
|
||||
| Backend | Docker Multi-Stage (`dotnet publish` in Container) | ✅ Dockerfile bereit |
|
||||
| Frontend | Docker Multi-Stage (`pnpm build` in Container) | ✅ Dockerfile bereit |
|
||||
| Compose | `compose.yaml` | ✅ 3 Services definiert |
|
||||
| Env | `.env` | ✅ Alle Secrets gesetzt |
|
||||
|
||||
### Architektur
|
||||
|
||||
```
|
||||
┌──────────────────────────────────────────────────────┐
|
||||
│ VPS Host (Debian 12) │
|
||||
│ ┌───────────────────────────────────────────────┐ │
|
||||
│ │ Docker Network: nexus │ │
|
||||
│ │ ┌─────────┐ ┌──────────┐ ┌────────────┐ │ │
|
||||
│ │ │postgres │ │ api │ │ web │ │ │
|
||||
│ │ │ :5432 │ │ :8080 │ │ :80 │ │ │
|
||||
│ │ │ 17-alp. │ │ .NET 10 │ │ nginx 1.27 │ │ │
|
||||
│ │ └─────────┘ └──────────┘ └─────┬──────┘ │ │
|
||||
│ │ │ │ │
|
||||
│ └───────────────────────────────────┼───────────┘ │
|
||||
│ │ │
|
||||
│ 127.0.0.1:18880 │
|
||||
│ │ │
|
||||
│ ┌───────────────────────────┼───────────────────┐ │
|
||||
│ │ Host nginx reverse proxy │ │ │
|
||||
│ │ nexus.noveria.net :443 ───┘ │ │
|
||||
│ └───────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌───────────────────────────────────────────────┐ │
|
||||
│ │ OpenClaw Gateway (Container) │ │
|
||||
│ │ Port 18789 ← host.docker.internal │ │
|
||||
│ └───────────────────────────────────────────────┘ │
|
||||
└──────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 1. Deployment (vom VPS-Host ausführen)
|
||||
|
||||
```bash
|
||||
# Ins Nexus-Verzeichnis wechseln
|
||||
cd /opt/openclaw/data/openclaw/workspace/nexus
|
||||
|
||||
# Prüfen ob compose.yaml und .env da sind
|
||||
ls -la compose.yaml .env
|
||||
|
||||
# Deployment starten
|
||||
docker compose up -d --build
|
||||
|
||||
# Logs verfolgen
|
||||
docker compose logs -f
|
||||
```
|
||||
|
||||
**Erwartet:**
|
||||
- 3 Container starten: `postgres`, `api`, `web`
|
||||
- PostgreSQL wird healthy
|
||||
- API migriert Datenbank und seedet Owner-Account
|
||||
- Web (nginx) lauscht auf `127.0.0.1:18880`
|
||||
|
||||
---
|
||||
|
||||
## 2. Post-Deployment-Verifikation
|
||||
|
||||
### 2.1 Health Check
|
||||
```bash
|
||||
curl -s https://nexus.noveria.net/health | jq
|
||||
```
|
||||
Erwartet: JSON mit `status: "Healthy"`, DB-Check `healthy`, OpenClaw-Check Status.
|
||||
|
||||
### 2.2 Agent-Inventar
|
||||
```bash
|
||||
curl -s https://nexus.noveria.net/api/v1/agents | jq
|
||||
```
|
||||
Erwartet: Array von Agenten oder leere Liste (404/401 möglich vor Login).
|
||||
|
||||
### 2.3 SPA-Routing
|
||||
```bash
|
||||
curl -sI https://nexus.noveria.net/dashboard | head -20
|
||||
```
|
||||
Erwartet: HTTP 200, `content-type: text/html` (nginx liefert `index.html` für alle Routes).
|
||||
|
||||
### 2.4 API-Dokumentation
|
||||
```bash
|
||||
curl -sI https://nexus.noveria.net/swagger/index.html
|
||||
```
|
||||
|
||||
### 2.5 Container-Status
|
||||
```bash
|
||||
docker compose ps
|
||||
```
|
||||
Erwartet: Alle 3 Services `Up` (healthy).
|
||||
|
||||
---
|
||||
|
||||
## 3. Gateway-Neustart
|
||||
|
||||
Nach erfolgreichem Deployment muss der OpenClaw-Gateway neu gestartet werden, damit der Researcher-Agent aktiv wird.
|
||||
|
||||
⚠️ **Kein `docker restart` möglich** — kein Docker-Socket im Gateway-Container.
|
||||
|
||||
**Im Gateway-Container (über OpenClaw-Session):**
|
||||
```bash
|
||||
PID=$(pgrep -f "node dist/index.js gateway" | head -1)
|
||||
kill -HUP $PID
|
||||
```
|
||||
|
||||
> Der Gateway-Container hat `restart: unless-stopped` in seiner eigenen Compose-Konfiguration. Ein `kill` (SIGTERM) auf den Node-Prozess führt automatisch zum Container-Neustart via Docker. Für graceful reload ist `kill -HUP` bevorzugt.
|
||||
|
||||
---
|
||||
|
||||
## 4. Troubleshooting
|
||||
|
||||
### API startet nicht
|
||||
```bash
|
||||
docker compose logs api
|
||||
```
|
||||
Häufige Ursachen:
|
||||
- PostgreSQL nicht healthy → `docker compose logs postgres`
|
||||
- JWT_KEY / DB-Passwort falsch
|
||||
|
||||
### Web nicht erreichbar
|
||||
```bash
|
||||
# Prüfen ob nginx im Container läuft
|
||||
docker compose exec web nginx -t
|
||||
# Prüfen ob Port gebunden ist
|
||||
ss -tlnp | grep 18880
|
||||
```
|
||||
|
||||
### Host nginx Reverse Proxy
|
||||
Falls `nexus.noveria.net` nicht erreichbar:
|
||||
- Host nginx Config prüfen: Proxy-Pass auf `http://127.0.0.1:18880`
|
||||
- TLS-Zertifikat gültig?
|
||||
|
||||
---
|
||||
|
||||
## Abhängigkeiten
|
||||
|
||||
| Was | Status |
|
||||
|---|---|
|
||||
| compose.yaml | ✅ Vorhanden |
|
||||
| .env mit Secrets | ✅ Vorhanden |
|
||||
| backend/Dockerfile | ✅ Multi-Stage .NET 10 |
|
||||
| frontend/Dockerfile | ✅ Multi-Stage Node 24 + nginx |
|
||||
| frontend/nginx.conf | ✅ CSP, Proxy, SPA-Routing |
|
||||
| Host nginx Reverse Proxy | ⚠️ Muss auf Port 18880 zeigen |
|
||||
| Docker installiert auf VPS | ⚠️ Vorausgesetzt |
|
||||
Reference in New Issue
Block a user