Перейти к содержимому

Интеграция с Remnawave

Remnawave поддерживает два способа применения HTTP-заголовков к профилям подписки.

Способ 1 — Глобально (для всех приложений)

Заголовок раздела «Способ 1 — Глобально (для всех приложений)»

В панели администратора Remnawave откройте Подписка → Настройки → Заголовки ответа. Добавьте нужные заголовки — они будут возвращаться всем клиентам при каждом запросе подписки.

Для Внешних сквадов заголовки настраиваются отдельно для каждого сквада: Пользователи → Внешние сквады → Заголовки.

Способ 2 — Точечно для Prizrak-Box через Правила ответов

Заголовок раздела «Способ 2 — Точечно для Prizrak-Box через Правила ответов»

Правила ответов позволяют применять заголовки только тогда, когда запрос поступает от конкретного клиента, определяемого по заголовку User-Agent. Это позволяет отправлять настройки именно для Prizrak-Box, не затрагивая другие приложения.

Откройте Подписка → Правила ответов и создайте новое правило. Добавьте его в начало списка для обеспечения приоритета.

Prizrak-Box представляется заголовком User-Agent следующего формата на всех платформах:

ПлатформаUser-Agent
Desktopprizrak-box/{версия} (Desktop Build; {ОС} OS; Prizrak-Core {ядро})
Androidprizrak-box/{версия} (Android Build; Prizrak-Core {ядро})
Appleprizrak-box/{версия} (Apple Build; Prizrak-Core {ядро})

Например, prizrak-box/1.0.21-beta06 (Desktop Build; Windows OS; Prizrak-Core v1.19.33-r1).

