6.3 KiB
TRUF worker: установка и работа
Worker получает задания от сервера, скачивает публичные targets и отправляет только результат сканирования. Для каждого компьютера или Docker volume нужен отдельный device token.
Сервер: https://pregnant.horsecock.store
Что получить у администратора
- Проверенный artifact для своей платформы и соседний файл с SHA-256.
- Одноразово показанный device token. Не отправляйте его в чат, лог или снимок экрана.
- Подтверждение, что 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.
Безопасное обновление
- Выполните локальный
stop --timeout 120 --jsonи получитеdrained: true,exit_code: 0. - Сохраните предыдущий точный artifact/image и весь state/volume.
- Проверьте SHA-256 и package identity новой версии.
- Windows/Linux: распакуйте новую версию в отдельную папку. Docker: загрузите новый image и пересоздайте только container с прежним volume.
- Выполните
doctor,start,statusи boundedwatch.
Не удаляйте локальные state, work, bundles, events, history или Docker
volume при ошибке и не используйте docker compose down --volumes. Они нужны
для безопасного продолжения и authoritative receipt recovery.