Force nginx to pass the domain as Host, add PANEL_DOMAIN fallback in Flask,
and document that the admin panel must be accessed over HTTP not HTTPS.
Co-authored-by: Cursor <cursoragent@cursor.com>
Match connections by multiple auth keys, fall back to global traffic for
single-node setups, and document offline-status troubleshooting.
Co-authored-by: Cursor <cursoragent@cursor.com>
Official sing-box binaries lack v2ray_api, so drop that config and grpcio
and track per-node traffic from Clash connection stats instead.
Co-authored-by: Cursor <cursoragent@cursor.com>
Enable sing-box Clash/V2Ray APIs for per-user metrics, persist cumulative
traffic in SQLite, and refresh the dashboard every five seconds.
Co-authored-by: Cursor <cursoragent@cursor.com>
Route the panel through a secret subpath on port 80, remove the separate
8444 listener, and document common troubleshooting in docs.
Co-authored-by: Cursor <cursoragent@cursor.com>