Обзор
Что такое Mistgate и чем он не является, для кого он и как связаны его части.
На этой странице
Mistgate — панель для небольшого VPN-флота на ваших собственных серверах. На этой странице — что она умеет, чего не делает, и понятия, на которых держится вся остальная документация.
Что такое Mistgate#
- Две программы, без Docker.
mistgate— панель.mistgate-node— агент, который работает на каждом VPN-сервере. Обе — одиночные бинарники на Go для Linux (amd64 и arm64). - Одна админка на весь флот. Панель хранит людей, настройки протоколов и серверы в одной базе SQLite и показывает их в веб-админке на русском и английском.
- Работу на серверах делают агенты. Агент запускает протоколы и держит хост в том состоянии, которое просит панель. Он сам подключается к панели: панель никогда не заходит на ваши серверы, и управляющий порт на них не нужен.
- Протоколы. Hysteria2 (официальное ядро, встроено в агента) и AmneziaWG 2.0 и 3.1 (по умолчанию в userspace, модуль ядра — по запросу для отдельной ноды). Выходом в интернет для обоих может служить Cloudflare WARP.
- Одна ссылка на человека. Приложение для подписок получает по ней список серверов в понятном ему формате (список ссылок
hysteria2://или профиль Mihomo в YAML — выбор по правилам User-Agent). Браузер получает личную страницу человека с инструкциями. Пользователи AmneziaVPN получают по ключу на устройство. - Скрыта по умолчанию. Посторонний, открывший адрес панели, видит сайт-ширму. Админка спрятана за секретным путём, секретным именем хоста или отдельным портом, а на неизвестную ссылку подписки отвечает та же ширма.
- Здоровье и обновления. Панель проверяет каждый сервер так, как его видит клиент, на каждой ноде работает доктор с проверками хоста и несколькими безопасными исправлениями, а алерты объясняют проблему простыми словами. Агенты нод обновляются сами, но только из сборок, подписанных вашим собственным ключом релиза.
- Автоматизация. Скрипты работают с тем же Connect API, что и админка, через API-токены с ограниченными правами; ИИ-агенты — через встроенный MCP-сервер, и рискованные изменения ждут одобрения владельца.
Чем Mistgate не является#
- Не VPN-сервис. Серверы и доменные имена — ваши, и управляете всем вы. Mistgate не сдаёт серверы и не продаёт доступ.
- Не биллинг. Нет платежей, тарифов и счетов. Квоты трафика, сроки и лимиты устройств — это ограничения, которые вы задаёте сами.
- Не клиентское приложение. Люди подключаются готовыми приложениями: приложением для подписок вроде Happ или приложением на ядре mihomo вроде Clash Verge или FlClash, а для ключей AmneziaWG — AmneziaVPN.
- Не готовый продукт. Бинарных релизов пока нет, поэтому собирать нужно из исходников, а API, сохранённые настройки и протокол связи с нодами до версии 1.0 ещё могут меняться. Модель данных рассчитана примерно на 5000 пользователей и 50 нод.
- Не установщик в один клик. Панель ставится вручную, а каждая нода подключается одной командой. Установщик в одну строку и подготовка нод по SSH прямо из админки — Планируется.
Для кого он#
Для человека или небольшой команды, которые держат несколько VPN-серверов для себя, семьи, друзей или небольшого сообщества. Понадобится уверенно обращаться с Linux, SSH, systemd и DNS-записями. Часть настроек по умолчанию рассчитана на пользователей в России (Яндекс DNS для нод в России, контрольные домены доктора, пресеты раздельного DNS); всё это настраивается.
Понятия#
| Понятие | Что это |
|---|---|
| Панель | Процесс mistgate serve, один на установку. Хранит базу, мастер-ключ, которым зашифрованы секреты, и собственный удостоверяющий центр (CA) панели. Отдаёт сайт-ширму, подписки и страницы пользователей на публичном адресе, админку на секретном адресе и точку подключения для агентов нод. |
| Нода | Linux-сервер, через который идёт VPN-трафик. У неё есть имя (de1), адрес, к которому подключаются клиенты (домен или IP), и при желании страна. |
| Агент | Служба mistgate-node на ноде. Держит клиентский сертификат от CA панели и одно соединение с панелью, применяет то, что панель хочет видеть на этой ноде, и отправляет трафик, сессии, состояние и события. |
| Профиль | Готовый набор настроек протокола: протокол и его параметры (порт, сертификат, обфускация и так далее). Пока профиль не поставлен на ноду, он ничего не делает. |
| Сервер на ноде | Профиль, поставленный на ноду, — он же профиль на ноде. Именно он слушает порт на ноде, и именно его человек видит в приложении как один сервер. Порт и домен (SNI) у него можно задать отдельно для каждой ноды. |
| Группа | Набор профилей. Каждый пользователь состоит в одной группе и получает её профили. В новой панели есть пустая группа «Все». |
| Пользователь | Человек с доступом: группа, приложения (подписка, AmneziaVPN или оба), ноды (все или выбранные), квота трафика, срок и лимит устройств. Статус: «Активен», «Отключён», «Истёк» или «Квота исчерпана». |
| Устройство | Устройство пользователя, у которого есть учётные данные. Для приложений с подпиской устройство появляется само, когда приложение забирает ссылку. В AmneziaWG устройство — это один ключ, привязанный к одному профилю. Лимит устройств считает именно их. |
| Ссылка подписки | Одна секретная ссылка на пользователя. Приложение получает по ней серверы пользователя, браузер — его страницу. Новая ссылка сразу заменяет старую. |
| Страница пользователя | То, что ссылка показывает в браузере: инструкции для платформы человека, QR-код, трафик и срок, а если вы разрешили, то и ключи AmneziaWG, которые человек сам создаёт для своих устройств. Страница может спрашивать пароль. |
Как они связаны:
- Пользователь получает сервер на ноде, если профиль есть в группе пользователя, нода входит в его ноды, сервер включён, пользователь активен и одно из его приложений умеет этот протокол (Hysteria2 — приложения для подписок, AmneziaWG — AmneziaVPN).
- Любое изменение в этой цепочке сразу уходит на нужные ноды. Перезапускать ничего не надо.
Как приложение человека попадает на ноду#
приложение человека панель (mistgate) нода de1 (mistgate-node)
------------------- ----------------- ------------------------
1. забирает ссылку
https://panel.example.com/<секрет>/<токен>
------------------------------------> публичный порт, TCP 443
<------------------------------------ список серверов (по одному на профиль на ноде)
2. подключается к серверу, например de1.example.com, UDP 443 (Hysteria2)
----------------------------------------------------------------> движок ----> интернет
(напрямую или через WARP)
3. управление, соединение всегда открывает нода:
<--------------------------------- агент подключается к TCP 443
с секретным именем SNI, взаимный TLS
желаемое состояние ------------->
<------------------ трафик, сессии, состояние, событияС панелью приложение говорит только когда забирает ссылку. VPN-трафик идёт напрямую от приложения к ноде и дальше в интернет; через панель он не проходит.
Что дальше#
- Требования: что нужно панели и нодам.
- Установка панели, затем Добавление ноды и Первые пользователи.
- Архитектура: подробнее о том, как части системы общаются друг с другом.