Hosting
Среда выполнения Docker VM
Общие шаги среды выполнения для Docker-установок на базе VM, таких как GCP, Hetzner и похожие VPS-провайдеры.
Встройте обязательные бинарные файлы в образ
Установка бинарных файлов внутри запущенного контейнера — ловушка. Все, что устанавливается во время выполнения, будет потеряно при перезапуске.
Все внешние бинарные файлы, требуемые навыками, должны быть установлены во время сборки образа.
Примеры ниже показывают только три распространенных бинарных файла:
gog(изgogcli) для доступа к Gmailgoplacesдля Google Placeswacliдля WhatsApp
Это примеры, а не полный список. Вы можете установить столько бинарных файлов, сколько нужно, используя тот же шаблон.
Если позже вы добавите новые навыки, зависящие от дополнительных бинарных файлов, необходимо:
- Обновить Dockerfile
- Пересобрать образ
- Перезапустить контейнеры
Пример Dockerfile
FROM node:24-bookworm RUN apt-get update && apt-get install -y socat && rm -rf /var/lib/apt/lists/* # Example binary 1: Gmail CLI (gogcli — installs as `gog`)# Copy the current Linux asset URL from https://github.com/steipete/gogcli/releasesRUN curl -L https://github.com/steipete/gogcli/releases/latest/download/gogcli_linux_amd64.tar.gz \ | tar -xzO gog > /usr/local/bin/gog; \ chmod +x /usr/local/bin/gog # Example binary 2: Google Places CLI# Copy the current Linux asset URL from https://github.com/steipete/goplaces/releasesRUN curl -L https://github.com/steipete/goplaces/releases/latest/download/goplaces_linux_amd64.tar.gz \ | tar -xzO goplaces > /usr/local/bin/goplaces; \ chmod +x /usr/local/bin/goplaces # Example binary 3: WhatsApp CLI# Copy the current Linux asset URL from https://github.com/steipete/wacli/releasesRUN curl -L https://github.com/steipete/wacli/releases/latest/download/wacli-linux-amd64.tar.gz \ | tar -xzO wacli > /usr/local/bin/wacli; \ chmod +x /usr/local/bin/wacli # Add more binaries below using the same pattern WORKDIR /appCOPY package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc ./COPY ui/package.json ./ui/package.jsonCOPY scripts ./scripts RUN corepack enableRUN pnpm install --frozen-lockfile COPY . .RUN pnpm buildRUN pnpm ui:installRUN pnpm ui:build ENV NODE_ENV=production CMD ["node","dist/index.js"]Сборка и запуск
docker compose builddocker compose up -d openclaw-gatewayЕсли сборка завершается ошибкой Killed или exit code 137 во время pnpm install --frozen-lockfile, на VM не хватает памяти.
Перед повторной попыткой используйте класс машины большего размера.
Проверьте бинарные файлы:
docker compose exec openclaw-gateway which gogdocker compose exec openclaw-gateway which goplacesdocker compose exec openclaw-gateway which wacliОжидаемый вывод:
/usr/local/bin/gog/usr/local/bin/goplaces/usr/local/bin/wacliПроверьте Gateway:
docker compose logs -f openclaw-gatewayОжидаемый вывод:
[gateway] listening on ws://0.0.0.0:18789Что где сохраняется
OpenClaw работает в Docker, но Docker не является источником истины. Все долговременное состояние должно переживать перезапуски, пересборки и перезагрузки.
| Компонент | Расположение | Механизм сохранения | Примечания |
|---|---|---|---|
| Конфигурация Gateway | /home/node/.openclaw/ |
Монтирование тома хоста | Включает openclaw.json, .env |
| Профили авторизации моделей | /home/node/.openclaw/agents/ |
Монтирование тома хоста | agents/<agentId>/agent/auth-profiles.json (OAuth, API-ключи) |
| Ключ профиля авторизации | /home/node/.config/openclaw/ |
Монтирование тома хоста | Локальный ключ шифрования для токенов профиля авторизации OAuth |
| Конфигурации навыков | /home/node/.openclaw/skills/ |
Монтирование тома хоста | Состояние уровня навыка |
| Рабочая область агента | /home/node/.openclaw/workspace/ |
Монтирование тома хоста | Код и артефакты агента |
| Сессия WhatsApp | /home/node/.openclaw/ |
Монтирование тома хоста | Сохраняет вход по QR-коду |
| Хранилище ключей Gmail | /home/node/.openclaw/ |
Том хоста + пароль | Требует GOG_KEYRING_PASSWORD |
| Пакеты Plugin | /home/node/.openclaw/npm, /home/node/.openclaw/git |
Монтирование тома хоста | Корневые каталоги загружаемых пакетов Plugin |
| Внешние бинарные файлы | /usr/local/bin/ |
Образ Docker | Должны быть встроены во время сборки |
| Среда выполнения Node | Файловая система контейнера | Образ Docker | Пересобирается при каждой сборке образа |
| Пакеты ОС | Файловая система контейнера | Образ Docker | Не устанавливайте во время выполнения |
| Контейнер Docker | Эфемерный | Перезапускаемый | Можно безопасно удалить |
Обновления
Чтобы обновить OpenClaw на VM:
git pulldocker compose builddocker compose up -d