Skip to content

Сервисы ​

services запускают фоновые компоненты, которые не являются ни входящими, ни исходящими: API sing-box, замену systemd-resolved, API управления сервером Shadowsocks, DERP-ретранслятор Tailscale, сервер realm для Hysteria, общий доступ к USB/IP-устройствам и несколько помощников. Форма записи — тот же плоский конверт, что и везде в конфигурации: type / tag плюс собственные поля выбранного типа на том же уровне.

Конверт ​

ПолеТипПо умолчаниюДопустимые значенияОписание
typestring—api | resolved | ssm-api | hysteria-realm | derp | ccm | ocm | oom-killer | usbip-server | usbip-clientТип сервиса. Определяет, в какую структуру параметров декодируется остальная часть объекта. Некоторые типы существуют только в сборках с соответствующим тегом — см. «Примечания».
tagstring——Уникальное имя этого сервиса; используется в строках журнала.

Исходный код: option/service.go:18-22 · зафиксировано на v1.14.2 (af6e64c)

Типы сервисов ​

ТипЧто запускает
apiAPI sing-box: gRPC / gRPC-Web-сервер для наблюдения за работающим экземпляром и управления им — логи, группы исходящих, режим Clash, соединения. Используется удалённым управлением графических клиентов, sing-box Dashboard и командой sing-box api. См. Сервис API.
resolvedПолная замена systemd-resolved: DNS-слушатель-заглушка (по умолчанию 127.0.0.53:53), отвечающий через DNS sing-box. Работает в паре с типом DNS-сервера resolved.
ssm-apiShadowsocks Server Management API — HTTP-интерфейс для создания и удаления пользователей на работающем входящем Shadowsocks.
hysteria-realmСервер-посредник для обхода NAT в Hysteria2. См. поля realm на странице Hysteria2. См. Hysteria realm.
derpВстроенный сервер DERP-ретрансляции Tailscale. См. Tailscale.
ccm / ocmClaude Code Multiplexer / OpenAI Codex Multiplexer: общий доступ удалённых клиентов к локальной подписке Claude Code или OpenAI Codex через собственные токены; OAuth-аутентификация выполняется на локальной машине.
oom-killerЗащита от нехватки памяти (memory_limit, safety_margin, интервалы проверки) для развёртываний с ограниченной памятью.
usbip-server / usbip-clientЭкспорт / импорт USB-устройств по USB/IP. См. USB/IP.

Минимальный пример ​

json
{
  "services": [
    {
      "type": "resolved",
      "tag": "resolved",
      "listen": "127.0.0.53",
      "listen_port": 53
    }
  ]
}

Примечания ​

  • resolved встраивает те же ListenOptions, что и входящие; если поля опущены, listen по умолчанию — 127.0.0.53, а listen_port — 53.
  • ssm-api принимает отображение servers (путь → тег входящего Shadowsocks) и необязательный cache_path.
  • Доступность ограничена тегами сборки: derp требует with_tailscale, ccm — with_ccm, ocm — with_ocm, hysteria-realm — with_quic, usbip-server / usbip-client — with_usbip (Linux, Windows и macOS с CGO). api, resolved, ssm-api и oom-killer компилируются всегда. Официальные релизные бинарники включают все эти теги.
  • api встраивает ListenOptions. Клиенты аутентифицируются заголовком authorization: Bearer <secret>; пустой secret отключает аутентификацию, поэтому задавайте его на любом слушателе не на loopback. Необязательный блок dashboard загружает sing-box Dashboard и отдаёт его по пути /dashboard/ на том же слушателе.
  • hysteria-realm передаёт только сигнализацию: сервер Hysteria2 за NAT регистрирует обнаруженные через STUN адреса, клиенты запрашивают их и пробивают NAT для прямого QUIC-соединения, после чего прокси-трафик идёт напрямую между ними.
  • usbip-server по умолчанию слушает порт 3240 и остаётся совместимым со стандартными клиентами USB/IP; usbip-client требует сервера sing-box (sing-usbip).
  • Незарегистрированный type приводит к ошибке запуска "unknown service type".

Сравнение с другими ядрами ​

  • Xray-core не имеет списка сервисов; ближайшие аналоги — блоки API и Метрики, которые поднимают управляющие слушатели из отдельных ключей конфигурации.
  • mihomo предоставляет управление через внешний контроллер, а не через настраиваемые фоновые сервисы.

Исходный код: option/service.go:18-22 · v1.14.2 (af6e64c)

Core Tutorial от Argsment