Skip to content

Releases: Mistgate/mistgate

v0.1.43

Choose a tag to compare

@github-actions github-actions released this 15 Oct 14:16

Reachability: a section of its own

The check of whether your nodes open from inside Russia has moved out of Integrations into its own section, Reachability, right after Health (on a phone, under More).

  • A summary at the top counts nodes by verdict: reachable, TCP cut, unreachable, listed, no data.
  • Each node shows its verdict and, for every source (Globalping, block lists, TSPU probe), a strip of the last 7 days. Hover or focus a segment to see its verdict and when it held.
  • The country alerts of the last week, open and closed, link to the alert.
  • The three source cards are the same as before, only moved here. Integrations keeps a pointer to the new place for this release.
  • The From Russia column in Health → Checks and the row on the node page link to the section.

Docs: Reachability.

DNS for the link apps, picked on the user page

A person can now pick their own DNS for Happ, the Mihomo apps, Xray JSON and sing-box. These apps have one resolver for the whole subscription, so it is one choice for all servers, and it is personal.

  • Offer it in Subscriptions → User page: turn on DNS choice on the page, then tick presets in DNS for the apps on the link right below and pick a default. Nothing ticked means no choice on the page, as before.
  • Which DNS applies: the person's pick while you offer it, else the preset you set for the user, else the group's, else the default of the offer, else the instance default.
  • The apps get the new DNS on their next subscription refresh.
  • The DNS rows on the server cards are now Key DNS: they apply only to AmneziaVPN keys and are shown only to people who use them.
  • The user card's DNS picked on the page shows the link pick and the picks per server; Reset clears them all. Turning the switch off hides the choice and keeps picks already made.

Docs: DNS for the apps on the link.

Fixes

  • Preset names and descriptions on the user page follow the page's language, not the browser's. A Russian page in an English browser no longer shows "AdGuard: no ads".

Full Changelog: v0.1.42...v0.1.43


Доступность: отдельный раздел

Проверка того, открываются ли ваши ноды изнутри России, переехала из Интеграций в свой раздел — Доступность, сразу после Здоровья (на телефоне — в Ещё).

  • Сводка наверху считает ноды по вердиктам: доступны, TCP режут, недоступны, в реестре, нет данных.
  • У каждой ноды есть вердикт и полоса за последние 7 дней по каждому источнику (Globalping, списки блокировок, ТСПУ-зонд). Наведите курсор или фокус на отрезок, чтобы увидеть его вердикт и время.
  • Алерты по стране за неделю, открытые и закрытые, со ссылкой на алерт.
  • Три карточки источников те же, что раньше, только переехали сюда. В Интеграциях на этот релиз осталась ссылка на новое место.
  • Колонка Из России в Здоровье → Проверки и строка на странице ноды ведут в раздел.

Документация: Доступность.

DNS для приложений по ссылке — на странице пользователя

Человек теперь сам выбирает DNS для Happ, Mihomo-приложений, Xray JSON и sing-box. У этих приложений один резолвер на всю подписку, поэтому выбор один на все серверы и личный для человека.

  • Включается в Подписки → Страница пользователя: включите Выбор DNS на странице, ниже в DNS для приложений по ссылке отметьте пресеты и выберите один по умолчанию. Ничего не отмечено — выбора на странице нет, как раньше.
  • Какой DNS действует: выбор человека, пока вы его предлагаете; иначе пресет, который вы задали пользователю; иначе пресет группы; иначе вариант по умолчанию из списка; иначе DNS по умолчанию для всей панели.
  • Приложения получают новый DNS при следующем обновлении подписки.
  • Строки DNS в карточках серверов теперь называются DNS ключей: они действуют только на ключи AmneziaVPN и видны только тем, кто ими пользуется.
  • В карточке пользователя блок DNS, выбранный на странице показывает выбор для приложений по ссылке и выбор по серверам; Сбросить убирает всё. Если выключить переключатель, выбор пропадёт со страницы, а уже сделанный продолжит действовать.

Документация: DNS для приложений по ссылке.

Исправления

  • Названия и описания пресетов на странице пользователя идут на языке страницы, а не браузера. Русская страница в английском браузере больше не показывает «AdGuard: no ads».

Full Changelog: v0.1.42...v0.1.43


可达性:独立的部分

检查节点能否从俄罗斯境内打开的功能已从「集成」移到独立的部分 可达性,位于运行状况之后(手机上在 更多 里)。

  • 顶部汇总按结论统计节点数:可访问、TCP 被封锁、无法连接、在名录中、无数据。
  • 每个节点显示当前结论,并按每个来源(Globalping、封锁名单、TSPU 探测)显示最近 7 天的时间条。悬停或聚焦某一段可查看该段的结论和时间。
  • 最近一周的国家告警(未关闭和已关闭),可直接打开对应告警。
  • 三个来源卡片与以前相同,只是移到了这里。本版本中,「集成」里保留了指向新位置的链接。
  • 运行状况 → 检查中的「从俄罗斯访问」列和节点页面中的对应行都链接到这个部分。

文档:可达性。

在用户页面上为订阅类应用选择 DNS

用户现在可以自行为 Happ、Mihomo 类应用、Xray JSON 和 sing-box 选择 DNS。这些应用整个订阅只用一个解析器,因此这个选择对所有服务器生效,并且只属于该用户。

  • 在 订阅 → 用户页面 中开启:打开 页面上的 DNS 选择,然后在下方的 订阅类应用的 DNS 中勾选预设并设定一个默认值。不勾选任何预设时,页面上没有这个选择,与以前相同。
  • 生效顺序:用户的选择(只要你仍在提供该预设);否则是你为该用户设置的预设;否则是分组的预设;否则是列表中的默认值;否则是整个面板的默认 DNS。
  • 应用会在下次更新订阅时获得新的 DNS。
  • 服务器卡片上的 DNS 行现在叫 密钥 DNS:只作用于 AmneziaVPN 密钥,也只向使用密钥的用户显示。
  • 用户卡片中的 页面上选择的 DNS 显示订阅类应用的选择和按服务器的选择;重置 会全部清除。关闭开关后页面上不再显示该选择,已做出的选择继续生效。

文档:订阅类应用的 DNS。

修复

  • 用户页面上的预设名称和说明跟随页面语言,而不是浏览器语言。在英文浏览器中打开的俄文页面不再显示「AdGuard: no ads」。

Full Changelog: v0.1.42...v0.1.43

v0.1.42

Choose a tag to compare

@github-actions github-actions released this 15 Oct 09:45

TSPU probe: a third source for reachability from Russia

One of your own nodes inside Russia can now check the rest of the fleet. It finds the filtering box (TSPU) on its path, then checks, port by port, whether TCP connections to each node die there.

  • Turn it on in Integrations → Reachability from a country → TSPU probe, and pick the probe node. It must run agent v0.1.42 or newer. It is off by default.
  • Runs every 2 hours by default; Test runs it now. A run takes a few minutes.
  • Node addresses go only to your probe node, nowhere else.
  • What it sees is a datacenter's view: home and mobile networks may differ. It tests TCP only, not UDP.
  • It needs no extra privileges on the node: no raw sockets, no change to the agent's service.
  • Not on the Cloudflare edition yet.

