Сервисы
services запускают фоновые компоненты, которые не являются ни входящими, ни исходящими: API sing-box, замену systemd-resolved, API управления сервером Shadowsocks, DERP-ретранслятор Tailscale, сервер realm для Hysteria, общий доступ к USB/IP-устройствам и несколько помощников. Форма записи — тот же плоский конверт, что и везде в конфигурации: type / tag плюс собственные поля выбранного типа на том же уровне.
Конверт
| Поле | Тип | По умолчанию | Допустимые значения | Описание |
|---|---|---|---|---|
type | string | — | api | resolved | ssm-api | hysteria-realm | derp | ccm | ocm | oom-killer | usbip-server | usbip-client | Тип сервиса. Определяет, в какую структуру параметров декодируется остальная часть объекта. Некоторые типы существуют только в сборках с соответствующим тегом — см. «Примечания». |
tag | string | — | — | Уникальное имя этого сервиса; используется в строках журнала. |
Исходный код: option/service.go:18-22 · зафиксировано на v1.14.2 (af6e64c)
Типы сервисов
| Тип | Что запускает |
|---|---|
api | API 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-api | Shadowsocks Server Management API — HTTP-интерфейс для создания и удаления пользователей на работающем входящем Shadowsocks. |
hysteria-realm | Сервер-посредник для обхода NAT в Hysteria2. См. поля realm на странице Hysteria2. См. Hysteria realm. |
derp | Встроенный сервер DERP-ретрансляции Tailscale. См. Tailscale. |
ccm / ocm | Claude 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)
