Files
PCA_Phobos/CHANGELOG.md
Бобырев Андрей af4c269438 release 1.4.9
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 23:00:07 +03:00

21 KiB
Raw Blame History

1.4.9 — 2026-11-03

  • Команда secondary сама подставляет подсеть главной; install.sh в сводке показывает реальные ключ API и пароль.
  • Панель «Серверы»: сверху блок «Как добавить второй сервер» (по-русски, команда secondary, предупреждение про независимые панели и подсети); ручное добавление свёрнуто. install.sh: предупреждение перед вопросом о подсети; подсеть 10.25.11.0/16 → 10.25.11.0/24 вместо молчаливого 10.25.0.0/16.

Changelog — PCA Phobos

Каналы: stable (публичный, без токена) · beta / dev (приватный repo, токен подписчика). Обновление: phobos-update stable · GH_TOKEN=… phobos-update beta|dev · из панели → «Версия и обновления».


Как обновиться после фиксов

# stable (открытый)
phobos-update stable

# beta/dev (токен уже сохранён в /opt/phobos-panel/.gh_token)
phobos-update beta      # или: phobos-update dev

Затем пересоздать клиентов в панели (старые конфиги могли содержать неверный порт обфускатора). Обновляются: панель, скрипты онбординга, агент, updater. Ключи WireGuard, server.env, клиенты — НЕ трогаются.


1.4.8 — сторож роутера не трогает чужие туннели

  • Исправлено: если сторож не находил интерфейс Phobos (удалён или переименован), он брал Wireguard3 по умолчанию и прописывал туда пир Phobos — ломался посторонний WireGuard-туннель. Теперь он просто пропускает проверку.
  • Роутерам: обновить скрипты из панели или переустановить клиента; серверу — phobos-update stable.

1.4.7 — роутеры Keenetic сами переключаются между серверами

  • Исправлено: после переключения на другой сервер туннель на роутере переставал работать — пир прописывался на порт обфускатора 13255, а он мог слушать другой. Порт теперь берётся из wg-obfuscator.conf.
  • Исправлено: проверка и обновление конфига по расписанию на Keenetic не запускались — задачи писались в /opt/etc/crontab, который демон не читает. Теперь busybox crond и crontab пользователя root.
  • Исправлено: phobos-pull навсегда зависал на wget, если туннель не работает (таймаут 8 с).
  • Роутерам: переустановить клиента или обновить скрипты из панели; серверу — phobos-update stable.

1.4.6 — роутеры снова получают смену адреса

  • Исправлено: роутер получал 403 при pull конфига, если клиент создан через API/бота (/api/client/ensure) — смена адреса/сервера до него не доходила. Теперь принимается и общий ключ из пакета, и личный токен клиента. Роутеры переустанавливать не нужно — достаточно обновить панель.

1.4.5 — подсеть при установке, beta/dev по токену

  • feat: beta и dev теперь берутся из приватного репозитория на Gitea (GitHub заблокирован): phobos-update beta|dev с токеном подписчика — в панели «Настройки → Версия и обновления → токен подписчика» или GH_TOKEN=… phobos-update beta. Без токена updater сообщает, что канал закрыт, и ничего не трогает.

  • fix: при переустановке на сервер с готовым wg0.conf подсеть берётся из него.

  • feat: подсеть VPN-клиентов задаётся при установке: install.sh и secondary-setup.sh спрашивают её в терминале (Enter = 10.25.0.0/16) или берут SERVER_WG_IPV4_NETWORK=10.25.1.0/24. Неверная или публичная сеть — установка останавливается с ошибкой.

1.4.4 — канал «Облако» (через KeenDNS своего Keenetic)

  • Канал «Облако» в Android PCA Phobos VPN 1.4.4 и iPhone (TestFlight 1.0 (6)): телефон → облако KeenDNS → ваш Keenetic → сервер. Помогает, когда сам сервер заблокирован, а сайты Keenetic открываются; белый IP роутеру не нужен.
  • wsgw — шлюз WebSocket → UDP для Keenetic (Entware: aarch64, mipsel, mips) и Linux. Инструкция с картинками — docs/cloud.md.
  • Панель: ссылки на приложения ведут на v1.4.4. Остальной сервер не менялся.

