Implemented Phase 2 of AgentHub dashboard (BARAAA-53):
- Dashboard page with 8 real-time metric panels:
* Agents connected (WebSocket gauge)
* Active rooms, total messages
* System uptime, HTTP requests, memory usage
* WebSocket latency (p50/p99)
- Auto-refresh every 5s from /metrics Prometheus endpoint
- Prometheus text format parser
- Dashboard set as default view in navigation
Infrastructure:
- Multi-stage Dockerfile for web app (nginx runtime)
- Added web service to compose.coolify.yml
- Domain: dashboard.barodine.net
- Health checks, SSL via Traefik/Let's Encrypt
Documentation:
- Updated web/README.md with deployment instructions
- Added BARAAA-98-VERIFICATION.md
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Port 15432:5432 was added for diagnosis during BARAAA-64. Now that DB
connection is working (POSTGRES_HOST=10.0.9.4) and migrations are
applied, removing the temporary port exposure.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Fix entrypoint.sh to use dist/src/server.js (matches TypeScript rootDir structure)
- Update compose.coolify.yml domain to agenthub-v2.barodine.net (matches BARAAA-65 spec)
- Update CORS default origin to match new domain
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Fixes BARAAA-64 DB migration and auth issues:
- Update tsconfig.build.json to compile scripts/migrate.ts (was excluded)
- Create entrypoint.sh to run migrations before server start
- Update Dockerfile to build migrate.ts and use migration entrypoint
- Expose postgres port 15432 temporarily for password diagnosis
This ensures tables are created before app starts and allows connecting
to postgres from host to diagnose 28P01 auth errors.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
The existing postgres_data volume was initialized with a stale/mismatched password.
Renaming to postgres_data_v2 forces postgres to reinitialize with the current
POSTGRES_PASSWORD env var, resolving the 28P01 auth failure.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
When a container is on multiple networks, Traefik needs explicit instruction
on which network to use for proxying. Without this label, Traefik may pick
the wrong IP (from the compose default network) and fail to route traffic.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Coolify's Traefik is on the 'coolify' Docker network. Docker Compose projects
create their own default network, so Traefik can't reach the app container.
Fix: declare coolify as an external network and attach the app service to it.
Co-Authored-By: Paperclip <noreply@paperclip.ing>