Files
truf-server/docs/remote-worker-quickstart-ru.md
T
2026-09-30 20:30:56 +03:00

6.3 KiB

TRUF worker: установка и работа

Worker получает задания от сервера, скачивает публичные targets и отправляет только результат сканирования. Для каждого компьютера или Docker volume нужен отдельный device token.

Сервер: https://pregnant.horsecock.store

Что получить у администратора

  1. Проверенный artifact для своей платформы и соседний файл с SHA-256.
  2. Одноразово показанный device token. Не отправляйте его в чат, лог или снимок экрана.
  3. Подтверждение, что server-side User и Device включены и artifact зарегистрирован.

Администратор создаёт отдельные User и Device на странице Workers / Dispatch, выдаёт token и назначает положительный assignment cap. Один token нельзя использовать на нескольких устройствах.

Приватный install YAML

Token не нужно передавать в аргументах процесса. Создайте локальный worker-install.yaml в приватной папке через текстовый редактор:

server: https://pregnant.horsecock.store
token: PASTE_DEVICE_TOKEN_HERE
parallelism: 1

parallelism задаёт число локальных занятых slots и должен быть от 1 до 128. После install worker сохраняет настройки в своём приватном worker.config.json; исходный YAML нужно удалить. При обычных start, stop, status, attach и watch token больше не вводится.

Шпаргалки

Каждая шпаргалка начинается из корня распакованного artifact или Compose bundle и содержит проверенные команды установки и lifecycle.

Что делают lifecycle-команды

Команда Результат
start Запускает установленный worker в фоне; повторный запуск не создаёт второй instance.
stop --timeout 120 Локально закрывает новые claims, завершает текущую работу и требует clean drain receipt.
status Показывает instance, slots, текущие phases, deadlines и retained state.
attach Подключает live status/event view; q или Ctrl-C только отсоединяет.
watch --follow-seconds 300 Запускает bounded live status view и затем отсоединяется.
logs --follow --follow-seconds 300 Показывает bounded live event/log stream.
doctor --json Проверяет package, config, пути, native tools, TLS endpoint и singleton state.

stop управляет только выбранным локальным worker. Менять server assignment cap для обычного stop, restart или обновления не требуется. Не завершайте процесс и не удаляйте state, пока clean drain receipt не подтверждён.

Capacity и backpressure

  • Один result bundle имеет hard limit 64 MiB.
  • При выдаче remote assignment server резервирует baseline 2 MiB для bundle и 2 MiB для projection; это не новый hard limit.
  • Валидный результат больше baseline атомарно расширяет reservation по фактическому размеру. При временной нехватке capacity worker повторяет upload позже.
  • Server допускает не более 50 unresolved remote assignments глобально и одновременно применяет положительный per-user cap. Фактический предел равен меньшему из доступной capacity, global limit и user cap.
  • Client parallelism ограничивает только локальные slots и не повышает server cap.

Частые состояния

  • idle или claiming: slot свободен или запрашивает задание.
  • downloading, cloning, scanning: выполняется задание.
  • uploading, awaiting_receipt: результат отправляется или ждёт подтверждения.
  • backoff: временная ошибка; причину и следующую попытку показывает status.
  • draining: новые локальные claims закрыты, текущая работа завершается.
  • stopped: clean shutdown завершён.

При проблеме сохраните вывод doctor --json, status --json и logs --tail 200. Никогда не прикладывайте device token, install YAML или приватный worker.config.json.

Безопасное обновление

  1. Выполните локальный stop --timeout 120 --json и получите drained: true, exit_code: 0.
  2. Сохраните предыдущий точный artifact/image и весь state/volume.
  3. Проверьте SHA-256 и package identity новой версии.
  4. Windows/Linux: распакуйте новую версию в отдельную папку. Docker: загрузите новый image и пересоздайте только container с прежним volume.
  5. Выполните doctor, start, status и bounded watch.

Не удаляйте локальные state, work, bundles, events, history или Docker volume при ошибке и не используйте docker compose down --volumes. Они нужны для безопасного продолжения и authoritative receipt recovery.