Keenetic routers are aarch64 but Ground-Zerro only ships x86_64. Installer
now copies all Ground-Zerro binaries + fetches missing arm64/mipsel/armv7
from ClusterM/wg-obfuscator latest release so action_package includes the
right binary for every router architecture.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The secondary agent api.py was not included in the update manifest, so
phobos-update left stale api.py on the server after channel switches.
Adding it ensures bandwidth-aware /api/health reaches secondaries on update.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Ports the channel UI to stable so users who installed the open stable
version can paste their subscriber token (save_token) and switch to
beta/dev straight from Настройки → Версия и обновления. Adds
gh_token_present/save_gh_token helpers and stable/beta/dev quick buttons.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Closed channels (beta, dev) now live in a separate PRIVATE repository
andrey271192/PCA_Phobos-dev. Access is gated by a read-only subscriber
GH_TOKEN (distributed via Boosty) instead of a shared hash key — the
token both authenticates the private raw fetch AND acts as the gate, so
there is a single secret and the code is genuinely hidden (public repo
holds stable/main only).
install.sh: CHANNEL=beta|dev -> private repo, requires GH_TOKEN, persists
it to $PANEL_DIR/.gh_token + writes .channel. stable stays public/no-token.
update.sh: per-ref repo routing (repo_for), gh_curl injects the token for
private channels, token read from env or saved .gh_token, --check/--versions
reflect public vs private, stable path unchanged and tokenless.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Channels:
stable -> branch main (open, no key)
beta -> branch beta (release candidate, key-gated)
dev -> branch dev (active development, key-gated)
beta and dev require PHOBOS_KEY (subscriber key distributed via Boosty);
only the sha256 hash is embedded in install.sh / update.sh. stable stays
open. install.sh honours CHANNEL=stable|beta|dev; phobos-update accepts
stable|beta|dev|<tag> and gates the closed channels. --check now lists all
three channels with a [закрыт ключом] marker.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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>