When the sources disagree, for example Globalping sees a node as reachable and the probe sees its TCP cut, Health shows the worse verdict, marks it "sources disagree" and shows what each source saw. The alert says which source saw the block.

Docs: TSPU probe.

Fixes

  • A test run that takes longer than a minute is no longer cut off by the panel's server, and it keeps running when you close the tab.
  • A subscription link pasted into Telegram, WhatsApp or another messenger is opened by the messenger's server for a preview. That server used to get the link list and show up as an app without a device ID ("TelegramBot"). Preview bots and search crawlers now get the decoy site and take no device. An entry already made this way can be removed from the person's devices.

Full Changelog: v0.1.41...v0.1.42


ТСПУ-зонд: третий источник для доступности из России

Одна из ваших нод внутри России теперь может проверять остальной флот. Она находит на своём пути коробку фильтрации (ТСПУ) и по каждому порту проверяет, обрываются ли на ней TCP-соединения к каждой ноде.

  • Включается в Интеграции → Доступность из страны → ТСПУ-зонд, там же выбирается нода-зонд. На ней должен стоять агент v0.1.42 или новее. По умолчанию выключен.
  • По умолчанию запускается раз в 2 часа; Проверить запускает сразу. Один запуск идёт несколько минут.
  • Адреса нод уходят только на вашу ноду-зонд и больше никуда.
  • Зонд смотрит из датацентра: в домашних и мобильных сетях может быть иначе. Проверяется только TCP, не UDP.
  • Особых прав на ноде не нужно: ни сырых сокетов, ни правок в службе агента.
  • В версии для Cloudflare зонда пока нет.

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

Документация: ТСПУ-зонд.

Исправления

  • Проверка, которая идёт дольше минуты, больше не обрывается сервером панели и продолжается, даже если закрыть вкладку.
  • Ссылку подписки, вставленную в Telegram, WhatsApp или другой мессенджер, открывает сервер мессенджера, чтобы сделать превью. Раньше он получал список ссылок и появлялся как приложение без ID устройства («TelegramBot»). Теперь боты превью и поисковые роботы получают сайт-ширму и не занимают устройство. Уже появившуюся так запись можно удалить из устройств человека.

Full Changelog: v0.1.41...v0.1.42


TSPU 探测:从俄罗斯访问的第三个来源

你在俄罗斯境内的一台节点现在可以检测集群中的其他节点。它会在自己的路径上找到过滤设备(TSPU),然后逐个端口检查到每台节点的 TCP 连接是否在那里被切断。

  • 在集成 → 从所选国家访问 → TSPU 探测中开启,并选择探测节点。该节点的 Agent 需要 v0.1.42 或更高版本。默认关闭。
  • 默认每 2 小时运行一次;测试会立即运行。一次运行需要几分钟。
  • 节点地址只会发送到你自己的探测节点,不会发往其他地方。
  • 它看到的是数据中心的视角:家庭和移动网络的情况可能不同。只检测 TCP,不检测 UDP。
  • 节点上不需要额外权限:不用原始套接字,也不修改 Agent 的服务。
  • Cloudflare 版暂不支持。

当各来源结果不一致时,例如 Globalping 认为节点可访问而探测发现 TCP 被切断,运行状况页会显示较差的结论,标注「来源结果不一致」,并列出各来源看到的情况。告警会说明是哪个来源发现了封锁。

文档:TSPU 探测。

修复

  • 运行时间超过一分钟的测试不再被面板服务器中断,关闭标签页后也会继续运行。
  • 订阅链接被粘贴到 Telegram、WhatsApp 或其他即时通讯应用时,应用的服务器会打开它生成预览。以前它会拿到链接列表,并显示为一个没有设备 ID 的应用(「TelegramBot」)。现在预览机器人和搜索引擎爬虫只会得到伪装站点,也不会占用设备。已经这样产生的记录可以从该用户的设备中删除。

Full Changelog: v0.1.41...v0.1.42

v0.1.41

Choose a tag to compare

@github-actions github-actions released this 14 Oct 22:29

Reachability from a country

The health checks run on the panel's server, which is not in your users' country, so they cannot see a block there. Integrations now has a group, Reachability from a country, with two sources. Each is its own integration, and each is off by default: with a source off, nothing is sent and nothing is downloaded.

Globalping

  • Probes in home and mobile networks inside Russia ping each node and connect to its TCP ports. A node with only UDP profiles gets the ping alone.
  • What it sends: the IPv4 address of each online node, to Globalping and the probes that run the test. Nobody else gets it.
  • An optional token raises the free limit from 250 to 500 tests an hour. It is write-only.
  • A node gets one of four verdicts: available, TCP cut, unreachable, no data.
  • The alert "Unreachable from Russia" opens after 2 bad rounds in a row and closes after 2 good ones. It goes to Telegram too. Rounds with no data change nothing.

Block lists

  • The antifilter lists and the CDN ranges are downloaded to the panel and checked there, so no node address leaves the panel.
  • The verdict "listed" means the address is in a registry, not that its traffic is cut. It never opens an alert.
  • Russia only; the lists are refreshed every 6 hours.

Both sources show as a From Russia column in Health → Checks and as a row on the node page. The column is hidden while both are off. Docs: Country check.

Health checks: response and connect time

  • The number in a cell is now the response time through a tunnel that is already open, which is what a person feels. Before, it included setting the tunnel up.
  • Connect time is shown separately. From 2 s on, the cell gets a second line with a clock; the tunnel works, so the colour stays calm.
  • When the panel's own host loses inbound UDP, Hysteria2 and AmneziaWG connect slowly while VLESS on the same nodes is fast. The panel now says so above the table and names the nodes. People are not affected and no alert opens.
  • Docs: What the numbers mean.

Cloudflare edition: six Workers (preview)

  • The panel is now a small JS router that keeps the address, plus five Workers for its roles: public, link, admin, jobs and provision. Each has its own wasm, far under Cloudflare's 64 MiB limit.
  • mistgate edge deploy deploys all six and skips scripts that did not change. --rollback puts each Worker back on the version it had before the last update.
  • The edition is still a preview. It has been tried against a simulated Cloudflare only, not on a real account.
  • Bundles for the old single Worker (edge.json schema 1) are refused. No real install exists, so there is no migration.
  • Docs: Install the Cloudflare edition. Design: ADR 0009.

Smaller changes

  • The README has a star history chart.
  • The Russian Telegram title of the country alert is now «Нода недоступна из России».

Full Changelog: v0.1.40...v0.1.41


Доступность из страны

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

Globalping

  • Пробы в домашних и мобильных сетях внутри России пингуют каждую ноду и подключаются к её TCP-портам. Нода, у которой только UDP-профили, получает один пинг.
  • Что уходит: IPv4-адрес каждой ноды онлайн, в Globalping и на пробы, которые запускают тест. Больше никому.
  • Необязательный токен поднимает бесплатный лимит с 250 до 500 тестов в час. Он только записывается.
  • Нода получает один из четырёх вердиктов: доступна, TCP режут, недоступна, нет данных.
  • Алерт «Недоступна из России» открывается после 2 плохих раундов подряд и закрывается после 2 хороших. Он приходит и в Telegram. Раунды без данных ничего не меняют.

