mirror of
https://github.com/andrey271192/PCA_Phobos.git
synced 2026-09-20 11:55:32 +00:00
190 lines
15 KiB
Markdown
190 lines
15 KiB
Markdown
# PCA Phobos — VPN, который не отключается
|
||
|
||
**Веб-панель и turnkey-установщик для [Phobos](https://github.com/Ground-Zerro/Phobos)** — обфусцированного WireGuard VPN. Ставится на чистый VPS одной командой, управляет десятками роутеров и устройств с одной страницы, сам переключается между серверами при сбоях и восстанавливается после перезагрузок.
|
||
|
||
<p align="center">
|
||
<img src="docs/img/sessions.png" alt="Панель — активные сессии" width="850">
|
||
</p>
|
||
|
||
---
|
||
|
||
## Что это простыми словами
|
||
|
||
Обычный VPN падает, когда падает сервер или провайдер банит IP. **PCA Phobos — нет.**
|
||
|
||
- 🌐 **Маскированный WireGuard** — трафик не отличить от обычного, проходит мимо DPI и блокировок по сигнатуре.
|
||
- 🔁 **Авто-переключение между серверами** — сервер лёг или порт прикрыли → роутер сам прыгает на резервный за ~10–15 секунд, без твоего участия.
|
||
- 📡 **Работает за любым 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 + подсказки `?` у каждого действия.
|
||
- **Версии и обновления** — обновление и откат прямо из панели.
|
||
- **Уведомления per-client** — 🔔 у каждого клиента: включить/выключить Telegram-оповещения о подключении/отключении.
|
||
- **Telegram-бот** — управление клиентами командами прямо из чата:
|
||
- `/add <имя>` — создать клиента (бот пришлёт команду установки)
|
||
- `/del <имя>` — удалить клиента
|
||
- `/list` — список клиентов
|
||
- **Кнопки** — постоянная клавиатура: ➕ Создать клиента · 📋 Список · 🗑 Удалить (инлайн-выбор) · 📊 Статус · ❓ Помощь.
|
||
(Работает только для чата из настроек `tg_chat_id`.)
|
||
|
||
---
|
||
|
||
## Скриншоты
|
||
|
||
| Сессии | Клиенты | Серверы |
|
||
|--------|---------|---------|
|
||
|  |  |  |
|
||
|
||
> Если картинки не отображаются — положи свои PNG в `docs/img/` (`sessions.png`, `clients.png`, `servers.png`).
|
||
|
||
---
|
||
|
||
## Быстрый старт (с чистого VPS, одной командой)
|
||
|
||
Ставит **всё** со всеми зависимостями: wg-obfuscator, WireGuard, обфускатор-сервисы, веб-панель, nginx, скрипты онбординга роутеров, сторож авто-восстановления. Предустановленный Phobos **не требуется**.
|
||
|
||
```bash
|
||
bash <(curl -fsSL https://raw.githubusercontent.com/andrey271192/PCA_Phobos/main/install.sh)
|
||
```
|
||
|
||
### С параметрами
|
||
|
||
```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 (без обфускации) |
|
||
| `CHANNEL` | `stable` | канал: `stable` (ветка main) или `beta` |
|
||
|
||
После установки панель напечатает адрес, логин, пароль и **API key** — сохрани их.
|
||
|
||
> **Канал:** по умолчанию ставится **стабильная** версия (ветка `main`). Бета — по желанию:
|
||
> ```bash
|
||
> CHANNEL=beta bash <(curl -fsSL https://raw.githubusercontent.com/andrey271192/PCA_Phobos/main/install.sh)
|
||
> ```
|
||
> Переключение после установки: `phobos-update beta` / `phobos-update main`.
|
||
|
||
### Вторичный сервер (для failover / балансировки)
|
||
|
||
```bash
|
||
MAIN_SERVER=<ip_основного> MAIN_API_KEY=<API key из основного> \
|
||
bash <(curl -fsSL https://raw.githubusercontent.com/andrey271192/PCA_Phobos/main/server/secondary-setup.sh)
|
||
```
|
||
|
||
Затем в панели → **Серверы** → добавь его в список.
|
||
|
||
---
|
||
|
||
## Клиенты для телефона
|
||
|
||
В таблице **Клиенты** у каждого клиента есть кнопки:
|
||
|
||
- 📱 **Android** — `phobos://`-ссылка + QR для приложения **PhobosWG** (с обфускацией). Скан QR → импорт.
|
||
- 🍎 **iPhone / iOS** — обычный WireGuard-конфиг + QR для официального WireGuard (**без** обфускации). Требует открытого порта 51820 (`ALLOW_PLAIN_WG=1` при установке).
|
||
|
||
> Для каждого устройства создавай **отдельного клиента** (свой ключ и IP). Один конфиг на двух устройствах = конфликт ключей.
|
||
|
||
**Приложения:**
|
||
- **Android (PhobosWG):** автор пока не публикует APK официально. Положи `.apk` на сервер в `/opt/Phobos/www/app/PhobosWG.apk` — панель сама покажет кнопку «Скачать приложение PhobosWG» на странице Android-клиента (раздаётся по `http://<сервер>/app/PhobosWG.apk`).
|
||
- **iPhone (iOS):** официальный [WireGuard из App Store](https://apps.apple.com/app/wireguard/id1441195209) — кнопка есть на странице iOS-клиента.
|
||
|
||
---
|
||
|
||
## Обновление и откат
|
||
|
||
Проект версионируется (см. файл `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 | Применяется за ~12–15 сек, не мгновенно |
|
||
| **Забыл порт панели** | случайный порт | `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`.
|
||
|
||
---
|
||
|
||
## Архитектура
|
||
|
||
```
|
||
Телефон/Роутер → wg-obfuscator (клиент) ──обфускация──► сервер :2083/5443/993
|
||
│ де-обфускация
|
||
WireGuard :51820
|
||
│ 10.25.0.x
|
||
┌──────────┴──────────┐
|
||
Веб-панель Failover на
|
||
(Flask+Gunicorn) резервные серверы
|
||
```
|
||
|
||
- Протокол: **WireGuard + wg-obfuscator** (обфускация от DPI).
|
||
- Управление роутерами — по **туннелю** (`10.25.0.1`), устойчиво к бану публичного IP.
|
||
- Состояние: JSON-файлы (без БД).
|
||
|
||
---
|
||
|
||
## Поддержка проекта
|
||
|
||
Если PCA Phobos оказался полезен — буду благодарен за поддержку:
|
||
|
||
- 💖 **Boosty:** [boosty.to/andrey27/donate](https://boosty.to/andrey27/donate)
|
||
- 💳 **Ozon Bank (СБП):** [ссылка](https://finance.ozon.ru/apps/sbp/ozonbankpay/019dc200-2a5d-7931-a619-782d285f6798)
|
||
- ✉️ **Telegram:** [@PCAdministration](https://t.me/PCAdministration) — вопросы, баги, идеи
|
||
|
||
## На основе и благодарности
|
||
|
||
PCA Phobos — это веб-панель и turnkey-инсталлятор поверх отличных открытых проектов:
|
||
|
||
- [**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) — веб-панель WireGuard (AGPL-3.0), автор **Emile Nijssen**. Поддержать: [GitHub Sponsors](https://github.com/sponsors/WeeJeWel) ❤️
|
||
- [**wg-obfuscator**](https://github.com/ClusterM/wg-obfuscator) — обфускация WireGuard-трафика (GPL-3.0), автор **ClusterM**. Поддержать: [Boosty](https://boosty.to/cluster) ❤️
|
||
|
||
Спасибо авторам за отличные инструменты.
|