Разделы документации

Admin API: proxy-серверы и Cloudflare

Семь методов Admin API: список, добавление, проверка и удаление proxy-серверов и аккаунтов Cloudflare, через которые трекер меняет A-записи доменов.

Через API доступны те же действия, что и в разделе панели Proxy-серверы: добавить ноду, проверить её, удалить, подключить и отключить аккаунт Cloudflare. Все методы требуют токен с доступом Полный доступ (full). Авторизация описана на странице Admin API: обзор и авторизация, формат запросов и ошибок — на странице Формат запросов, ответов и ошибок.

Общие правила

  • Записи принадлежат команде: токен видит и меняет только ноды и аккаунты своей команды.
  • Метода изменения нет ни у ноды, ни у аккаунта Cloudflare. Чтобы поменять параметры, удалите запись и создайте новую.
  • Постраничности и фильтров в списках нет.
  • Пароль SSH и токен Cloudflare принимаются только при создании. Ни один метод их не возвращает.
  • Если в адресе вместо {id} передано значение, которое не является UUID, ответ — 400 с кодом bad_request и сообщением некорректный идентификатор или значение.
  • При неактивной лицензии методы отвечают 402 — см. Истёкшая лицензия.

Направление доменов на ноду — отдельные методы POST /api/v1/domains/{id}/route и POST /api/v1/domains/route-bulk, они описаны на странице Admin API: домены.

Proxy-серверы

Объект ноды

ПолеТипОписание
idстрока, UUIDID ноды
workspace_idстрока, UUIDID команды
labelстрокаНазвание ноды
ipстрокаIPv4-адрес ноды
ssh_portчислоПорт SSH
ssh_userстрокаПользователь SSH
statusстрокаСостояние: new, provisioning, ready или error
last_errorстрокаТекст последней ошибки. Поля нет, если ошибок не было или после неё прошла успешная проверка
last_seenстрока, дата RFC 3339Время последней успешной настройки или проверки. Поля нет, пока настройка не завершилась
created_atстрока, дата RFC 3339Время добавления
host_key_fingerprintстрокаОтпечаток SSH-ключа ноды вида SHA256:…. Есть только в списке и только после успешной настройки

Значения status:

ЗначениеВ панелиЧто означает
new«новая»Нода создана, настройка не началась
provisioning«настройка…»Трекер настраивает ноду по SSH
ready«готова»На ноду можно направлять домены
error«ошибка»Настройка не удалась или нода перестала отвечать. Причина — в last_error

Список нод

http
GET /api/v1/proxy-nodes

Возвращает все ноды команды.

Права токена: full. Параметров нет.

Ответ — код 200 и массив объектов ноды. Новые ноды идут первыми. Если нод нет, приходит пустой массив [].

json
[
  {
    "id": "5d2f8c14-9a3b-4e7d-b1c6-0f8e7d6c5b4a",
    "workspace_id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
    "label": "DE-1",
    "ip": "203.0.113.10",
    "ssh_port": 22,
    "ssh_user": "root",
    "status": "ready",
    "last_seen": "2026-10-04T09:15:42.118204Z",
    "created_at": "2026-10-04T09:14:10.552871Z",
    "host_key_fingerprint": "SHA256:Zk3v0q1mYb7Qe2xL9aHn4TtR8sWc5uJd6oPfGiK1lMw"
  }
]

Добавить ноду

http
POST /api/v1/proxy-nodes

Создаёт ноду и запускает её настройку по SSH. Требования к серверу — на странице Proxy-серверы.

Права токена: full. Тело — JSON-объект:

ПолеТипОбязательностьОписание
ipстрокадаIPv4-адрес сервера, например 203.0.113.10. Адреса IPv6 и имена хостов не принимаются
ssh_passwordстрокадаПароль пользователя SSH. Используется один раз при настройке и не сохраняется
labelстроканетНазвание ноды. Пробелы по краям убираются. Без него названием станет IP
ssh_portцелое числонетПорт SSH. По умолчанию 22, значение 0 тоже означает 22
ssh_userстроканетПользователь SSH. По умолчанию root
expected_host_keyстроканетОтпечаток SSH-ключа сервера в формате SHA256, с префиксом SHA256: или без него. Если отпечаток сервера другой, пароль не отправляется и настройка завершается ошибкой

Ответ — код 201:

ПолеТипОписание
itemобъектСозданная нода, status равен provisioning
origin_hintстрокаТекст подсказки на русском, который панель показывает после добавления

Настройка идёт в фоне, на неё отводится до 3 минут. Ответ приходит сразу и результата настройки не содержит. Запрашивайте список нод и ждите, пока status сменится на ready или error. После ready подождите около минуты: сервер трекера сам начнёт принимать запросы с этой ноды.

Ошибки:

КодcodemessageКогда
400bad_requestinvalid jsonТело не является JSON-объектом
422validationip и ssh_password обязательныНе передано одно из обязательных полей
422validationip должен быть IPv4-адресом нодыВ ip не IPv4-адрес
422validationexpected_host_key: ожидается SHA256-отпечаток host-key ноды…Значение expected_host_key не похоже на отпечаток SHA256
503disabledзависит от причиныProxy-серверы на установке не настроены — см. Когда функция выключена

Ошибки самой настройки — неверный пароль, недоступный сервер, несовпадение отпечатка — в ответ не попадают. Они записываются в last_error ноды со статусом error. Тексты разобраны на странице Proxy-серверы.

