is_disabled = false# ✅ Правильно — через API (инвалидирует кэш user→inbound)
PATCH /api/internal-squads/{squad_uuid}
Content-Type: application/json
{
"uuid": "09fa8837-3e1f-415a-9411-17f6d5e0445f",
"inbounds": ["existing_uuid_1", "existing_uuid_2", "new_inbound_uuid"]
}
# После — явный рестарт ноды
POST /api/nodes/{node_uuid}/actions/restart
❌ Никогда не делать через raw SQL в
internal_squad_inbounds— SQL не инвалидирует кэш, нода видит конфиг актуальным и не пересылает новые inbound-ы.
Первый авто-пуш конфига может зарейситься (inbound пропускается). Всегда делать явный рестарт после добавления:
POST /api/nodes/{node_uuid}/actions/restart
Hosts читаются из БД при рендеринге подписки — SQL-изменения вступают в силу сразу (рестарт remnawave не нужен). Создавать/редактировать можно через UI или SQL.
Поле xhttp_extra_params jsonb с override(host, inbound) полностью заменяет блок extra, не merge. Если выставить частично — остальные поля (xmux, padding, sc*) будут потеряны.
Пример полного набора для Yandex CDN:
{
"mode": "auto",
"uplinkHTTPMethod": "HEAD",
"uplinkDataPlacement": "body",
"seqKey": "csrftoken",
"seqPlacement": "cookie",
"sessionKey": "session_id",
"sessionPlacement": "cookie",
"xPaddingKey": "_t",
"xPaddingHeader": "X-CSRFToken",
"xPaddingPlacement": "queryInHeader",
"xPaddingObfsMode": true,
"xPaddingMethod": "tokenish",
"xmux": {
"maxConcurrency": "16-32",
"cMaxReuseTimes": 0,
"cMaxLifetimeMs": 0,
"hKeepAlivePeriod": 30,
"hMaxRequestTimes": "600-900"
}
}
⚠️ Не указывать
maxConnectionsвместе сmaxConcurrency— xray отклонит конфиг с "maxConnections cannot be specified together with maxConcurrency".
PATCH /api/nodes/{node_uuid}
{
"uuid": "...",
"configProfile": {
"activeConfigProfileUuid": "5592a1f4-...",
"activeInbounds": ["uuid1", "uuid2", "uuid_new"] # ВСЕ, включая существующие
}
}
⚠️ Всегда включать все существующие inbound-ы + новые. Иначе старые пропадут.