1.4.2 — настройка обфускатора сервера

  • feat: в панели «Настройки» → «Обфускатор сервера»: masking (AUTO/STUN/NONE), max-dummy, idle — записываются во все порты сервера, обфускатор перезапускается (клиенты переподключаются за секунды).
  • fix (Android PCA Phobos VPN 1.4.3): конфиги других сборок Phobos с лишними ключами (obfuscate-bytes и т. п.) больше не роняют обфускатор («обфускатор завершился, код 1»): передаются только ключи, известные wg-obfuscator v1.6.

1.4.1 — резервный TCP-канал, «РФ напрямую»

  • feat: резервный канал TCP: если провайдер режет UDP, клиент сам переходит на TCP (порт 443, иначе 8443/2096/4433). Сервер: служба phobos-tcp (udptcp), ставится и включается автоматически при установке и обновлении. Проверено реальной блокировкой UDP: переключение за ~15 с, без блокировки остаётся UDP.
  • feat (Android 1.4.2): «Российские сайты — напрямую, без VPN» (по умолчанию), выбор канала Авто/UDP/TCP, журнал TCP-канала.
  • fix: установка и обновления с git.bobyrev.com (GitHub — запасной), каскад раздаёт панель.
  • Ограничения: TCP-резерв пока только на основном сервере (не на вторых) и только в приложении PCA Phobos VPN (роутеры и PhobosWG — по-прежнему UDP с перебором портов).

1.4.0 — единая версия (stable = beta = dev)