Пример запроса:

bash
curl -X POST https://panel.example.com/api/v1/proxy-nodes \
  -H "Api-Key: <токен>" \
  -H "Content-Type: application/json" \
  -d '{"label":"DE-1","ip":"203.0.113.10","ssh_port":22,"ssh_user":"root","ssh_password":"<пароль SSH>"}'

Проверить ноду

http
POST /api/v1/proxy-nodes/{id}/health

Подключается к ноде по SSH с сохранённым ключом и проверяет, что веб-сервер на ней запущен. Проверка длится до 25 секунд.

Права токена: full. Тела запроса нет. В адресе {id} — ID ноды из списка.

Ответ — код 200 в обоих случаях, результат в поле status:

ПолеТипОписание
statusстрокаready — нода ответила, error — проверка не прошла
errorстрокаТекст ошибки. Есть только при status = error
json
{"status": "ready"}

При успехе обновляется last_seen ноды, её status становится ready, а last_error очищается. При неудаче текст ошибки с пометкой ручная проверка: записывается в last_error, а status самой ноды не меняется. Автоматический контроль нод и перенос доменов описаны на странице Proxy-серверы.

Ошибки:

КодcodemessageКогда
400bad_requestнекорректный идентификатор или значение{id} не UUID
404not_foundresource not foundНоды с таким ID нет
422not_provisionedнода ещё не провиженаНастройка ноды ещё не завершилась или не удалась
503disabledNODE_ENC_KEY не заданProxy-серверы на установке не настроены

Пример запроса:

bash
curl -X POST https://panel.example.com/api/v1/proxy-nodes/5d2f8c14-9a3b-4e7d-b1c6-0f8e7d6c5b4a/health \
  -H "Api-Key: <токен>"

Удалить ноду

http
DELETE /api/v1/proxy-nodes/{id}

Удаляет ноду из трекера и снимает привязку её доменов.

Права токена: full. Тела запроса нет. В адресе {id} — ID ноды из списка.

Ответ — код 204 без тела.

Если ноды с таким ID нет или она уже удалена, ответ — 404 с кодом not_found.

Внимание.

DNS-записи в Cloudflare при удалении не меняются. Домены, которые указывают на IP удалённой ноды, перестанут открываться. Сначала направьте их на другую ноду.

Аккаунты Cloudflare

Аккаунт — сохранённый API-токен Cloudflare. Через него трекер ставит A-запись домена на IP ноды. Какие права нужны токену и что трекер делает в DNS — на странице Работа с Cloudflare.

Объект аккаунта

ПолеТипОписание
idстрока, UUIDID аккаунта
labelстрокаНазвание
created_atстрока, дата RFC 3339Время добавления

Список аккаунтов

http
GET /api/v1/cf-accounts

Возвращает подключённые аккаунты Cloudflare команды без токенов.

Права токена: full. Параметров нет.

Ответ — код 200 и массив объектов аккаунта в порядке добавления. Если аккаунтов нет, приходит пустой массив [].

Подключить аккаунт

http
POST /api/v1/cf-accounts

Проверяет токен Cloudflare запросом списка зон и сохраняет его.

Права токена: full. Тело — JSON-объект:

ПолеТипОбязательностьОписание
tokenстрокадаAPI-токен Cloudflare
labelстроканетНазвание. Без него названием станет Cloudflare (N зон), где N — число зон, доступных токену

Ответ — код 201:

ПолеТипОписание
itemобъектСозданный аккаунт
zonesчислоСколько зон доступно токену

Ошибки:

КодcodemessageКогда
422validationtoken обязателенПоле token пустое, состоит из пробелов или тело не является JSON-объектом
422cf_errorтокен не прошёл проверку: …Cloudflare не отдал список зон по этому токену. После двоеточия — причина
503disabledшифрование не настроено: задайте NODE_ENC_KEYProxy-серверы на установке не настроены

Пример запроса:

bash
curl -X POST https://panel.example.com/api/v1/cf-accounts \
  -H "Api-Key: <токен>" \
  -H "Content-Type: application/json" \
  -d '{"label":"Основной аккаунт","token":"<API-токен Cloudflare>"}'

Отключить аккаунт

http
DELETE /api/v1/cf-accounts/{id}

Удаляет сохранённый токен Cloudflare.

Права токена: full. Тела запроса нет. В адресе {id} — ID аккаунта из списка.

Ответ — код 204 без тела. DNS-записи в Cloudflare не меняются. Домены этого аккаунта трекер больше не сможет направлять на ноды.

Если аккаунта с таким ID нет или он уже удалён, ответ — 404 с кодом not_found.

Когда функция выключена

Код 503 с code = disabled означает, что на сервере трекера не заданы параметры proxy-серверов: NODE_ENC_KEY или NODE_ORIGIN_HOST. Установщик записывает оба параметра сам, поэтому на установке, развёрнутой по странице Установка, этот ответ не появляется.

При добавлении ноды текст в message зависит от того, какого параметра нет:

  • фича прокси-нод выключена: задайте NODE_ENC_KEY (openssl rand -hex 32);
  • NODE_ORIGIN_HOST не задан (адрес origin для нод).

Списки и удаление работают и без этих параметров: GET и DELETE ответ disabled не возвращают.

Обновлено Нужна помощь? ↗