Panel now gets a random port (10000-59999) instead of fixed 8443.
Harder to find via port scanning, avoids conflicts with existing services.
Port saved to /opt/phobos-panel/.port for reference.
Override with PANEL_PORT=xxxxx env var.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Servers page: descriptions for API key, VPN servers table, secondary setup
- Labels page: explain what labels do and where they appear
- Delete buttons: show "Удалить" text instead of just ✕, add confirm dialogs
- Fix duplicate nav link on servers page
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Ports 51821-51823 look like WireGuard to port scanners.
New ports mimic cPanel/HTTPS/IMAPS — less suspicious.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- client/phobos-health.sh: router-side health monitor + auto-heal
- Cron every 60s, checks WG handshake age
- Auto-restart obfuscator (3min), WireGuard (5min)
- Port hopping (10min), server failover (15min)
- Auto-return to primary when recovered
- client/failover.conf.example: multi-server config template
- server/secondary-setup.sh: one-command secondary server deploy
- WG + multi-port obfuscator + mini-API on :8444
- Auto-registers with main server
- Panel: new "Серверы" page
- Add/remove secondary servers
- Health check, peer sync, fetch info
- API key management
- Secondary server install command
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Settings page reads /opt/Phobos/tokens/tokens.json for real install commands
- Uses wget (available on BusyBox/Keenetic) instead of curl in displayed commands
- Shows client name and token expiry for each install command
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Flask web panel for Phobos (wg-obfuscator + WireGuard):
- Active sessions monitoring (wg show)
- Client management (add/remove via phobos-client.sh)
- Labels by Real IP
- Subscription expiry with auto-kick
- Telegram notifications (connect/disconnect/expiry)
- One-command installer
- Dark theme UI
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>