Add empty short_id, SpiderX in share links, and post-keygen render reminder so server config stays in sync with .env.
Co-authored-by: Cursor <cursoragent@cursor.com>
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>
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>
Add Flask panel with login, add/delete nodes, and share link copy.
Generate sing-box config from SQLite; add uninstall script and clean install flow.
Panel served at https://DOMAIN:8444 via nginx.
Co-authored-by: Cursor <cursoragent@cursor.com>