README: public docs — human description, features, screenshots section, update/rollback, troubleshooting table

This commit is contained in:
phobos
2026-05-30 14:33:22 +03:00
parent 9e1144d310
commit b37b4cc1a3
2 changed files with 137 additions and 116 deletions

244
README.md
View File

@@ -1,133 +1,154 @@
# PCA Phobos — Web Panel # PCA Phobos — VPN, который не отключается
Веб-панель управления для [Phobos](https://git.zerrolabs.org/Ground-Zerro/Phobos) (обфусцированный WireGuard VPN). **Веб-панель и turnkey-установщик для [Phobos](https://github.com/Ground-Zerro/Phobos)**обфусцированного WireGuard VPN. Ставится на чистый VPS одной командой, управляет десятками роутеров и устройств с одной страницы, сам переключается между серверами при сбоях и восстанавливается после перезагрузок.
## Быстрый старт (turnkey — с чистого VPS, одной командой) <p align="center">
<img src="docs/img/sessions.png" alt="Панель — активные сессии" width="850">
</p>
Ставит ВСЁ со всеми зависимостями: wg-obfuscator, WireGuard, обфускатор-сервисы, ---
веб-панель, nginx, скрипты онбординга роутеров и сторож авто-восстановления.
Предустановленный Phobos НЕ требуется. ## Что это простыми словами
Обычный VPN падает, когда падает сервер или провайдер банит IP. **PCA Phobos — нет.**
- 🌐 **Маскированный WireGuard** — трафик не отличить от обычного, проходит мимо DPI и блокировок по сигнатуре.
- 🔁 **Авто-переключение между серверами** — сервер лёг или порт прикрыли → роутер сам прыгает на резервный за ~1015 секунд, без твоего участия.
- 📡 **Работает за любым NAT** — серый IP, мобильный интернет, домашний роутер за провайдером. Управление едет внутри самого защищённого туннеля, поэтому бан публичного IP ему не страшен.
- 🖥️ **Одна команда — новое устройство** — создал клиента в панели → вставил команду на роутер → готово.
- ♻️ **Само-восстановление** — роутер перезагрузился, провайдер сменил IP, сервис отвалился → система поднимет всё обратно сама.
- 📱 **Телефоны** — Android (PhobosWG, с обфускацией) и iPhone (обычный WireGuard) через QR-код.
---
## Возможности
- **Активные сессии** — VPN IP, Real IP, метка, handshake, трафик RX/TX, Kick.
- **Клиенты VPN** — добавление/удаление, статус online (по handshake на любом сервере), назначение сервера.
- **Мульти-сервер + failover** — приоритеты, балансировка по нагрузке (CPU/RAM), резервные серверы; роутеры переключаются автоматически.
- **NAT-friendly управление** — роутеры сами тянут конфиг по туннелю (`10.25.0.1`), переживает бан публичного IP.
- **Авто-восстановление роутеров** — серверный сторож (watchdog) поднимает роутер после неудачной перезагрузки через KeenDNS.
- **Конфиги для телефона** — 📱 Android `phobos://` + QR, 🍎 iPhone обычный WireGuard + QR.
- **Метки** — имя объекта по IP (видно в сессиях и Telegram).
- **Срок подписки** — дата окончания, обратный отсчёт, автокик + предупреждения.
- **Telegram-уведомления** — подключение/отключение, сервер вверх/вниз, истечение подписки, авто-восстановление.
- **Двуязычный интерфейс** RU/EN + подсказки `?` у каждого действия.
- **Версии и обновления** — обновление и откат прямо из панели.
---
## Скриншоты
| Сессии | Клиенты | Серверы |
|--------|---------|---------|
| ![Сессии](docs/img/sessions.png) | ![Клиенты](docs/img/clients.png) | ![Серверы](docs/img/servers.png) |
> Если картинки не отображаются — положи свои PNG в `docs/img/` (`sessions.png`, `clients.png`, `servers.png`).
---
## Быстрый старт (с чистого VPS, одной командой)
Ставит **всё** со всеми зависимостями: wg-obfuscator, WireGuard, обфускатор-сервисы, веб-панель, nginx, скрипты онбординга роутеров, сторож авто-восстановления. Предустановленный Phobos **не требуется**.
```bash ```bash
bash <(curl -fsSL https://raw.githubusercontent.com/andrey271192/PCA_Phobos/main/install.sh) bash <(curl -fsSL https://raw.githubusercontent.com/andrey271192/PCA_Phobos/main/install.sh)
``` ```
> Если репозиторий приватный — добавь `GH_TOKEN`: ### С параметрами
> ```bash
> GH_TOKEN=ghp_xxx bash <(curl -fsSL -H "Authorization: token ghp_xxx" \
> https://raw.githubusercontent.com/andrey271192/PCA_Phobos/main/install.sh)
> ```
### Вторичный сервер (для failover/балансировки) ```bash
PANEL_PASS=МойПароль TG_TOKEN=123:abc TG_CHAT=123456789 \
bash <(curl -fsSL https://raw.githubusercontent.com/andrey271192/PCA_Phobos/main/install.sh)
```
| Переменная | По умолчанию | Описание |
|-------------------|-----------------|----------|
| `PANEL_PASS` | `OcAdmin2026!` | Пароль панели (логин `admin`) |
| `PANEL_PORT` | случайный | Порт веб-панели |
| `API_KEY` | случайный | Общий ключ (агенты + pull-токен роутеров) |
| `OBF_PORTS` | `2083,5443,993` | Порты обфускатора |
| `TG_TOKEN`/`TG_CHAT` | пусто | Telegram-уведомления |
| `ALLOW_PLAIN_WG` | пусто | `=1` открыть порт 51820 для iOS WireGuard (без обфускации) |
После установки панель напечатает адрес, логин, пароль и **API key** — сохрани их.
### Вторичный сервер (для failover / балансировки)
```bash ```bash
MAIN_SERVER=<ip_основного> MAIN_API_KEY=<API key из основного> \ MAIN_SERVER=<ip_основного> MAIN_API_KEY=<API key из основного> \
bash <(curl -fsSL https://raw.githubusercontent.com/andrey271192/PCA_Phobos/main/server/secondary-setup.sh) bash <(curl -fsSL https://raw.githubusercontent.com/andrey271192/PCA_Phobos/main/server/secondary-setup.sh)
``` ```
### С кастомными параметрами Затем в панели → **Серверы** → добавь его в список.
```bash
PANEL_PASS=AdminPass456 \
TG_TOKEN=1234567890:AABBCCDDaabbccdd \
TG_CHAT=123456789 \
bash <(curl -fsSL https://raw.githubusercontent.com/andrey271192/PCA_Phobos/main/install.sh)
```
| Переменная | По умолчанию | Описание |
|--------------|----------------|---------------------------------|
| `PANEL_PASS` | `OcAdmin2026!` | Пароль веб-панели (admin) |
| `TG_TOKEN` | пусто | Telegram bot token |
| `TG_CHAT` | пусто | Telegram chat ID для уведомлений|
| `PANEL_PORT` | `8443` | Порт веб-панели |
--- ---
## Возможности ## Клиенты для телефона
- **Активные сессии** — VPN IP, Real IP, handshake, трафик RX/TX, Kick В таблице **Клиенты** у каждого клиента есть кнопки:
- **Клиенты VPN** — добавить/удалить через Phobos, статус online/offline
- **Именование объектов** — привязать имя к Real IP (отображается в сессиях и Telegram) - 📱 **Android**`phobos://`-ссылка + QR для приложения **PhobosWG** (с обфускацией). Скан QR → импорт.
- **Срок подписки** — дата окончания для каждого клиента: - 🍎 **iPhone / iOS**обычный WireGuard-конфиг + QR для официального WireGuard (**без** обфускации). Требует открытого порта 51820 (`ALLOW_PLAIN_WG=1` при установке).
- Date picker в таблице клиентов
- Обратный отсчёт (18д, 3д⚠, завтра⚠️, истёк⛔) > Для каждого устройства создавай **отдельного клиента** (свой ключ и IP). Один конфиг на двух устройствах = конфликт ключей.
- При истечении: автокик + Telegram уведомление
- Предупреждения за 3 дня и 1 день ---
- **Telegram уведомления** — 🟢 подключение, 🔴 отключение, ⚠️ за 3 дня, ⛔ истёк
- **Настройки** — смена пароля панели, Telegram bot token + chat ID, интервал мониторинга ## Обновление и откат
- **Инфо о сервере** — порты, пути, команда установки на роутер
Проект версионируется (см. файл `VERSION` и git-теги `vX.Y.Z`).
**Из панели:** Настройки → «Версия и обновления» → **Обновить** / **Откатить**.
**Из консоли:**
```bash
phobos-update # обновить до последней версии
phobos-update v1.1.0 # обновить до конкретной версии (git tag)
phobos-update --rollback # откатить на предыдущую версию
phobos-update --version # показать установленную и доступную версию
phobos-update --list # список бэкапов
```
Обновляется только слой панели и скриптов. **Ключи WireGuard, `server.env` и клиенты не трогаются.** Перед каждым обновлением делается бэкап → откат восстанавливает его.
---
## Возможные проблемы и решения
| Симптом | Причина | Решение |
|---------|---------|---------|
| **Команда установки → 403 / не качается** | репозиторий приватный | Сделай репозиторий публичным, либо ставь с токеном: `GH_TOKEN=ghp_xxx bash <(curl -fsSL -H "Authorization: token ghp_xxx" .../install.sh)` |
| **Панель не открывается** | панель перезапускалась (обновление) / сервер недоступен | Подожди 5 сек, обнови страницу. Проверь: `systemctl status phobos-panel` |
| **Клиент Offline, хотя работает** | роутер на резервном сервере | Норма — статус считается по handshake на **любом** сервере; обнови страницу |
| **«SSH timeout» при тесте роутера** | роутер за NAT, входящий SSH закрыт | Это нормально — управление идёт по pull-каналу через туннель, SSH не нужен |
| **У роутера нет интернета на LAN-устройствах** | WG-интерфейс `private` / нет привязки устройства к политике | На роутере: `security-level public` + `ip hotspot host <mac> policy <PolicyName>`; health-скрипт чинит это сам в течение ~5 мин |
| **Роутер не поднялся после перезагрузки** | Entware/USB не запустил автозагрузку | Сторож (watchdog) поднимет за ~3 мин (нужны KeenDNS + web-логин роутера в `router_access`), либо перезагрузи роутер ещё раз |
| **iPhone не подключается по `phobos://`** | на iOS нет приложения-обфускатора | Используй 🍎-конфиг (обычный WireGuard) + открой 51820 (`ALLOW_PLAIN_WG=1`) |
| **Смена сервера применяется не сразу** | роутер тянет конфиг по cron | Применяется за ~1215 сек, не мгновенно |
| **Забыл порт панели** | случайный порт | `cat /opt/phobos-panel/.port` |
| **Забыл API key** | | `grep server_api_key /opt/phobos-panel/settings.json` |
Логи: `journalctl -u phobos-panel -n 50` · сторож: `/opt/Phobos/server/watchdog.log` · роутер: `/opt/etc/Phobos/health.log`.
--- ---
## Архитектура ## Архитектура
``` ```
Keenetic Router → wg-obfuscator (client) → :51821 → wg-obfuscator (server) → :51820 WireGuard → Internet Телефон/Роутер → wg-obfuscator (клиент) ──обфускация──► сервер :2083/5443/993
│ де-обфускация
10.25.0.x WireGuard :51820
│ 10.25.0.x
Web Panel :8443 ┌──────────┴──────────┐
(Flask + Gunicorn) Веб-панель Failover на
``` (Flask+Gunicorn) резервные серверы
- Протокол: WireGuard + wg-obfuscator (обфускация от DPI)
- Аутентификация: ключевые пары (нет паролей — только WireGuard ключи)
- Подсеть VPN: `10.25.0.0/16`
- Мониторинг сессий: каждые 30 сек (настраивается)
---
## Управление
```bash
# Phobos (VPN)
phobos # Интерактивное меню
systemctl status wg-quick@wg0 # WireGuard
systemctl status wg-obfuscator # Обфускатор
wg show wg0 # Активные peers
# Веб-панель
systemctl status phobos-panel
systemctl restart phobos-panel
journalctl -u phobos-panel -f
```
---
## Структура файлов
```
/opt/Phobos/
├── clients/ # Клиенты VPN (ключи, конфиги)
│ └── {name}/
│ ├── metadata.json
│ ├── {name}.conf
│ └── wg-obfuscator.conf
├── server/
│ ├── server.env # Конфигурация сервера
│ └── wg-obfuscator.conf
└── repo/server/scripts/
└── phobos-client.sh # Управление клиентами
/opt/phobos-panel/
├── app.py # Flask веб-панель
├── settings.json # Настройки (пароль, Telegram, метки, сроки)
└── .secret_key # Ключ сессии
/etc/wireguard/
└── wg0.conf # WireGuard конфигурация
```
---
## Обновление панели
```bash
curl -fsSL https://raw.githubusercontent.com/andrey271192/PCA_Phobos/main/app.py \
> /opt/phobos-panel/app.py
systemctl restart phobos-panel
``` ```
- Протокол: **WireGuard + wg-obfuscator** (обфускация от DPI).
- Управление роутерами — по **туннелю** (`10.25.0.1`), устойчиво к бану публичного IP.
- Состояние: JSON-файлы (без БД).
--- ---
@@ -141,19 +162,10 @@ systemctl restart phobos-panel
## На основе и благодарности ## На основе и благодарности
PCA Phobos — это веб-панель и turnkey-инсталлятор поверх: PCA Phobos — это веб-панель и turnkey-инсталлятор поверх отличных открытых проектов:
- [**Phobos**](https://github.com/Ground-Zerro/Phobos) (Ground-Zerro) — обфусцированный WireGuard. Поддержать автора: [Boosty](https://boosty.to/ground_zerro) ❤️ - [**Phobos**](https://github.com/Ground-Zerro/Phobos) — обфусцированный WireGuard, автор **Ground_Zerro**. Поддержать: [Boosty](https://boosty.to/ground_zerro) ❤️
- [**WireGuard Easy**](https://github.com/wg-easy/wg-easy) (Emile Nijssen, AGPL-3.0) — веб-панель WireGuard, на которой основан Phobos. Поддержать автора: [GitHub Sponsors](https://github.com/sponsors/WeeJeWel) ❤️ - [**WireGuard Easy**](https://github.com/wg-easy/wg-easy) — веб-панель WireGuard (AGPL-3.0), автор **Emile Nijssen**. Поддержать: [GitHub Sponsors](https://github.com/sponsors/WeeJeWel) ❤️
- [**wg-obfuscator**](https://github.com/ClusterM/wg-obfuscator) (ClusterM) — обфускация WireGuard-трафика. Поддержать автора: [Boosty](https://boosty.to/cluster) ❤️ - [**wg-obfuscator**](https://github.com/ClusterM/wg-obfuscator) — обфускация WireGuard-трафика (GPL-3.0), автор **ClusterM**. Поддержать: [Boosty](https://boosty.to/cluster) ❤️
Спасибо авторам за отличные инструменты. Спасибо авторам за отличные инструменты.
## Клиенты для телефона
В таблице клиентов у каждого клиента есть кнопки:
- 📱 **Android**`phobos://`-ссылка + QR для приложения **PhobosWG** (с обфускацией). Скан QR → импорт.
- 🍎 **iPhone / iOS** — обычный WireGuard-конфиг + QR для официального WireGuard (БЕЗ обфускации). Требует открытого порта 51820 на сервере (поставь `ALLOW_PLAIN_WG=1` при установке, либо удали правило `iptables ... 51820 ... DROP`).
> Для каждого устройства создавай **отдельного клиента** (свой ключ и IP). Один конфиг на двух устройствах = конфликт ключей.

9
docs/img/README.md Normal file
View File

@@ -0,0 +1,9 @@
# Скриншоты
Положи сюда 3 PNG (панель открыта — сделай скрины своих страниц):
- `sessions.png` — страница «Сессии»
- `clients.png` — страница «Клиенты»
- `servers.png` — страница «Серверы»
README в корне на них ссылается. Рекомендуемая ширина ~10001400px.