# TRUF worker: шпаргалка Linux без Docker Нужны системный Python 3.12 и package-local Git, TruffleHog и Python dependencies из проверенного artifact. Native executable authority должна находиться под root-owned путём, поэтому один раз перенесите распакованный package в `/opt`: ## Один раз ```sh sudo mv ./truf-worker-linux-x86_64 /opt/truf-worker cd /opt/truf-worker ``` Подготовьте доверенные ownership и permissions package. Скрипт оставляет application code приватным для текущего user, а native Git и TruffleHog - неизменяемыми для него: ```sh sudo ./prepare-worker.sh ``` Затем создайте `~/.config/truf/worker-install.yaml` через локальный текстовый редактор: ```sh install -d -m 700 ~/.config/truf nano ~/.config/truf/worker-install.yaml ``` ```yaml server: https://pregnant.horsecock.store token: PASTE_DEVICE_TOKEN_HERE parallelism: 1 ``` Затем выполните: ```sh chmod 600 ~/.config/truf/worker-install.yaml ./truf-worker install --config ~/.config/truf/worker-install.yaml rm -- ~/.config/truf/worker-install.yaml ./truf-worker doctor --json ``` ## Каждый день ```sh ./truf-worker start --startup-timeout 30 ./truf-worker status ./truf-worker attach --follow-seconds 300 ./truf-worker watch --follow-seconds 300 ./truf-worker stop --timeout 120 --json ``` `q` или `Ctrl-C` отсоединяет `attach`/`watch`, но не останавливает worker. Portable package не устанавливает systemd unit: после перезагрузки выполните `start` из того же package под тем же OS user. ## Диагностика ```sh ./truf-worker status --json ./truf-worker logs --tail 200 ./truf-worker logs --follow --follow-seconds 300 ./truf-worker history --limit 50 ./truf-worker doctor --json ``` Clean stop должен вернуть `state: stopped`, `drained: true`, `exit_code: 0`. Иначе сохраните state и диагностику; не удаляйте work или bundles.