Условие prizrak-box/ подходит для всех платформ. В старых версиях строка начиналась с префикса Clash-Meta/ (Clash-Meta/Prizrak-Box (...)), поэтому правило с условием Clash-Meta/Prizrak-Box ( перестанет срабатывать на новых версиях — используйте prizrak-box/.

Используйте следующий JSON как шаблон — он охватывает все заголовки, поддерживаемые Prizrak-Box:

{
"name": "Prizrak-Box",
"description": "Заголовки для клиентов Prizrak-Box",
"enabled": true,
"operator": "AND",
"conditions": [
{
"headerName": "user-agent",
"operator": "CONTAINS",
"value": "prizrak-box/",
"caseSensitive": false
}
],
"responseType": "MIHOMO",
"responseModifications": {
"headers": [
{
"key": "profile-logo",
"value": "https://example.com/logo.png"
},
{
"key": "announce-url",
"value": "https://t.me/your_channel"
},
{
"key": "fallback-domain",
"value": "backup.example.com"
},
{
"key": "pxa-latency-dots",
"value": "1"
},
{
"key": "pxa-simple-mode",
"value": "1"
},
{
"key": "pxa-global-mode-mp",
"value": "1"
},
{
"key": "pxa-conns-view-mp",
"value": "1"
},
{
"key": "pxa-rp-mp",
"value": "1"
}
]
}
}

Удалите ненужные заголовки. Описание каждого заголовка — в разделе Поддерживаемые заголовки.


Чтобы отдавать Prizrak-Box полностью кастомный Mihomo-конфиг — например, с прокси группой Smart — укажите subscriptionTemplate в Правиле ответа:

{
"name": "Prizrak-Box Smart Template",
"description": "Кастомный шаблон Mihomo с прокси группой Smart для Prizrak-Box",
"enabled": true,
"operator": "AND",
"conditions": [
{
"headerName": "user-agent",
"operator": "CONTAINS",
"value": "prizrak-box/",
"caseSensitive": false
}
],
"responseType": "MIHOMO",
"responseModifications": {
"subscriptionTemplate": "SmartPrizrak"
}
}

Значение subscriptionTemplate (SmartPrizrak в примере) должно совпадать с именем шаблона, настроенного в панели Remnawave.

Подробнее о типе прокси группы Smart и параметрах её конфигурации — в разделе Прокси группа Smart.


Remnawave может зашифровать Mihomo-конфиг с помощью age перед отправкой клиенту Prizrak-Box. Расшифровать и применить конфиг сможет только клиент, у которого есть соответствующий секретный ключ.

Полное руководство по настройке — генерация ключей, конфигурация правила ответа в Remnawave и настройка клиента Prizrak-Box — в разделе Шифрование AGE.


4. Специфичные ключи Remnawave для шаблонов подписки

Заголовок раздела «4. Специфичные ключи Remnawave для шаблонов подписки»

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

Полная документация: docs.rw/guides/templates/mihomo


Prizrak-Box показывает короткое описание рядом с сервером или прокси группой в списке прокси. Делайте его не длиннее 30 символов — таков лимит поля в панели Remnawave.

Задаётся в настройках хоста в панели Remnawave:

  1. Откройте хост на редактирование.
  2. В блоке Опции нажмите Добавить.
  3. В разделе Подписка выберите пункт Описание сервера.
  4. Введите текст (не больше 30 символов) и сохраните хост.

Prizrak-Box читает его из ключа serverDescription прокси в подписке. Remnawave отправляет этот ключ только клиентам, которых он узнаёт, а User-Agent, начинающийся с prizrak-box/, входит в их число, поэтому дополнительная настройка не нужна.

Описание прокси группы добавляется в шаблон Mihomo, как и другие параметры групп, с помощью ключа description:

proxy-groups:
- name: 👻 Prizrak
type: select
description: Лучшая локация автоматически
proxies:
- 🇩🇪 Germany
- 🇫🇮 Finland

Описание группы показывается в строке группы, если она вложена в другую прокси группу.

Все ключи и правила отображения описаны в разделе Описания прокси и групп.


Prizrak-Box работает на ядре Prizrak-Core. В нём есть возможности, которых нет в обычном Mihomo. Чтобы пользователи получили их через подписку, нужные параметры добавляются к прокси через маппер хоста Remnawave, в список mihomo.

  • Меняется только подписка в формате Mihomo. Подписки Xray JSON и base64 остаются как были, если их списки в маппере пустые.
  • Клиенты на обычном Mihomo незнакомые ключи игнорируют и работают как раньше.
  1. Откройте Хосты и выберите хост для редактирования.
  2. В блоке Опции нажмите Добавить и в группе Расширенные выберите Маппер.
  3. В разделе Расширенные появится строка Маппер со статусом Не задано. Нажмите на неё, откроется JSON-редактор маппера.
  4. Вставьте JSON из примеров ниже и нажмите Сохранить в карточке хоста. Статус маппера сменится на Настроено.

Prizrak-Core поддерживает мультиплексирование mux.cool, совместимое с Xray. Серверам Xray, которыми управляет Remnawave, дополнительная настройка не нужна: они принимают mux.cool сами.

{
"xrayJson": [],
"mihomo": [
{
"op": "set",
"value": {
"enabled": true,
"max-carriers": 4,
"max-concurrency": 8,
"max-connections": 3,
"xudp-concurrency": 16,
"xudp-proxy-udp443": "reject"
},
"to": "['mux.cool']"
}
],
"base64": []
}

Правило set записывает объект value в ключ mux.cool прокси этого хоста. В подписке Mihomo прокси получит такой блок:

proxies:
- name: 🇩🇪 Germany
type: vless
# ...
mux.cool:
enabled: true
max-carriers: 4
max-concurrency: 8
max-connections: 3
xudp-concurrency: 16
xudp-proxy-udp443: reject

Если в REALITY-инбаунде сервера Xray задан mldsa65Seed, сервер подписывает сертификат REALITY постквантовой подписью ML-DSA-65. Prizrak-Core проверяет эту подпись, если в reality-opts прокси указан публичный ключ mldsa65-verify.

В value укажите публичный ключ ML-DSA-65 в формате base64url. Это значение mldsa65Verify, которое xray mldsa65 выводит вместе с mldsa65Seed для инбаунда.

{
"xrayJson": [],
"mihomo": [
{
"op": "set",
"value": "<mldsa65Verify>",
"to": "['reality-opts']['mldsa65-verify']"
}
],
"base64": []
}

Правило записывает ключ в reality-opts прокси этого хоста:

proxies:
- name: 🇩🇪 Germany
type: vless
# ...
reality-opts:
public-key: <X25519 public key>
short-id: <short id>
mldsa65-verify: <mldsa65Verify>

Для хостов с транспортом XHTTP Prizrak-Core умеет включать регулятор потока HTTP/2. С ним сервер присылает данные не быстрее, чем клиент их читает, и не заполняет большие окна HTTP/2. Это снижает расход памяти на клиенте и помогает на слабых устройствах. Сервер Xray настраивать не нужно: регулятор работает на стороне клиента через стандартное управление потоком HTTP/2. Если на сервере стоит Jolymmiles/Xray-core со своим регулятором (h2Flow), они работают вместе, и включать регулятор можно с любой стороны или с обеих.

Регулятор выключен по умолчанию и действует только в режиме h2. Это ALPN h2 или пустой ALPN. При ALPN h3 или http/1.1 параметр ни на что не влияет.

{
"xrayJson": [],
"mihomo": [
{
"op": "set",
"value": {
"enabled": true,
"max-stream-receive-window": 16777216,
"max-connection-receive-window": 33554432
},
"to": "['xhttp-opts']['h2-flow']"
}
],
"base64": []
}

Правило записывает блок h2-flow в xhttp-opts прокси этого хоста:

proxies:
- name: 🇩🇪 Germany
type: vless
network: xhttp
# ...
xhttp-opts:
# ...
h2-flow:
enabled: true
max-stream-receive-window: 16777216
max-connection-receive-window: 33554432

max-stream-receive-window и max-connection-receive-window — необязательные окна приёма HTTP/2 в байтах на поток и на соединение, от 65535 до 1 ГиБ. С регулятором это потолок окна. Если их не указывать, действуют окна Go по умолчанию (4 МиБ на поток), а в value достаточно "enabled": true.