Списки блокировок

  • Списки antifilter и диапазоны CDN скачиваются на панель и сверяются там же, поэтому адреса нод панель не покидают.
  • Вердикт «в реестре» значит, что адрес есть в реестре, а не что его трафик режут. Алерт он не открывает никогда.
  • Только для России; списки обновляются каждые 6 часов.

Оба источника показываются колонкой Из России в Здоровье → Проверки и строкой на странице ноды. Пока оба выключены, колонки нет. Документация: Проверка из страны.

Проверки здоровья: отклик и подключение

  • Число в ячейке теперь — время отклика через уже открытый туннель, то, что чувствует человек. Раньше в него входило и открытие туннеля.
  • Время подключения показывается отдельно. От 2 с в ячейке появляется вторая строка с часами; туннель работает, поэтому цвет остаётся спокойным.
  • Когда хост самой панели теряет входящий UDP, Hysteria2 и AmneziaWG подключаются медленно, а VLESS на тех же нодах быстро. Панель теперь пишет об этом над таблицей и называет ноды. Люди это не затрагивает, алерт не открывается.
  • Документация: Что значат числа.

Cloudflare-версия: шесть Workers (предварительная)

  • Панель теперь состоит из небольшого JS-маршрутизатора, который держит адрес, и пяти Workers по ролям: public, link, admin, jobs и provision. У каждого свой wasm, далеко от лимита Cloudflare в 64 МиБ.
  • mistgate edge deploy разворачивает все шесть и не загружает скрипты, которые не изменились. --rollback возвращает каждый Worker на версию, которая была до последнего обновления.
  • Версия по-прежнему предварительная. Её проверяли только на имитации Cloudflare, на настоящем аккаунте — нет.
  • Пакеты прежнего единственного Worker (edge.json схемы 1) отклоняются. Настоящих установок нет, поэтому миграции нет.
  • Документация: Установка Cloudflare-версии. Устройство: ADR 0009.

Мелкие изменения

  • В README появился график истории звёзд.
  • Русский заголовок алерта о недоступности из страны в Telegram теперь «Нода недоступна из России».

Full Changelog: v0.1.40...v0.1.41


从国家视角检测

运行状况检测从面板所在的服务器发出,而它不在你的用户所在的国家,看不到那里的封锁。「集成」页新增了「从所选国家访问」分组,包含两个来源。每个来源都是独立的集成,默认都关闭:来源关闭时,不发送任何内容,也不下载任何内容。

Globalping

  • 俄罗斯境内家庭宽带和移动网络中的探测点会 ping 每个节点,并连接它的 TCP 端口。只有 UDP 协议配置的节点只做 ping。
  • 发送的内容:每个在线节点的 IPv4 地址,发给 Globalping 和执行测试的探测点,不会发给其他任何人。
  • 可选的令牌可把免费额度从每小时 250 次提高到 500 次,令牌只写不读。
  • 每个节点会得到四种结论之一:可访问、TCP 被封锁、无法连接、无数据。
  • 告警「从俄罗斯无法连接」在连续 2 轮异常后打开,连续 2 轮正常后关闭,也会发到 Telegram。无数据的轮次不改变状态。

封锁名单

  • antifilter 名单和 CDN 地址段会下载到面板并在面板上比对,因此节点地址不会离开面板。
  • 结论「在名录中」只表示地址在名录里,不表示它的流量被丢弃,因此从不打开告警。
  • 仅适用于俄罗斯;名单每 6 小时更新一次。

两个来源都显示在运行状况 → 检测的「从俄罗斯访问」列,以及节点页面的一行中。两者都关闭时该列不显示。文档:国家视角检测。

运行状况检测:响应时间与连接时间

  • 单元格中的数字现在是通过已建立的隧道得到的响应时间,也就是用户实际感受到的时间。此前它还包含建立隧道的时间。
  • 连接时间单独显示。达到 2 秒后,单元格会多出带时钟的第二行;隧道本身是通的,所以颜色保持平静。
  • 面板所在主机丢失入站 UDP 时,Hysteria2 和 AmneziaWG 连接很慢,而同一节点上的 VLESS 很快。面板现在会在表格上方说明这一点并列出相关节点。用户不受影响,也不会打开告警。
  • 文档:数字的含义。

Cloudflare 版:六个 Worker(预览版)

  • 面板现在由一个保留地址的小型 JS 路由器,加上按角色划分的五个 Worker 组成:public、link、admin、jobs 和 provision。每个都有自己的 wasm,远低于 Cloudflare 的 64 MiB 上限。
  • mistgate edge deploy 会部署全部六个,并跳过没有变化的脚本。--rollback 会把每个 Worker 恢复到上次更新之前的版本。
  • 此版本仍是预览版,只在模拟的 Cloudflare 环境中测试过,尚未在真实账户上运行。
  • 旧的单 Worker 发布包(edge.json schema 1)会被拒绝。目前没有真实安装,因此不提供迁移。
  • 文档:安装 Cloudflare 版。设计:ADR 0009。

其他改动

  • README 新增了 Star 历史图表。
  • 国家视角告警的俄语 Telegram 标题现在是「Нода недоступна из России」。

Full Changelog: v0.1.40...v0.1.41

v0.1.40

Choose a tag to compare

@github-actions github-actions released this 14 Oct 12:25

Xray JSON and sing-box subscriptions

The same subscription link can now hand out two more formats, next to the link list and Mihomo YAML.

Xray JSON is a set of Xray configs, one per server, for v2rayNG, v2rayN and other Xray-based apps.

  • No rule hands it out by default. Add one in Subscriptions → Who gets what, for example v2rayng → Xray JSON.
  • Each config opens a local SOCKS proxy on 127.0.0.1:10808. Some apps' VPN checks look for that port.

sing-box JSON is one profile for the official sing-box apps (SFA, SFI, SFM), with every server in one switch and TUN only. It needs sing-box 1.12 or newer.

  • Panels get the rule sing-box → sing-box JSON once, at the end of the list.
  • sing-box is now in the list of known apps, with a one-tap add link.

Who gets what does not change for anyone else:

  • Happ stays on the link list.
  • Hiddify stays on Mihomo YAML: its User-Agent says ClashMeta, and the clash rule comes first.

How both formats behave:

  • Both carry the person's DNS preset. The Routing header now goes out with the link list only.
  • An active person never gets an empty document. When none of their servers fit the app, the app shows one entry that says so and points to the subscription page.
  • ?format=xray-json or ?format=sing-box at the end of a link picks the format for that one request, so you can try an app before writing a rule. It grants nothing a rule cannot.

Some servers cannot go into every format:

  • sing-box has no XHTTP and cannot pin a self-signed Hysteria2 certificate.
  • Gecko and AmneziaWG go out only in Mihomo YAML.

