still-ui — форк 3x-ui v3.11.0. Порядок работ — от того, что мешает на живом сервере каждый день, к новым возможностям. Всё, что умеет 3x-ui, остаётся; изменения идут поверх небольшими шагами.
-
Частичная правка клиента не ломает клиента. В 3x-ui v3.11.0 правка через
/panel/api/clients/update/:emailс частью полей выключала клиента и обнулялаlimitIp,tgId,commentи прочее, чего не было в запросе. Теперь непереданные поля берутся из сохранённого клиента; явный ноль по-прежнему очищает. Ключи AmneziaWG сохранялись и в v3.11.0. -
Отпечаток REALITY по умолчанию —
ios. ClientHello ~517 байт помещается в один TCP-сегмент. Уchromeиfirefoxон делится на два пакета, и у мобильных операторов, теряющих второй пакет, соединение рвётся на рукопожатии. Другой отпечаток по-прежнему выбирается во входе. -
Потолок памяти панели в установщике.
MemoryMax— 35% ОЗУ (256 МиБ…1 ГиБ),MemoryHigh— 85% от него, своп панели запрещён; своё значение —STILL_UI_MEMORY_MAXв/etc/default/still-ui. На сервере без свопа с ОЗУ ≤ 2 ГиБ установщик предлагает/swapfileна 2 ГиБ. -
Переход с 3x-ui при установке. Установщик находит
/etc/x-ui/x-ui.db, предлагает скопировать базу и остановить x-ui; файлы 3x-ui не трогает. Проверено на базе v3.11.0. -
Xray отдельной службой (по настройке).
STILL_XRAY_UNIT=onв/etc/default/still-ui+still-ui update: службаstill-xray(свой пользователь,CAP_NET_BIND_SERVICE,ProtectSystem=strict,Restart=always,MemoryMax). Клиенты — через API без перезапуска, перезапуск ядра только при смене структуры входов, конфиг проверяетсяxray run -test, неподнявшийся откатывается на прошлый рабочий. Проверено:systemctl restart still-uiпосреди скачивания 20 МБ через VPN — обрыва нет, PID Xray тот же;kill -9ядра — systemd поднимает, панель доприменяет клиентов. По умолчанию Xray — дочерний процесс, как в 3x-ui. AmneziaWG, MTProto и TUIC живут в панели и при её перезапуске переподключаются. -
Подхват продлённого сертификата. Xray сам перечитывает файлы раз в час (или раз в
ocspStaplingс); панель раз в минуту рукопожатием (TLS/QUIC) сверяет отдаваемый сертификат с файлом и перезапускает только ядро, если оно не подхватило продление вовремя (oneTimeLoading) или отдаваемый истекает в течение часа. Метка «Сертификаты» на главной. Проверено на входах VLESS-TLS и Hysteria. -
Память панели под потоком соединений AmneziaWG. Каждое соединение выделяло два новых буфера по 32 КиБ; теперь буферы переиспользуются. 100 коротких соединений/с через AWG, 5 минут, по 3 прогона, 3x-ui v3.11.0 против still-ui: средняя память панели 403 → 176 МиБ (пик 525 → 211 МиБ), см.
bench/awg-relay-churn. -
Многосуточный замер памяти панели. 72 часа под смешанной нагрузкой, still-ui v1.6.0 рядом с 3x-ui v3.11.0 на одних данных и нагрузке: роста нет ни у одной (+0,1 МБ/ч за последние сутки). Медленные клиенты AmneziaWG держат буферы сокетов ядра (около 12 МБ на поток), это не утечка.
-
Импорт из Marzban, x-ui и 3x-ui до v3.
still-ui import marzban <папка>(и Настройки → Импорт) переносит входы, пользователей и хосты с теми же UUID, паролями, ключом REALITY и портами, так что выданные ссылки и ссылки подписки Marzban продолжают работать.-dry-run— отчёт без записи; перед записью — резервная копия, запись — всё или ничего. Проверено с настоящим Marzban v0.8.4:scripts/test-import-marzban.sh. -
Местные сайты напрямую. Настройки → Подписка → Местные сайты напрямую: сайты выбранной страны (доменные зоны,
geosite,geoip) идут мимо VPN, список «всегда через VPN» (Telegram, YouTube и другие, плюс свои адреса) проверяется первым. Подписки JSON, Clash/Mihomo, Happ/INCY и файл правил для Shadowrocket. По умолчанию выключено. -
Лимит устройств подписки, понятный человеку. Устройство сверх лимита получает не ошибку, а подписку с одним сообщением; общий лимит для панели, выбор для приложений без идентификатора устройства, срок, после которого молчащее устройство освобождает место, счётчик «2 / 3» на странице подписки. Панель хранит только хеш идентификатора.
-
Тревога об утечке подписки. Панель считает сети (IPv4 /24, IPv6 /48), из которых получают каждую подписку, и пишет в Telegram один раз, когда одну подписку получили из 6 сетей за 24 часа (оба числа настраиваются); снова — через неделю или когда сетей вдвое больше. Ничего не блокирует; за прокси адрес берётся только от доверенного прокси. Включено на новых установках, выключено на обновлённых.
-
Журнал подключений. Страница Подключения: кто, когда, через какой вход и куда, фильтры и выгрузка в CSV. Срок хранения (30 дней по умолчанию), предел размера и выбор, что сохранять об адресе назначения и адресе клиента; старые дни удаляются сами. По умолчанию выключен.
-
Против блокировок. Подбор цели REALITY с результатом каждой проверки; прыгающие порты Hysteria2, перенаправление для которых панель ставит сама (nftables) и отказывает там, где оно работать не может; для AmneziaWG — пакет
I1в виде QUIC или DNS и MTU 1280 одной кнопкой.
- Сейчас ничего.
- Правила: заблокировать, пустить напрямую, пустить через другой выход (другой сервер, WARP).
- Проверка правил перед применением: нельзя случайно открыть клиентам служебные порты и внутренние адреса сервера или отрезать всех.
- Готовые наборы правил (реклама).
- Добавить сервер одной командой-приглашением; входы и клиенты на нескольких серверах; подписка собирает все.
- Отказ одного сервера не мешает управлять остальными.
- Резервная копия и восстановление базы одной командой.
- Обновление и откат версии одной командой с проверкой, что база подходит выбранной версии.