Worker-узел для multi-mode панели SharX: на машине крутится Xray (и при необходимости Telemt sidecar’ы); конфиг забирается с панели (pull/apply). Доступ к API узла — HTTPS + mTLS + JWT из бандла SECRET_KEY, а не старый NODE_API_KEY.
-
Ставите панель (Docker/скрипт из репозитория SharX) и доводите до рабочего входа в веб-UI.
-
Включаете multi-node в настройках панели (режим нескольких узлов).
-
Добавляете ноду в интерфейсе (страница узлов). Откроется модалка добавления узлы: там будет готовый фрагмент
docker-compose.yml(или инструкция «скопировать compose») с уже подставленнымиPANEL_URLиSECRET_KEY(base64 JSON bundle из панели). -
На сервере узла (отдельная машина):
- создаёте файл, например
docker-compose.yml; - вставляете содержимое из модалки;
- при необходимости правите только то, что позволяет документация/модалка (образ vs
build, тома, редко — порт, если не host-сеть).
- создаёте файл, например
-
Запуск:
docker compose up -d --build
-
В панели проверяете, что узел подключился и получил конфиг (статус, синхронизация, логи при необходимости).
Типовой docker-compose в репозитории: network_mode: host, тома под cert / data / logs, переменные PANEL_URL и SECRET_KEY. Секрет один раз копируется из панели — не выдумывайте и не смешивайте с узлами другой панели.
В режиме pairing сертификаты и проверка клиента задаются бандлом SECRET_KEY (панель выпускает материалы узла). Отдельная ручная настройка NODE_TLS_* в compose обычно не нужна, если вы используете выданный из панели сценарий.
Если панель доступна по HTTPS с корпоративным CA — следуйте подсказкам в UI/доках панели (доверие к CA на узле при pull).
| Переменная | Описание |
|---|---|
SECRET_KEY |
Обязательно. Base64 JSON bundle с панели (pairing). |
PANEL_URL |
URL панели для первого pull и фоновой синхронизации (как в модалке). |
NODE_ADDRESS |
Опционально. Публичный адрес узла, если авто не подходит (см. код/настройки). |
Устаревший NODE_API_KEY в текущем worker не используется.
- Панель обращается к узлу по HTTPS с mTLS; в заголовке
Authorization: Bearer <JWT>— токен, который выпускает панель, а не строка «api-key» пользователя. GET /health— без авторизации (проверка «узел поднялся»).
Детальный список маршрутов см. в коде node/api/server.go и в web/docs/API.md панели.
DOCKER_BUILDKIT=1 docker build --build-arg TARGETARCH=arm64 -t sharx-node -f node/Dockerfile ..Локальный запуск без Docker (для отладки): задайте SECRET_KEY и при необходимости PANEL_URL в окружении, затем:
go run ./node -port 8080node/
├── main.go
├── api/ # HTTP API
├── xray/ # процесс Xray
├── telemt/ # Telemt sidecar (multi-node)
├── configpull/ # pull конфига с панели
├── Dockerfile
└── docker-compose.yml
- Install the panel and enable multi-node mode.
- Add a node in the UI — copy the
docker-compose.ymlsnippet from the modal (PANEL_URL+SECRET_KEYbundle). - On the worker server: save as
docker-compose.yml, thendocker compose up -d --build. - Confirm the node is online in the panel.
Auth is pairing-only (SECRET_KEY); there is no NODE_API_KEY in the current worker.