Главная / Блог

Сервер и логи терминала

2026 OpenClaw демон и автозапуск: launchd на удалённом Mac с VNC

25 марта 2026 г. · около 12 мин

Чтобы процесс переживал обрывы SSH и перезагрузки, на macOS используют launchd и пользовательский LaunchAgent: аргументы, stdout/stderr в файлы, при необходимости политика перезапуска. На удалённом Mac сначала пройдите графические запросы через VNC, затем launchctl bootstrap gui/$(id -u). Путь к бинарнику — which openclaw. Секреты не храните в открытом plist.

На арендованных узлах добавляются соседи по железу, окна обслуживания и смена IP. Храните plist в Git без секретов и ведите короткий runbook: ночью «пропал порт» чаще всего означает ожидание разрешения в GUI, а не «сломался интернет».

Без демона что ломается

Сравнение

СпособКогдаАвтозапускПосле паденияАудит
ТерминалОтладкаНетНетНизкий
tmuxСредний срокСкриптыВручнуюСредний
cronПериодикаПо расписаниюНе для постоянного шлюзаСредний
LaunchAgentПосле логинаДаОпционально KeepAliveВысокий

Шесть шагов

Уточнить абсолютный путь и аргументы.
Создать ~/Library/LaunchAgents/com.example.openclaw.plist.
Заполнить Label, ProgramArguments, RunAtLoad, пути логов.
plutil -lint и bootstrap.
Разрешения в сессии VNC.
Проверка порта, перезагрузка; перед обновлением bootout.
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0"><dict>
<key>Label</key><string>com.example.openclaw</string>
<key>ProgramArguments</key><array>
<string>/opt/homebrew/bin/openclaw</string><string>gateway</string>
</array>
<key>RunAtLoad</key><true/>
<key>StandardOutPath</key><string>/tmp/openclaw.out.log</string>
<key>StandardErrorPath</key><string>/tmp/openclaw.err.log</string>
</dict></plist>

WorkingDirectory, переменные среды, секреты не в plist

Укажите WorkingDirectory, если OpenClaw использует относительные пути. В EnvironmentVariables добавляйте только безопасные вещи вроде расширенного PATH. Ключи API — в связку ключей или файлы с жёсткими правами. На shared-хостах проверяйте chmod plist и целостность ProgramArguments.

KeepAlive и шторм перезапусков

Неверная конфигурация + KeepAlive = бесконечные рестарты и забитые логи. Сначала стабильный запуск без KeepAlive, чтение stderr, затем троттлинг по документации Apple. Ограничивайте рост логов.

VNC-разбор, когда launchctl «в порядке»

Специальные возможности, полный диск, скрытый системный диалог — типичные причины «процесс есть, сервиса нет». Графическая сессия быстрее SSH на арендованной машине.

Плейбук отката

  1. Сохранить plist и последние ~200 строк stderr.
  2. launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/com.example.openclaw.plist (домен поправить).
  3. Ручной запуск в VNC до стабильности, сравнить argv.
  4. Повторный bootstrap после plutil -lint и ревью.

Чеклист в день обновления

Пути к бинарю и каталоги по умолчанию могут смениться. Схема: один интерактивный запуск в VNC, закрыть мастера, записать рабочие argv, обновить plist, перезагрузить job, сравнить интенсивность stderr до/после минуту к минуте. На аренде с несколькими администраторами назначьте владельца plist, иначе получите взаимные перезаписи.

Минимальный мониторинг без дорогого APM

Часто достаточно кода возврата launchctl print, времени модификации stderr и HTTP-проверки консоли. Следите за свободным местом: KeepAlive с крутящимися логами может заполнить том за ночь.

Конфликты портов и двойной запуск

Дважды загруженный тот же Label или ручной процесс рядом с launchd на том же порту дают прерывистые ошибки bind, не объясняя, кто «победил». Договоритесь о правиле: в продакшене только launchd или для отладки сначала bootout, затем интерактивный запуск. Таблица «порт → ожидаемый процесс» в общей wiki экономит часы при передаче смены и снижает риск взаимно противоречивых «починок» ночью.

Минимальная гигиена безопасности шлюза

Слушать 0.0.0.0 или открывать сервис только через SSH-туннель — вопрос модели угроз. Арендованный Mac не оправдывает слабый VNC-пароль или переиспользование секретов. Держите токены вне plist с широкими правами и закрепите эти два предложения в начале runbook — иначе следующий дежурный повторит ту же ошибку в три часа ночи.

Материалы

10 решений по ошибкам, миграция 2026.3.x, VNC-гайд.

Итог

VNCMac — удалённый Mac с VNC плюс launchd: меньше «чёрного ящика» при правах доступа и понятнее эксплуатация.

Удалённый Mac для OpenClaw

Цены Справка