A server a format cannot carry is left out of that format. Docs: Subscriptions.

Formats of a profile

  • Every profile card and the profile editor show Subscription formats, the formats the profile works in.
    • Where a server drops out, a mark gives the reason, for example "not in sing-box: XHTTP".
    • In the editor the line follows the transport as you change it.
  • The user card marks the person's profiles that drop out of a format.
  • MCP user_get and subscription_preview show the same for each profile.
  • Docs: Profiles.

Smaller changes

  • Happ 6 is shown as "Happ 6.0.0", and the admin's device line now starts with the system ("iOS 27.0 · Happ 6.0.0"), as on the person's page.
  • The DNS editor lists what Xray JSON and sing-box get from a preset.

Full Changelog: v0.1.39...v0.1.40


Подписки Xray JSON и sing-box

Одна и та же ссылка подписки теперь отдаёт ещё два формата, кроме списка ссылок и Mihomo YAML.

Xray JSON — набор конфигов Xray, по одному на сервер, для v2rayNG, v2rayN и других приложений на Xray.

  • По умолчанию его не отдаёт ни одно правило. Добавьте правило в Подписки → Кому что отдавать, например v2rayng → Xray JSON.
  • Каждый конфиг открывает локальный SOCKS-прокси на 127.0.0.1:10808. Некоторые проверки VPN в чужих приложениях ищут этот порт.

sing-box JSON — один профиль для официальных приложений sing-box (SFA, SFI, SFM): все серверы в одном переключателе, только TUN. Нужен sing-box 1.12 или новее.

  • Панели один раз получают правило sing-box → sing-box JSON в конец списка.
  • sing-box появился в списке известных приложений, со ссылкой «добавить одним нажатием».

Для всех остальных ничего не меняется:

  • Happ остаётся на списке ссылок.
  • Hiddify остаётся на Mihomo YAML: в его User-Agent есть ClashMeta, а правило clash стоит выше.

Как работают оба формата:

  • Оба несут DNS-пресет человека. Заголовок Routing теперь уходит только со списком ссылок.
  • Активный человек никогда не получает пустой документ. Если ни один его сервер не подходит приложению, оно показывает одну запись об этом со ссылкой на страницу подписки.
  • ?format=xray-json или ?format=sing-box в конце ссылки выбирают формат для одного запроса, чтобы попробовать приложение до того, как писать правило. Больше, чем правило, параметр не даёт.

Не каждый сервер попадает в каждый формат:

  • в sing-box нет XHTTP, и он не умеет проверять самоподписанный сертификат Hysteria2 по отпечатку;
  • Gecko и AmneziaWG уходят только в Mihomo YAML.

Сервер, который формат нести не может, в этом формате просто отсутствует. Документация: Подписки.

Форматы профиля

  • На каждой карточке профиля и в редакторе видна строка Форматы подписки: в каких форматах профиль работает.
    • Там, где сервер выпадает, метка называет причину, например «не sing-box: XHTTP».
    • В редакторе строка меняется сразу при смене транспорта.
  • В карточке пользователя отмечены его профили, которые выпадают из какого-то формата.
  • MCP user_get и subscription_preview показывают то же для каждого профиля.
  • Документация: Профили.

Мелкие изменения

  • Happ 6 показывается как «Happ 6.0.0», а строка устройства в админке начинается с системы («iOS 27.0 · Happ 6.0.0»), как на странице человека.
  • Редактор DNS показывает, что получат из пресета Xray JSON и sing-box.

Full Changelog: v0.1.39...v0.1.40


Xray JSON 与 sing-box 订阅

同一个订阅链接现在除了链接列表和 Mihomo YAML,还能下发两种格式。

Xray JSON 是一组 Xray 配置,每台服务器一份,适用于 v2rayNG、v2rayN 和其他基于 Xray 的应用。

  • 默认没有规则下发它。请在订阅 → 下发规则中添加,例如 v2rayng → Xray JSON。
  • 每份配置都会在 127.0.0.1:10808 打开本地 SOCKS 代理。部分应用的 VPN 检测会查找这个端口。

sing-box JSON 是供官方 sing-box 应用(SFA、SFI、SFM)使用的单个配置:所有服务器在同一个选择器中,只用 TUN。需要 sing-box 1.12 或更高版本。

  • 面板会在规则列表末尾添加一次规则 sing-box → sing-box JSON。
  • sing-box 已加入已知应用列表,并附带一键添加链接。

其他人的下发方式不变:

  • Happ 仍使用链接列表。
  • Hiddify 仍使用 Mihomo YAML:它的 User-Agent 含有 ClashMeta,而 clash 规则排在前面。

两种格式的行为:

  • 两种格式都带上用户的 DNS 预设。Routing 头现在只随链接列表发送。
  • 正常使用的用户不会收到空文档。如果用户的服务器都不适用于该应用,应用会显示一条说明,并指向订阅页面。
  • 在链接末尾加上 ?format=xray-json 或 ?format=sing-box,可为单次请求指定格式,便于在写规则前先试用应用。它不会给出规则给不了的东西。

并非每台服务器都能进入每种格式:

  • sing-box 没有 XHTTP,也无法按指纹校验自签名的 Hysteria2 证书;
  • Gecko 和 AmneziaWG 只通过 Mihomo YAML 下发。

格式无法承载的服务器不会出现在该格式中。文档:订阅。

协议配置的格式

  • 每张协议配置卡片和编辑器都会显示订阅格式:该协议配置可在哪些格式中使用。
    • 服务器被排除时,标记会说明原因,例如「sing-box:不可用(XHTTP)」。
    • 在编辑器中切换传输方式时,这一行会随之更新。
  • 用户卡片会标出该用户在某种格式中被排除的协议配置。
  • MCP user_get 和 subscription_preview 会为每个协议配置显示相同信息。
  • 文档:协议配置。

其他改动

  • Happ 6 显示为「Happ 6.0.0」,后台的设备行现在以系统开头(「iOS 27.0 · Happ 6.0.0」),与用户页面一致。
  • DNS 编辑器会列出 Xray JSON 和 sing-box 从预设中获得的内容。

Full Changelog: v0.1.39...v0.1.40

v0.1.39

Choose a tag to compare

@github-actions github-actions released this 14 Oct 02:06

Devices by device ID

  • Every app that reports a device ID (Happ, INCY, v2RayTun, kl!ck and others) now gets a device of its own, with its own keys, online status and traffic. Apps without an ID (Hiddify, v2rayNG and the like) share one place. A link given to a brother now shows "2 of 5", not "1 of 5".

  • Nobody reconnects after the update. The first app with an ID keeps the person's current keys; the others get their own at their next refresh.

  • Subscriptions → Who gets what → Device limit for apps on the link has three modes:

    • Only count: nobody is refused, and the panel shows who is over the limit;
    • Limit: a new device over the limit is refused, and the app shows why;
    • Strict: apps without a device ID are refused as well.

    A panel that already has users starts in Only count. A new panel starts in Limit.

  • The user card lists every device with its system and app, online status and servers, and traffic. Each has Rename…, Delete… and Block…, and there is a Blocked list. In Limit and Strict, a device that has been silent for 30 days gives its place to a new one; AmneziaVPN keys never do.

  • On their own page, a person sees their devices and can remove or rename them, if you allow it. A copy-link button now sits next to Add a device.

  • A device appears with an app's first fetch, so a new user shows "0 of 5" until then. The page and the admin preview create nothing.

  • The Users list has an Over device limit filter. The device-limit alert, in the panel and in Telegram, comes only when someone was actually refused.

  • Docs: Users and groups, Subscriptions.