Три канала сведены в одну версию: всё из dev (WARP, ttyd, бэкап, маршрут Keenetic, параметры обфускатора)

  • фиксы beta (обновлятор через API, порт/схема панели) + новое:
  • feat: светлая/тёмная тема, компактные карточки клиентов, мобильная версия без горизонтальной прокрутки.
  • feat: лимит скорости на клиента (tc на wg0, применяется и на вторых серверах).
  • feat: замер скорости сервера (реальный) и клиента (живой + /speedtest на устройстве через туннель).
  • feat: домен панели (nginx + Let's Encrypt), адрес для клиентов по домену, каскад (phobos-cascade.sh).
  • feat: сторож — блоклист сканеров РКН (phobos-guard.sh).
  • fix: secondary-setup на чистой Ubuntu 24.04 (нет iptables → wg0 не поднимался), без tty, SERVER_IP для NAT; клиенты досылаются на новый сервер сразу.
  • fix: очистка orphan-peer (не было WG_CONFIG), дубль карточки WARP и кнопки WARP, имена клиентов кириллицей.
  • fix: после обновления старым обновлятором 1.2.x/1.3.x панель сама докачивает новые скрипты.
  • fix: APK без токена подписчика — из публичного релиза (как в 1.2.8).

Обновление: phobos-update (stable) — клиенты, ключи и server.env не трогаются. Проверено на школе: 1.2.8 → 1.4.0, старый клиент работает без переустановки.

stable

v1.2.7

  • fix: импорт phobos:// в PhobosWG. Конфиги дополняются = none для недостающих полей (PresharedKey и др.) перед base64 — иначе приложение писало «невозможно импортировать туннель».

v1.2.6

  • fix: бинарники wg-obfuscator для роутеров. Keenetic = aarch64, а Ground-Zerro раздаёт только x86_64. Теперь install.sh и сборка пакета клиента авто-качают aarch64/mipsel/armv7 из ClusterM/wg-obfuscator releases.

v1.2.5

  • feat: поле токена подписчика + кнопки каналов (stable/beta/dev) прямо в карточке «Версия и обновления». Подписчик вставляет токен в панель и переключается на beta/dev без консоли.

v1.2.4

  • feat: установка по умолчанию стабильная; beta/dev — опционально (CHANNEL=).

v1.2.3

  • fix: дебаунс DOWN-алертов (3 цикла + повтор) — убирает ложный флап серверов.
  • fix: phobos-update отменяет обновление на несуществующую версию (текущая не трогается).
  • feat: --check / --versions, кнопка «Проверить обновления».

v1.2.2

  • контакт во всех местах → группа @PCAdministration.

Критичные фиксы (общие, во всех каналах)

Версия Проблема Решение
1.2.8 / 1.3.x Android PhobosWG: «Неправильная длина ключа в PublicKey» Android/iOS payload восстанавливает потерянный = в WireGuard ключах и не добавляет PresharedKey = none; QR/link нужно открыть заново
1.2.8 / 1.3.x Установка/обновление могли пройти, но потом панель генерила кривую ссылку phobos-self-check --fix встроен в install/update и доступен как отдельная команда
1.2.7 / 1.3.x PhobosWG: «невозможно импортировать туннель» phobos:// дополняется = none для всех обязательных полей (PresharedKey) по спеке формата
1.2.8 / 1.3.x Install [6/9] PCA patches: curl: (23) Failure writing output to destination fetch() создаёт папку назначения перед curl -o
1.2.8 / 1.3.x VPS x86_64: ERROR: obfuscator binary for x86_64 missing авто-загрузка linux-x64 из ClusterM releases + нормализация amd64 -> x86_64
1.2.6 / 1.3.x Роутер aarch64: «бинарник не найден в архиве» авто-загрузка aarch64/mipsel/armv7 из ClusterM releases
(внутр.) Клиент не подключается, «НЕТ СОЕДИНЕНИЯ», handshake не встаёт клиентский обфускатор целился в порт 51821 (никто не слушал); теперь берёт первый из OBFUSCATOR_PORTS (2083)
(внутр.) агент secondary не обновлялся через phobos-update server/api.py добавлен в managed_files

beta (приватный)

v1.3.0-beta

  • fix: install/update теперь запускают phobos-self-check --fix: автоматически чинят потерянный = в SERVER_WG_PUBLIC_KEY, сверяют ключ с wg0, проверяют router helper-файлы и shell syntax до выдачи клиентских ссылок.
  • fix: Android/iOS phone configs теперь восстанавливают потерянный = в WireGuard PrivateKey/PublicKey/PresharedKey. Это закрывает ошибку PhobosWG «Неправильная длина ключа в PublicKey».
  • fix: lib-core.sh больше не теряет финальный = при чтении server.env, поэтому новые клиентские .conf получают полный PublicKey.
  • fix: клиентский router package теперь содержит обязательные lib-client.sh, install-obfuscator.sh, install-wireguard.sh и дополнительные helper-скрипты из PCA repo, поэтому wget .../init/TOKEN.sh | sh больше не падает с can't open './lib-client.sh'.
  • fix: шаг [6/9] PCA patches больше не падает с curl: (23) Failure writing output to destination, если папки repo/server/scripts или repo/client/templates не были созданы upstream sparse clone.
  • fix: установка wg-obfuscator на x86_64 больше не падает с ERROR: obfuscator binary for x86_64 missing. Installer и secondary installer берут linux-x64 из ClusterM releases.
  • fix: свежая beta-установка снова получает lib-core.sh, без которого client helper мог ломаться на чистой машине.
  • fix: старые ссылки /tags теперь ведут в /labels, без 404.
  • fix: поле имени клиента больше не даёт ошибку в консоли Chrome из-за HTML pattern. UI bench-test прошёл без console/page errors.
  • fix: WG tunnel subnet перестала быть жёстко зашита в 10.25.0.0/16. Installer, secondary deploy, client packaging и router pull теперь используют SERVER_WG_IPV4_NETWORK, так что 10.26/10.27 и другие отдельные WG-сети на разных VPS работают без ручных правок.
  • fix: в клиентский пакет добавляется panel_tunnel_ip, а phobos-pull использует его как tunnel endpoint панели вместо жёсткого 10.25.0.1.
  • скачивание .conf для телефона (Android phobos:// + QR, iOS обычный WireGuard + QR);
  • кнопка скачивания приложения PhobosWG (APK) — авто-загрузка из GitHub Release приватного repo;
  • все критичные фиксы выше.

dev (приватный, активная разработка)

v1.3.4-dev

  • fix: install/update теперь запускают phobos-self-check --fix: автоматически чинят потерянный = в SERVER_WG_PUBLIC_KEY, сверяют ключ с wg0, проверяют router helper-файлы и shell syntax до выдачи клиентских ссылок.
  • fix: Android/iOS phone configs теперь восстанавливают потерянный = в WireGuard PrivateKey/PublicKey/PresharedKey. Это закрывает ошибку PhobosWG «Неправильная длина ключа в PublicKey».
  • fix: lib-core.sh и WARP helper больше не теряют финальный = при чтении server.env, поэтому новые клиентские .conf получают полный PublicKey.
  • fix: клиентский router package теперь содержит обязательные lib-client.sh, install-obfuscator.sh, install-wireguard.sh и дополнительные helper-скрипты из PCA repo, поэтому wget .../init/TOKEN.sh | sh больше не падает с can't open './lib-client.sh'.
  • fix: шаг [6/9] PCA patches больше не падает с curl: (23) Failure writing output to destination, если папки repo/server/scripts или repo/client/templates не были созданы upstream sparse clone.
  • fix: установка wg-obfuscator на x86_64 больше не падает с ERROR: obfuscator binary for x86_64 missing. Installer и secondary installer берут linux-x64 из ClusterM releases.
  • fix: поле имени клиента больше не даёт ошибку в консоли Chrome из-за HTML pattern. UI bench-test прошёл без console/page errors.
  • fix: WG tunnel subnet больше не зашита в 10.25.0.0/16. install.sh, secondary-setup.sh, client packaging, router pull и secondary deploy теперь берут SERVER_WG_IPV4_NETWORK, поэтому один сервер можно держать на 10.25, другой на 10.26, 10.27 и дальше без ручного nano.
  • fix: в клиентский пакет добавляется panel_tunnel_ip, а phobos-pull/phobos-ttyd используют его вместо жёсткого 10.25.0.1. Это убирает поломку управления роутером после смены WG-подсети на сервере.
  • fix: per-client WARP стал действительно точечным. Удалено старое правило на всю подсеть WG, правила теперь ставятся и снимаются только по client tunnel IP /32.
  • fix: клиентские пакеты и install-команды снова собираются стабильно: создаётся /opt/Phobos/bin, шаблон install-router.sh.template обрабатывается мягко, пустой OBFUSCATOR_KEY больше не валит сборку.
  • fix: /clients больше не падает при неполной выкладке dev-стенда. Добавлены обязательные lib-core.sh и client templates в install/update flow.
  • fix: “живой peer есть, клиента нет” больше не выглядит как пропавший клиент. Сиротские peer теперь отображаются в Сессии и Клиенты как orphan-*, с кнопками WARP, Kick, Purge.
  • fix: старые ссылки /tags теперь ведут в /labels.
  • security: login hardening — HttpOnly + SameSite=Lax cookie, ограничение попыток входа, constant-time compare для пароля и API keys, upload limit 64 MB.
  • ops: phobos-update и phobos-backup restore теперь сами определяют активный panel service (phobos-panel или phobos-dev-test) и перезапускают правильный unit.
  • security/cleanup: из secondary API убран shell=True там, где он был не нужен; чтение CPU/mem/network переведено на более безопасный путь.

v1.3.1-dev

  • баланс по трафику: агенты отдают пропускную способность канала (rx/tx NIC), server_load = 0.45·cpu + 0.30·mem + 0.25·bw; карточки серверов показывают ↕ Mbps;
  • WARP / WARP+: в /settings добавлен отдельный блок с режимами egress, relay, custom profile и полем WARP+ key;
  • egress mode: исходящий трафик клиентов можно завернуть через Cloudflare WARP на стороне сервера;
  • relay mode: добавлен UDP relay по мотивам warp-relay для отдельных WARP/WireGuard профилей;
  • custom profile: полный warp.conf можно вставить и сохранить прямо из веб-панели;
  • help UI: у блока WARP появился ? с человеческим объяснением режимов, ограничений и сценариев использования;
  • все фиксы и фичи из beta.