Перейти до основного вмісту

Docker VM Runtime

Спільні кроки runtime для Docker-установок на VM, таких як GCP, Hetzner та подібні VPS-провайдери.

Вбудуйте потрібні бінарні файли в образ

Установлювати бінарні файли всередині вже запущеного контейнера — це пастка. Усе, що встановлено під час runtime, буде втрачено після перезапуску. Усі зовнішні бінарні файли, потрібні Skills, мають бути встановлені під час збирання образу. Наведені нижче приклади показують лише три поширені бінарні файли:
  • gog для доступу до Gmail
  • goplaces для Google Places
  • wacli для WhatsApp
Це приклади, а не повний список. Ви можете встановити стільки бінарних файлів, скільки потрібно, використовуючи той самий шаблон. Якщо пізніше ви додасте нові Skills, які залежать від додаткових бінарних файлів, вам потрібно:
  1. Оновити Dockerfile
  2. Перебудувати образ
  3. Перезапустити контейнери
Приклад 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
RUN curl -L https://github.com/steipete/gog/releases/latest/download/gog_Linux_x86_64.tar.gz \
  | tar -xz -C /usr/local/bin && chmod +x /usr/local/bin/gog

# Example binary 2: Google Places CLI
RUN curl -L https://github.com/steipete/goplaces/releases/latest/download/goplaces_Linux_x86_64.tar.gz \
  | tar -xz -C /usr/local/bin && chmod +x /usr/local/bin/goplaces

# Example binary 3: WhatsApp CLI
RUN curl -L https://github.com/steipete/wacli/releases/latest/download/wacli_Linux_x86_64.tar.gz \
  | tar -xz -C /usr/local/bin && chmod +x /usr/local/bin/wacli

# Add more binaries below using the same pattern

WORKDIR /app
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc ./
COPY ui/package.json ./ui/package.json
COPY scripts ./scripts

RUN corepack enable
RUN pnpm install --frozen-lockfile

COPY . .
RUN pnpm build
RUN pnpm ui:install
RUN pnpm ui:build

ENV NODE_ENV=production

CMD ["node","dist/index.js"]
Наведені вище URL завантаження призначені для x86_64 (amd64). Для VM на базі ARM (наприклад, Hetzner ARM, GCP Tau T2A) замініть URL завантаження на відповідні варіанти ARM64 зі сторінки випусків кожного інструмента.

Збирання і запуск

docker compose build
docker compose up -d openclaw-gateway
Якщо збирання завершується помилкою Killed або exit code 137 під час pnpm install --frozen-lockfile, VM бракує пам’яті. Перш ніж повторювати спробу, використайте більший клас машини. Перевірка бінарних файлів:
docker compose exec openclaw-gateway which gog
docker compose exec openclaw-gateway which goplaces
docker 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/Монтування host volumeМістить openclaw.json, .env
Профілі автентифікації моделей/home/node/.openclaw/agents/Монтування host volumeagents/<agentId>/agent/auth-profiles.json (OAuth, API-ключі)
Конфігурації Skills/home/node/.openclaw/skills/Монтування host volumeСтан на рівні Skill
Робочий простір агента/home/node/.openclaw/workspace/Монтування host volumeКод і артефакти агента
Сесія WhatsApp/home/node/.openclaw/Монтування host volumeЗберігає QR-вхід
Gmail keyring/home/node/.openclaw/Host volume + парольПотребує GOG_KEYRING_PASSWORD
Зовнішні бінарні файли/usr/local/bin/Docker imageМають бути вбудовані під час збирання
Node runtimeФайлова система контейнераDocker imageПеребудовується під час кожного збирання образу
OS-пакетиФайлова система контейнераDocker imageНе встановлюйте під час runtime
Docker-контейнерЕфемернийМожна перезапускатиЙого безпечно знищувати

Оновлення

Щоб оновити OpenClaw на VM:
git pull
docker compose build
docker compose up -d