Speed limits

  • Speed per person covers all of a person's devices on one node together. Speed per device applies to each device separately. Speed per person is the existing limit and keeps its meaning. On two nodes at once, a person can get up to twice the limit.
  • The per-person limit needs the node agent from this release. An older agent holds each device to the smaller of the two, and the node's Settings tab says so.

Users list

  • The list sorts by any column (traffic, term, last online, devices, group, status). Sorting runs on the server, so it holds across pages. The header counts devices and how many of them are online.
  • The table is calmer. Status is a mark with a tooltip, traffic fits on one line, and the node is shown next to "online". On a phone, the rows become cards.

Updates page

  • What's new shows the release notes between your version and the available one, in the interface language, on the node card and on the panel card. A release with a security section is marked "update soon".

Fixes

  • A write bigger than the speed limit's bucket was charged as one bucket, so VLESS could pass up to twice the limit.
  • Reading the release notes now copes with huge or malformed answers from GitHub.
  • The header of the "Connect an app" sheet no longer lets the content behind it show through.

Full Changelog: v0.1.38...v0.1.39


Устройства по ID устройства

  • Каждое приложение, которое сообщает ID устройства (Happ, INCY, v2RayTun, kl!ck и другие), теперь получает своё устройство со своими ключами, состоянием «в сети» и трафиком. Приложения без ID (Hiddify, v2rayNG и подобные) делят одно место. Ссылка, отданная брату, теперь показывает «2 из 5», а не «1 из 5».

  • После обновления никому не нужно подключаться заново. Первое приложение с ID сохраняет нынешние ключи человека, остальные получат свои при следующем обновлении подписки.

  • В Подписки → Кому что отдавать → Лимит устройств для приложений по ссылке три режима:

    • Только считать: никому не отказывать, только показывать, кто сверх лимита;
    • Ограничивать: новое устройство сверх лимита не подключится, а приложение покажет почему;
    • Строго: не подключатся и приложения без ID устройства.

    Панель, в которой уже есть пользователи, начинает с режима Только считать. Новая панель начинает с режима Ограничивать.

  • В карточке пользователя видно каждое устройство: система и приложение, «в сети» и на каких серверах, трафик. У каждого есть Переименовать…, Удалить… и Заблокировать…, а заблокированные собраны в список Заблокированные. В режимах Ограничивать и Строго устройство, которое молчит 30 дней, уступает место новому. Ключи AmneziaVPN не уступают никогда.

  • На своей странице человек видит свои устройства и может сам удалять и переименовывать их, если вы это разрешили. Рядом с Добавить устройство появилась кнопка копирования ссылки.

  • Устройство появляется при первом обновлении подписки из приложения, поэтому новый пользователь до этого показан как «0 из 5». Страница и предпросмотр в админке ничего не создают.

  • В списке пользователей появился фильтр Сверх лимита устройств. Оповещение о лимите устройств, в панели и в Telegram, приходит, только когда кому-то действительно отказали.

  • Документация: Пользователи и группы, Подписки.

Лимиты скорости

  • Скорость на человека считается по всем устройствам человека на одной ноде вместе. Скорость на устройство ограничивает каждое устройство отдельно. Скорость на человека — это прежний лимит, его смысл не меняется. Если человек подключён к двум нодам сразу, он может получить до двойного лимита.
  • Для лимита на человека нужен агент ноды из этого релиза. Старый агент держит каждое устройство в меньшем из двух лимитов, и об этом пишет вкладка Настройки ноды.

Список пользователей

  • Список сортируется по любому столбцу (трафик, срок, был онлайн, устройства, группа, статус). Сортировка идёт на сервере, поэтому верна и на следующих страницах. В заголовке видно, сколько всего устройств и сколько из них в сети.
  • Таблица стала спокойнее. Статус показан значком с подсказкой, трафик умещается в одну строку, нода стоит рядом с «сейчас». На телефоне строки становятся карточками.

Страница «Обновления»

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

Исправления

  • Запись больше одного «глотка» лимита скорости учитывалась как один глоток, поэтому VLESS мог пропускать до двойного лимита.
  • Чтение заметок к релизам теперь выдерживает огромные или испорченные ответы GitHub.
  • Шапка окна «Подключить приложение» больше не просвечивает.

Full Changelog: v0.1.38...v0.1.39


按设备 ID 区分设备

  • 每个会报告设备 ID 的应用(Happ、INCY、v2RayTun、kl!ck 等)现在都有自己的设备,拥有独立的密钥、在线状态和流量。不报告 ID 的应用(Hiddify、v2rayNG 等)共用一个名额。把链接给了弟弟,现在会显示「2 / 5」,而不是「1 / 5」。

  • 更新后无需任何人重新连接。第一个报告 ID 的应用沿用该用户现有的密钥,其他应用在下次更新订阅时获得自己的密钥。

  • 订阅 → 下发规则 → 订阅类应用的设备上限有三种模式:

    • 仅计数:不拒绝任何人,只显示谁超出了上限;
    • 限制:超出上限的新设备无法连接,应用会显示原因;
    • 严格:不报告设备 ID 的应用也无法连接。

    已有用户的面板从仅计数开始,新面板从限制开始。

  • 用户卡片列出每台设备:系统和应用、是否在线以及连在哪些服务器、流量。每台设备都可以重命名…、删除…和拉黑…,被拉黑的设备集中在已拉黑列表里。在限制和严格模式下,静默 30 天的设备会把名额让给新设备;AmneziaVPN 密钥永远不会让出名额。

  • 在自己的页面上,用户可以看到自己的设备,并在你允许时自行删除或重命名。添加设备旁边新增了复制链接按钮。

  • 设备在应用第一次获取订阅时才会出现,因此新用户在此之前显示为「0 / 5」。打开页面和管理后台预览都不会创建设备。

  • 用户列表新增超出设备上限筛选。只有在确实有人被拒绝时,面板和 Telegram 才会发出设备上限告警。

  • 文档:用户与分组、订阅。

限速

  • 每用户限速计算一个人在同一节点上所有设备的总和,每设备限速单独限制每台设备。每用户限速就是原来的限速,含义不变。同时连接两个节点时,一个人最多可以得到两倍的限速。
  • 每用户限速需要本版本的节点 Agent。旧版 Agent 会让每台设备按两个限速中较小的那个运行,节点的设置标签页会说明这一点。

