Skip to content

Axottle v1.5.0

Choose a tag to compare

@ri1su ri1su released this 31 Jul 15:44
2d2ebc2

Обновление за 16–29 июля 2026.

Самое крупное здесь — поддержка клиентов. Раньше вы отвечали людям где-то сбоку от панели: в личных сообщениях, в чате, в чужом хелпдеске. Теперь переписка живёт внутри Axottle, вместе с нодами и подключениями, про которые эти люди и пишут.

Поддержка клиентов внутри панели

Клиент пишет вашему боту в Telegram, и в панели появляется тикет. Отвечать можно тремя способами, как удобнее: из панели, из отдельной страницы для операторов или прямо из Telegram, где на каждый тикет заводится своя тема в рабочей группе. Всё это одна и та же переписка, просто три двери в неё.

Ответить можно от имени бота или с обычного аккаунта Telegram, если клиенты уже привыкли писать туда. Аккаунт для этого лучше завести отдельный, служебный: Telegram не любит автоматизацию на живых номерах.

Картинки, гифки, стикеры, видео и файлы ходят в обе стороны. Вложения по умолчанию лежат в базе панели, но можно подключить S3 или совместимое хранилище и проверить подключение кнопкой. Есть лимит на общий объём: когда место кончается, панель говорит об этом в Health Center и в Telegram, а не молча перестаёт принимать файлы.

Роли семь штук, от владельца до наблюдателя. Оператора можно добавить по @username или по Telegram ID, аккаунт в панели ему для этого не нужен. При закрытии тикета клиент видит пять звёзд и может оценить обслуживание.

Искусственный интеллект в поддержке, если он вам нужен

ИИ включается по частям и по умолчанию не отвечает никому.

Первая ступень — подсказки. Модель пишет черновик ответа, оператор его читает и отправляет сам. Клиент до этого момента не видит ни слова.

Вторая ступень — автономные ответы. Здесь есть два режима областей. Белый список: ИИ отвечает только по темам, которые вы разрешили. Чёрный: отвечает по всему, кроме тем, которые вы за собой оставили. Порог уверенности задаёте вы. Если модель не уверена или вообще не сообщила уверенность, тикет уходит человеку. Это правило без исключений: любая непонятная ситуация заканчивается живым оператором, а не догадкой.

Отвечает ИИ по вашей базе знаний. Уроки в неё попадают через утверждение, никакой другой путь к активному знанию не ведёт. Урок можно отправить в карантин, и он перестаёт использоваться в ту же секунду. Когда знаний не хватает, вы выбираете поведение: либо сразу звать человека, либо собрать симптомы и дать безопасный общий совет вроде «переподключитесь» или «смените сервер».

Учить ИИ можно в тренировочном чате: разговариваете с ним как клиент, а потом одной кнопкой сворачиваете разговор в черновик урока.

Модель умеет смотреть скриншоты клиента. Распознаванием занимается отдельная модель, а та, что пишет ответ, картинку не видит и работает с текстовым описанием.

Панель считает настроение клиентов, время ответа, нагрузку на операторов и пробелы в знаниях. Если на один и тот же узел вдруг жалуются многие, она собирает это в один массовый инцидент, а не в двадцать одинаковых тикетов.

Вход через Telegram и точные права

Можно входить в панель через Telegram, без пароля. Сессия теперь живёт в cookie, а не в токене в браузере.

Права стали подробными: 36 разрешений, разложенных по 16 разделам панели. Ноды и Connection Units делятся на просмотр, создание, изменение, удаление и операции, у остальных разделов пара «смотреть» и «управлять». Отдельно вынесены восстановление из бэкапа, лицензия и управление аккаунтами. Меню показывает только то, до чего у человека есть доступ, и поиск тоже. Один суперпользователь защищён от удаления и понижения, чтобы нельзя было случайно запереть себя снаружи.

Панель открывается с телефона

Всё, что было на десктопе, теперь читается и на экране 360 пикселей. Экран входа получил свои фоны под портрет, меню раскрывается на весь экран, диалоги приезжают снизу, широкие таблицы прокручиваются вбок сами, а не растягивают страницу за край.

Схема Connection Units на телефоне открывается только для чтения. Пан пальцем и щипок работают, а собрать маршрут нельзя: попасть пальцем в порт размером в несколько пикселей всё равно невозможно, и делать вид, что можно, мы не стали.

Вёрстка от 1024 пикселей не изменилась ни в одном разделе.

Поиск по всей панели

