2026 OpenClaw на арендованной Mac Mini: GitLab CI Scheduled Pipeline — ночной патруль, утренний дайджест и воспроизводимые шаги
Командам нужен OpenClaw на арендованной Mac Mini для ночного патруля без ручного SSH, но часовой механизм должен гарантированно поднимать job и формировать утренний дайджест для дежурства.
Ниже — воспроизводимая схема GitLab CI scheduled pipeline с минимальными правами токенов, ужесточением webhook, повторами при сбоях и архивом логов с явными чек-пойнтами. Дополните материалом про маршрутизацию моделей и квоты OpenClaw, матрицу планирования 7×24 и оглавлением блога.
Почему одного расписания в GitLab недостаточно для арендатора OpenClaw
- Избыточные токены. Персональный токен с областью api при утечке даёт слишком широкий радиус по организации; для триггера pipeline достаточно узкой роли.
- Webhook без границ. Публичный endpoint без allow list по IP и без ротации заголовка HMAC собирает шум и попытки повтора запросов.
- Потеря следов. Job зелёный, но артефакты истекли до стадии утреннего дайджеста, и аудит ночного патруля невозможен без локального архива на Mac.
Матрица решений: scheduled trigger, входящий webhook или только чтение API
Выберите один основной канал; смешение без регламента удваивает объём проверок безопасности и усложняет откат.
| Паттерн | Когда уместен | Минимальная учётная запись |
|---|---|---|
| Только расписание GitLab | Репозиторий под контролем команды; «источник истины» для часов — GitLab | Trigger token с правом только на trigger pipeline |
| Входящий webhook на Mac | OpenClaw должен стартовать в считанные секунды после внешнего события | Общий секрет HMAC плюс reverse proxy с фильтром IP |
| Опрос read_api | Нужен статус для дашборда без удалённого исполнения кода на узле | Project token с read_api и сужением путей запросов |
Шесть воспроизводимых шагов: ночной патруль и утренний дайджест
- Создайте trigger token в Settings → CI/CD, сохраните в маскированной переменной
OPENCLAW_TRIGGER_TOKEN; не смешивайте с токеном для чтения статуса. - Добавьте расписание A на локальную ночь с
OPENCLAW_MODE=patrolи расписание B перед стендапом сOPENCLAW_MODE=digest; зафиксируйте часовой пояс в описании pipeline. - Привяжите работу к тегу раннера вроде
runmini-mac-miniили вызывайтеsshс закреплённым known_hosts и отдельным ключом только для CI. - В
.gitlab-ci.ymlзадайтеretryсmax: 2для классовrunner_system_failureиstuck_or_timeout_failure, чтобы пережить кратковременные обрывы канала к арендованному узлу. - Объявите
artifactsс путёмlogs/openclaw/иexpire_inне меньше двенадцати часов, чтобы дайджест прочитал ночные файлы без гонки с уборкой артефактов. - Опишите откат: отключение расписаний и отзыв trigger token одним change request; зафиксируйте владельца секретов и срок ротации.
Команды и чек-пойнты (админская станция, подставьте свои значения)
Ручной запуск патруля без ожидания cron GitLab подтверждает что ref и переменные доходят до pipeline.
curl --request POST \
--form token="$OPENCLAW_TRIGGER_TOKEN" \
--form ref=main \
--form "variables[OPENCLAW_MODE]=patrol" \
"$CI_API_V4_URL/projects/$CI_PROJECT_ID/trigger/pipeline"
Чек-пойнт 1: pipeline создан
curl --header "PRIVATE-TOKEN: $READ_API_TOKEN" \
"$CI_API_V4_URL/projects/$CI_PROJECT_ID/pipelines?per_page=1"
Чек-пойнт 2: после патруля есть файл лога на Mac
test -f logs/openclaw/patrol-$(date +%Y%m%d).log && echo ok
Согласуйте часовой пояс с регионом узла RunMini. Перед доверием к ночным job проверьте стабильность SSH по центру помощи.
Архив логов на арендованной Mac
- Пишите stdout и stderr OpenClaw в
~/Library/Logs/OpenClaw/с датой в имени файла. - Сжимайте предыдущие сутки через
gzipдо шага загрузки артефактов дайджеста. - Держите локально не менее семи вращаемых файлов, чтобы сравнить плохую ночь без ожидания восстановления из GitLab.
Опорные параметры для регламентов и смет
- Два автоматических повтора закрывают большинство транзиентных сбоев раннера и не скрывают ошибки учётных данных.
- Двенадцать часов минимального хранения артефактов типично перекрывает окно от ночного патруля до утреннего дайджеста.
- Пять минут допустимого расхождения часов между GitLab и Mac при проверке подписи webhook.
- Раздельные переменные CI на каждое расписание изолируют побочные эффекты патруля от логики только чтения в дайджесте.
FAQ: разбор полётов
- В GitLab pipeline в статусе «запущен», но на Mac OpenClaw не стартует
- Проверьте тег раннера или SSH-хост, переменные расписания и журнал job в GitLab раньше чем крутить конфигурацию самого OpenClaw.
- Webhook отвечает 401 при свежем секрете
- Исключите прокси, отбрасывающий Authorization, обновите HMAC, сузьте allow list; сверьте время на Mac и на шлюзе.
- Утренний дайджест пустой при успешном патруле
- Убедитесь что expire_in пережил до утра, путь к артефактам совпадает с ночным job, добавьте guard по glob даты.
- Нужен ли один токен на патруль и дайджест
- Лучше разнести секреты по расписаниям: отзыв одного канала не должен лишать команды read-only сводки.
Заключение и CTA: закрепите OpenClaw на выделенном Apple Silicon — откройте тарифы, выберите Mac Mini, завершите оформление аренды без обязательного входа на этапе оплаты. Детали удалённого доступа — в центре помощи.
Узел Mac для OpenClaw и GitLab CI по расписанию
Запускайте scheduled pipelines на стабильном арендованном хосте. С главной перейдите к ценам и оформлению без обязательного входа. В помощи — SSH и VNC; в блоге — гайды по эксплуатации.
Короткие ссылки: блог, помощь, покупка — для связки OpenClaw и GitLab на Mac Mini в аренде.