用户列表

  • 可以按任意列排序(流量、期限、最近在线、设备、分组、状态)。排序在服务器端完成,因此翻页后依然正确。标题会显示设备总数以及其中有多少在线。
  • 表格更清爽:状态显示为带提示的标记,流量显示在一行内,节点显示在「在线」旁边;在手机上,每一行会变成卡片。

「更新」页面

  • 更新内容会在节点卡片和面板卡片中,以界面语言显示从你的版本到可用版本之间的发布说明。含安全章节的版本会标注「建议尽快更新」。

修复

  • 超过限速令牌桶容量的写入只按一个桶计费,导致 VLESS 最多可以达到两倍限速。
  • 读取发布说明时,能够应对 GitHub 返回的超大或格式错误的响应。
  • 「连接应用」面板的标题栏不再透出后面的内容。

Full Changelog: v0.1.38...v0.1.39

v0.1.38

Choose a tag to compare

@github-actions github-actions released this 13 Oct 21:33

Simplified Chinese

  • Mistgate now speaks Simplified Chinese (简体中文) as well as English and Russian: the admin, the user page, the node install page, the Telegram messages and the whole documentation at mistgate.app/zh/, with its diagrams and screenshots. README in Chinese: README.zh.md.
  • The language comes from the panel's Default language (Settings → Interface), the browser (a Chinese browser gets Chinese on the user page and the install page) or the menu.
  • The language switch is now a menu (globe, the current language, the list in each language's own words) in the admin, on the user page and on the docs site.

Fixes

  • The user page named eight built-in DNS presets (Cloudflare and Google without filtering, DNS.SB, the family and safe modes) in Russian whatever the visitor's language.
  • A doctor fix that the node answers with "nothing to do" now re-runs the node's checks, so an alert the fix was meant for clears without waiting for the next report.
  • In English the admin quotes names with “ ” instead of « ».

Full Changelog: v0.1.37...v0.1.38


Упрощённый китайский

  • Mistgate теперь говорит и на упрощённом китайском (简体中文): админка, страница пользователя, страница установки ноды, сообщения в Telegram и вся документация на mistgate.app/zh/ со схемами и скриншотами. README на китайском: README.zh.md.
  • Язык берётся из языка по умолчанию панели (Настройки → Интерфейс), из браузера (китайский браузер получает китайскую страницу пользователя и страницу установки) или из меню.
  • Переключатель языка стал меню (глобус, текущий язык, список языков на них самих) в админке, на странице пользователя и на сайте документации.

Исправления

  • Страница пользователя называла восемь встроенных DNS-пресетов (Cloudflare и Google без фильтров, DNS.SB, семейные и безопасные режимы) по-русски на любом языке посетителя.
  • Исправление доктора, на которое нода ответила «нечего делать», теперь перезапускает проверки ноды, и алерт, ради которого оно запускалось, уходит, не дожидаясь следующего отчёта.
  • В английском интерфейсе имена в кавычках теперь “ ”, а не « ».

Full Changelog: v0.1.37...v0.1.38

v0.1.37

Choose a tag to compare

@github-actions github-actions released this 13 Oct 19:00

VLESS in the client-view checks

  • The panel now checks VLESS profiles the way a client connects: REALITY over TCP (Vision) or XHTTP, TLS over XHTTP or WebSocket, directly or through the CDN host from the link. The client settings are the same ones the subscription gives out.
  • The Xray client runs in a short-lived helper process (mistgate health-vless-helper, started by the panel for each check, at most two at a time). A leak or a crash inside Xray cannot touch the panel.
  • A failure says why: certificate, rejected credential, connection refused or timeout.
  • A profile behind a CDN that fails gets its own alert ("through the CDN") and does not mark the whole node as "no traffic": the node itself may be fine.
  • Guide: Health.

Refresh the node's service from the admin

  • The doctor has a new check, Agent service unit, and a fix, Refresh the service: the node rewrites its systemd unit from the template built into its own binary and restarts the agent. No terminal needed.
  • Nothing from the panel goes into the unit or the command. The new unit is written next to a copy of the old one, and if the agent does not stay up, the old unit comes back. The doctor shows the outcome.
  • Owner only; through MCP it needs the owner's approval. Connections on the node drop for a second or so.
  • Needs agent v0.1.37 on the node. Older units now point to this button instead of mistgate-node install.

Fixes

  • Nodes on agent v0.1.36 showed No guard against repeated crashes although their unit had the guard: the panel kept only the first 16 capabilities an agent reports, and v0.1.36 reports 17.
  • An admin tab left open across a panel update now says so and offers Reload; a profile form in such a tab cannot be saved until it is reloaded.
  • The Subscriptions description no longer promises mirrors (they are planned, see the roadmap); the Telegram settings call the Cloudflare Worker the panel watcher, as the docs do.

VLESS в проверках «глазами клиента»

  • Панель теперь проверяет профили VLESS так, как подключается клиент: REALITY поверх TCP (Vision) или XHTTP, TLS поверх XHTTP или WebSocket, напрямую или через хост CDN из ссылки. Настройки клиента те же, что выдаёт подписка.
  • Клиент Xray работает в коротком процессе-помощнике (mistgate health-vless-helper, панель запускает его на каждую проверку, не больше двух одновременно). Утечка или падение внутри Xray панель не задевают.
  • Сбой называет причину: сертификат, отклонённая учётка, отказ в соединении или таймаут.
  • Профиль за CDN, который не проходит проверку, получает свой алерт («через CDN») и не делает всю ноду «трафик не идёт»: сама нода может быть в порядке.
  • Руководство: Здоровье.

Обновление службы ноды из админки

  • У доктора новая проверка «Служба агента» и исправление «Обновить службу»: нода переписывает свою службу systemd по шаблону, встроенному в её бинарник, и перезапускает агента. Терминал не нужен.
  • От панели в службу и в команду ничего не попадает. Новая служба пишется рядом с копией старой, и если агент не удержался, старая возвращается. Итог показывает доктор.
  • Только владелец; через MCP — с одобрения владельца. Подключения на ноде обрываются примерно на секунду.
  • Нужен агент v0.1.37 на ноде. Подсказки про старые службы теперь ведут на эту кнопку, а не на mistgate-node install.

Исправления

  • Ноды на агенте v0.1.36 показывали «Нет защиты от повторных падений», хотя защита в службе была: панель хранила только первые 16 возможностей агента, а v0.1.36 сообщает 17.
  • Вкладка админки, открытая во время обновления панели, теперь говорит об этом и предлагает «Перезагрузить»; форму профиля в такой вкладке нельзя сохранить до перезагрузки.
  • Описание раздела «Подписки» больше не обещает зеркала (они в планах, см. роадмап); в настройках Telegram Worker на Cloudflare называется наблюдателем панели, как в документации.

Full Changelog: v0.1.36...v0.1.37

v0.1.36

Choose a tag to compare

@github-actions github-actions released this 13 Oct 10:23

VLESS over TLS, directly or behind a CDN

  • A VLESS profile can now use TLS instead of REALITY, with the XHTTP or WebSocket transport. A direct connection uses the node's Let's Encrypt certificate (TLS-ALPN-01 through TCP 443, or HTTP-01 through TCP 80 when the port is free); it is issued on demand and renewed without restarting the inbound.
  • Behind a CDN: set the CDN host and port, and clients connect there with the CDN host in Host and SNI. The CDN reaches the node over TLS only. XHTTP defaults to Packet up behind a CDN, since some CDNs buffer the whole request body; WebSocket is the fallback when XHTTP does not pass. A self-signed origin certificate is allowed only behind a CDN.
  • TCP with Vision stays REALITY-only, WebSocket is TLS-only.
  • Needs agent v0.1.36: on older nodes the panel holds such a profile back and says to update the node.
  • Guide: VLESS.

A decoy site per node

  • Node → Settings → Decoy site chooses what the node shows to anyone who is not a client, on the Hysteria2 masquerade and on VLESS REALITY with the node's own site: Built-in (the Mistgate "Coming soon" page), Panel's site (a copy of the panel's --decoy-dir), or Own site, an archive uploaded for this node only (ZIP, TAR or TAR.GZ, up to 2 MiB, static files with index.html in the root).
  • Applied state shows what is configured and what the node reports, and why a site has not reached it yet. Nodes can set the decoy site on up to 50 selected nodes at once.
  • The site reaches an online node within seconds. Needs agent v0.1.36; older nodes keep the built-in page.
  • Guide: Decoy site.

Smaller changes

  • On this node now lists each person once, with their protocols, devices and the number of connections; the MCP online list merges the same way.
  • The profiles list shows VLESS and AmneziaWG badges in their own colours.
  • README, docs and the site describe VLESS as released.

Cloudflare edition (preview)

  • mistgate edge deploy installs the panel on a Cloudflare account from a release; mistgate edge setup-link prints the one-time setup link again. Guide: Install on Cloudflare.
  • Nodes can be installed over SSH from the Cloudflare edition too, through a second Worker script.
  • Releases now carry a signed, reproducible mistgate-edge.tar.gz with edge-manifest.json and edge-manifest.sig.
  • It has been checked in workerd, not yet on a production Cloudflare account: treat it as a preview. Nothing changes on a VPS panel.

VLESS через TLS, напрямую или за CDN

  • Профиль VLESS теперь может использовать TLS вместо REALITY, с транспортом XHTTP или WebSocket. Прямое подключение работает на сертификате Let's Encrypt ноды (TLS-ALPN-01 через TCP 443 или HTTP-01 через TCP 80, если порт свободен); он выпускается по запросу и обновляется без перезапуска входящего подключения.
  • За CDN: укажи хост и порт CDN, и клиенты подключаются к нему с хостом CDN в Host и SNI. CDN ходит к ноде только по TLS. За CDN режим XHTTP по умолчанию — Packet up, потому что некоторые CDN буферизуют тело запроса целиком; WebSocket — запасной вариант, если XHTTP не проходит. Самоподписанный сертификат источника разрешён только за CDN.
  • TCP с Vision по-прежнему только с REALITY, WebSocket — только с TLS.
  • Нужен агент v0.1.36: на старых нодах панель придержит такой профиль и скажет обновить ноду.
  • Руководство: VLESS.

Сайт-ширма для каждой ноды

  • Нода → Настройки → Сайт-ширма выбирает, что нода показывает всем, кто не клиент, на маскировке Hysteria2 и на VLESS REALITY с сайтом ноды: Встроенный (страница Mistgate «Coming soon»), Сайт панели (копия --decoy-dir панели) или Свой сайт — архив, загруженный только для этой ноды (ZIP, TAR или TAR.GZ, до 2 МиБ, статические файлы с index.html в корне).
  • Применённое состояние показывает, что настроено и что сообщает нода, и почему сайт до неё ещё не дошёл. На странице Ноды можно сменить сайт-ширму сразу у 50 выбранных нод.
  • Сайт доходит до ноды в сети за секунды. Нужен агент v0.1.36; старые ноды остаются на встроенной странице.
  • Руководство: Сайт-ширма.

Мелкие изменения

  • «Сейчас на ноде» показывает каждого человека одной строкой: его протоколы, устройства и число подключений; список онлайна в MCP объединяется так же.
  • В списке профилей у значков VLESS и AmneziaWG свои цвета.
  • README, документация и сайт описывают VLESS как выпущенный.

Cloudflare-версия (предварительно)

  • mistgate edge deploy ставит панель в аккаунт Cloudflare из релиза; mistgate edge setup-link снова показывает одноразовую ссылку для настройки. Руководство: Установка на Cloudflare.
  • Ноды можно ставить по SSH и из Cloudflare-версии — через второй скрипт Worker.
  • В релизах теперь есть подписанный воспроизводимый mistgate-edge.tar.gz с edge-manifest.json и edge-manifest.sig.
  • Проверено в workerd, но ещё не в боевом аккаунте Cloudflare: это предварительная версия. На панели на VPS ничего не меняется.

Full Changelog: v0.1.35...v0.1.36

v0.1.35

Choose a tag to compare

@github-actions github-actions released this 12 Oct 17:16

VLESS REALITY with the node's own site

  • A REALITY profile can now show the node's own decoy site to everyone who is not a client: This node's site, the new default. The node serves the same site and Let's Encrypt certificate as its Hysteria2 site on an internal socket, so nothing else has to run, and the certificate keeps renewing through TCP 443. Another site works as before, and profiles created in v0.1.34 keep it.
  • The node needs a domain; a node known only by its IP gets a clear refusal and a field for one. Until Let's Encrypt has issued, visitors see a self-signed certificate.
  • Needs agent v0.1.35: on older nodes the panel holds such a profile back and says to update the node.
  • The VLESS form words its field errors in the admin's language.
  • Guide: VLESS REALITY.

Ports

  • Check ports now also checks TCP: port 80 (the Let's Encrypt challenge path, with a one-time mark) and the TLS ports of Hysteria2 sites and VLESS, answering whether a connection reaches Mistgate, another server, a program holding the port, or nothing.
  • The node page's Ports block shows the TCP rows and one line on whether the node's Let's Encrypt certificates will renew. The VLESS warning about port 80 now uses the real result instead of "unchecked".
  • Another node on agent v0.1.35 sends the check (the panel itself if there is none); the port 80 row also needs v0.1.35 on the node being checked.

Installing nodes over SSH

  • Servers that accept the password only through keyboard-interactive login now work; a server that takes keys only gets its own message instead of "wrong password".
  • The uploaded agent's checksum is verified on the node before it is installed, so a cut-off upload can no longer pass.
  • A job interrupted by three panel restarts in a row now fails with a clear reason instead of retrying forever; Retry gives it new attempts.

Cloudflare edition (preview)

Groundwork, nothing changes on a VPS panel: an unattended first start (SETUP_TOKEN_SHA256), a memory budget in CI, and the admin says plainly which features this edition cannot run yet.


VLESS REALITY с собственным сайтом ноды

  • Профиль REALITY теперь может показывать всем, кто не клиент, собственный сайт-ширму ноды: «Сайт этой ноды», новое значение по умолчанию. Нода отдаёт тот же сайт и тот же сертификат Let's Encrypt, что и её сайт Hysteria2, через внутренний сокет — больше ничего запускать не нужно, а сертификат продолжает обновляться через TCP 443. «Другой сайт» работает как раньше, профили из v0.1.34 его сохраняют.
  • Ноде нужен домен: для ноды, известной только по IP, панель объяснит это и даст поле для домена. Пока Let's Encrypt не выдал сертификат, посетители видят самоподписанный.
  • Нужен агент v0.1.35: на старых нодах панель придержит такой профиль и скажет обновить ноду.
  • Форма VLESS показывает ошибки полей на языке админки.
  • Руководство: VLESS REALITY.

Порты

  • «Проверить порты» теперь проверяет и TCP: порт 80 (путь проверки Let's Encrypt, с одноразовой меткой) и TLS-порты сайтов Hysteria2 и VLESS — доходит ли соединение до Mistgate, до чужого сервера, упирается ли в программу, занявшую порт, или не доходит никуда.
  • Блок «Порты» на странице ноды показывает TCP-строки и одну строку о том, будут ли обновляться сертификаты Let's Encrypt этой ноды. Предупреждение VLESS про порт 80 теперь берёт настоящий результат вместо «не проверено».
  • Проверку отправляет другая нода на агенте v0.1.35 (если такой нет — сама панель); для строки порта 80 v0.1.35 нужен и на проверяемой ноде.

Установка нод по SSH

  • Работают серверы, которые принимают пароль только через вход keyboard-interactive; сервер, пускающий только по ключу, получает своё сообщение вместо «неверный пароль».
  • Контрольная сумма загруженного агента проверяется на ноде до установки, так что оборванная загрузка больше не пройдёт.
  • Задание, прерванное тремя перезапусками панели подряд, теперь падает с понятной причиной, а не повторяется бесконечно; «Повторить» даёт ему новые попытки.

Cloudflare-версия (предварительно)

Подготовка, на панели на VPS ничего не меняется: первый запуск без ручных шагов (SETUP_TOKEN_SHA256), бюджет памяти в CI, а админка прямо говорит, каких функций в этой версии пока нет.

Full Changelog: v0.1.34...v0.1.35

v0.1.34

Choose a tag to compare

@github-actions github-actions released this 12 Oct 14:13

VLESS REALITY (beta)

  • A new protocol for profiles: VLESS with REALITY over XHTTP or TCP (RAW + Vision), borrowing the TLS handshake of an outside site you choose. Users get it in the same subscription link (Happ, Mihomo, plain lists). Users without a VLESS server get exactly the subscription they had before.
  • The form shows the link a client will receive. On a node where Hysteria2 already holds 443, adding VLESS on TCP 443 explains what changes: Hysteria2 keeps UDP 443, its decoy site pauses, and visitors see the REALITY target instead. Port 8443 keeps both.
  • Nodes need agent v0.1.33 or newer (update older ones from Updates). The first connection after a node starts can take about 5 s once, while REALITY measures the target site.
  • The UDP port check no longer probes TCP inbounds, and the WARP twin of a profile picks its port on the profile's own network.
  • Guide: VLESS REALITY, VLESS next to Hysteria2.

One-line install

curl -fsSL https://mistgate.app/install.sh | sudo bash -s -- --public-url https://panel.example.com

The script downloads the release, checks the binary against SHA256SUMS and the signed panel manifest, verifies the signature with the release key built into it, installs the documented systemd unit, runs setup and prints the admin address and the one-time setup link. It verifies with ssh-keygen (any OpenSSH 8.1+), so it works on Ubuntu 22.04/24.04 and Debian 12; OpenSSL 3.2+ is the fallback. Releases now carry panel-manifest.sshsig for this. Install the panel

Passwords

  • Admin passwords are hashed with argon2id at 19 MiB and 2 passes, with a pepper derived from the master key (ADR 0005). A copy of the database alone is no longer enough to test guesses, and a sign-in takes 19 MiB instead of 64.
  • Nothing to do: existing passwords keep working and are re-hashed at the next successful sign-in.

Admin and memory

  • The node page shows the node's load next to its status, as people see it on their page (low, medium, high), with the percentage.
  • The subscription endpoint no longer keeps every user's last rendered subscription after its 10-second reuse window: 14 MiB less at 5,000 users.

Docs

  • Benchmarks measured again on v0.1.33 with a corrected harness. Tunnel speed is not published until a quiet re-run.

VLESS REALITY (бета)

  • Новый протокол для профилей: VLESS с REALITY поверх XHTTP или TCP (RAW + Vision). Рукопожатие TLS берётся у выбранного вами чужого сайта. Пользователи получают его по той же ссылке подписки (Happ, Mihomo, простые списки). У кого нет VLESS-сервера, подписка не меняется ни на байт.
  • Форма сразу показывает, какую ссылку получит клиент. Если на ноде Hysteria2 уже занимает 443, при добавлении VLESS на TCP 443 панель объясняет, что изменится: Hysteria2 остаётся на UDP 443, её сайт-ширма на это время выключается, а посетители видят сайт цели REALITY. Порт 8443 сохраняет и то и другое.
  • Ноды должны быть на агенте v0.1.33 или новее (старые обновите в Обновлениях). Первое подключение после старта ноды один раз может идти около 5 с, пока REALITY замеряет сайт цели.
  • Проверка UDP-портов больше не трогает TCP-входы, а WARP-двойник профиля выбирает порт в сети самого профиля.
  • Руководство: VLESS REALITY, VLESS рядом с Hysteria2.

Установка одной командой

curl -fsSL https://mistgate.app/install.sh | sudo bash -s -- --public-url https://panel.example.com

Скрипт скачивает релиз, сверяет бинарник с SHA256SUMS и подписанным манифестом панели, проверяет подпись встроенным ключом релизов, ставит юнит systemd из документации, запускает настройку и выводит адрес админки и одноразовую ссылку настройки. Подпись проверяется через ssh-keygen (любой OpenSSH 8.1+), поэтому установка работает на Ubuntu 22.04/24.04 и Debian 12; запасной путь — OpenSSL 3.2+. Для этого в релизах теперь есть panel-manifest.sshsig. Установка панели

Пароли

  • Пароли администраторов хешируются argon2id на 19 МиБ в 2 прохода с перцем, выведенным из мастер-ключа (ADR 0005). Одной копии базы больше не хватит, чтобы перебирать пароли, а вход занимает 19 МиБ вместо 64.
  • Делать ничего не нужно: старые пароли продолжают работать и пересохраняются при следующем удачном входе.

Админка и память

  • На странице ноды рядом со статусом видна её загрузка — так, как её видят люди на своей странице (низкая, средняя, высокая), плюс процент.
  • Эндпоинт подписок больше не хранит последнюю подписку каждого пользователя после 10 секунд, в течение которых она переиспользуется: на 14 МиБ меньше при 5000 пользователей.

Документация

  • Бенчмарки перемерены на v0.1.33 с исправленным стендом. Скорость туннеля не публикуется до тихого перемера.

Full Changelog: v0.1.33...v0.1.34