Поле поиска в шапке раньше было нарисованное. Теперь по ⌘K (или Ctrl+K) ищется всё сразу: разделы, вкладки настроек, встроенная документация, ноды, юниты, тикеты. Поиск переживает опечатки и не той раскладкой набранное: «нды» найдёт «Ноды», «селфстил» найдёт SelfSteal. Верхний результат дописывается прямо в поле, Tab его принимает.

Команды не только находятся, но и выполняются. «Создать ноду» открывает мастер, а не просто переводит на страницу, где эту кнопку ещё надо найти глазами.

Рядом с Axosun появилась книжка: она открывает документацию на странице того раздела, в котором вы сейчас находитесь.

Переезд Remnawave на другой сервер

Мастер из четырёх шагов в разделе Remnawave. Он снимает дамп базы, ставит Docker на новый сервер, разворачивает такой же стек, восстанавливает базу и проверяет, что новая панель принимает ваш существующий токен.

Ссылки на подписку не меняются: домен подписки переносится как есть. JWT-секреты переносятся вместе с базой, иначе восстановленная панель отвергла бы все выданные токены, включая свой собственный.

Остановка старой панели вынесена в отдельный шаг с кнопкой, потому что пока работают обе, старая продолжает раздавать нодам свой конфиг. Ноды, до которых Axottle дотягивается через агент, перепривязываются сами; до которых не дотягивается, остаются в списке с указанием причины. Если проверка после переключения не проходит, адрес возвращается на прежний автоматически.

Старый сервер при этом не меняется нигде, кроме явной остановки контейнера, так что откатиться можно всегда.

Безопасность

Мы прочитали панель насквозь и нашли семь проблем. Четыре закрыты в этом обновлении, и две из них стоит объяснить.

Раньше все секреты (коды двухфакторной аутентификации, ключи CDN и S3, сессии Telegram, бэкапы) шифровались одним и тем же ключом, который лежит в открытом репозитории. Теперь каждая установка получает свой ключ. Обновление не требует остановки: старые записи перешифровываются сами при первом чтении. Если панель всё ещё сидит на публичном ключе, она пишет об этом в лог, и axottle doctor показывает провалившуюся проверку.

Второе: лог запросов писал полный токен подписки целиком, то есть журнал сервера превращался в список живых ссылок. Теперь остаются первые восемь символов.

Ещё панель начала отдавать заголовки безопасности на каждый ответ, а файл, присланный клиентом в чат, больше не может выполниться в браузере оператора.

Отдельно про диагностические архивы. Раньше архив, который вы отправляете в поддержку, нёс адреса всех, кто подключался, и всех нод, к которым подключались. Теперь каждый адрес, по которому можно кого-то опознать, маскируется до вида 8.x.x.8, а в манифесте написано, сколько адресов замаскировано. Loopback и маски подсетей оставлены как есть: они никого не опознают, а диагностика без них бесполезна.

К архиву теперь прикладываются ошибки браузера. Интерфейс панели живёт внутри одного бинаря с сервером, и когда падал именно он, на сервере об этом никто не знал: вы видели белый экран, а присланный архив описывал совершенно здоровый бэкенд. Пароли, токены, логины и почтовые адреса вычищаются на входе, до записи на диск.

Здоровье и ноды

Проверка VLESS перестала зря пропускать юниты. Раньше она сравнивала адрес ключа с доменом ноды посимвольно, и любой юнит, у которого клиентский адрес отличался, вечно висел в статусе «пропущено» при живом туннеле.

После успешного подключения панель узнаёт, с какого адреса туннель на самом деле выходит наружу. Это видно в карточке ноды и помогает поймать момент, когда трафик молча пошёл не туда: например, мимо WARP.

Если на одной ноде поднято несколько входов, здоровье считается по каждому отдельно. Упавший порт больше не прячется за живым.

Одну ноду можно использовать в нескольких блоках одного юнита, но не в разных юнитах: попытка отклоняется до того, как что-то будет записано наружу. Standalone-юнит ограничен одной входной нодой, для второй нужен balanced.

При удалении ноды можно заодно удалить её двойника в Remnawave, чтобы панель не подобрала её обратно при следующей синхронизации.

Внешний вид

Панель по умолчанию розовая. Цвет взят из логотипа: тело аксолотля и его рот. Прежняя зелёная схема осталась и переключается в настройках рядом со светлой и тёмной темой.

Заодно зелёный перестал работать на две роли сразу. Раньше он был и акцентом интерфейса, и статусом «в порядке»; теперь он только статус. Все сочетания текста и фона в обеих палитрах проверены на контраст.


Обновление

Обновиться можно кнопкой в панели (нужен polkit) или скриптом на сервере:

sudo /opt/axottle/installer/upgrade.sh

Миграции применяются при старте, останавливать панель заранее не нужно.

Ссылки