Українська
Почати
← Усі шаблони

OpenClaw на Pethost в один клік

ШІ-асистент, що живе у ваших месенджерах

Що відбудеться

  1. Ви входите в Pethost або створюєте акаунт — з ключем доступу, через GitHub або Google.
  2. Машини ще немає? Ви обираєте тариф, і ми готуємо машину для вас. Посилання чекає у вашому браузері, доки машина не буде готова.
  3. Вікно «Новий проєкт» відкривається на цьому застосунку. Ви заповнюєте те, що він просить, і натискаєте «Створити проєкт»: API-ключ OpenAI (необов’язково), API-ключ Anthropic (необов’язково).
  4. За хвилину-дві застосунок працює за власною адресою з HTTPS. Його секрети створюються випадково, а дані потрапляють у щонічний бекап.
  5. Це проєкт як будь-який інший: його compose.yaml, .env, логи й термінал — у панелі, а ваш агент може його змінити, відкотити або відновити.

Перші кроки

Відкрийте адресу і вставте токен шлюзу в поле Gateway secret: це OPENCLAW_GATEWAY_TOKEN у файлі .env проєкту. Потім один раз підтвердьте браузер у терміналі сервісу openclaw: спершу openclaw devices list, далі openclaw devices approve <requestId>. Ключ моделі додають у Settings, Models.

Що запускається

Шаблон — це цей compose.yaml і змінні, які він записує в .env проєкту. Pethost запускає файл так, як його написано.

services:
  openclaw:
    image: ghcr.io/openclaw/openclaw:2026.10.3
    restart: unless-stopped
    environment:
      OPENCLAW_GATEWAY_TOKEN: ${OPENCLAW_GATEWAY_TOKEN}
      OPENAI_API_KEY: ${OPENAI_API_KEY:-}
      ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY:-}
    # The gateway answers 403 until its config names the proxy's network and the
    # origin the Control UI is opened from, and it has no flag or variable for
    # either. So the config is written once, into the state volume, where the app
    # keeps and rewrites it; then the image's own entrypoint starts the gateway.
    command:
      - sh
      - -c
      - |
        set -e
        cfg=/home/node/.openclaw/openclaw.json
        if [ ! -s "$$cfg" ]; then
          cat > "$$cfg" <<'JSON'
        {
          "gateway": {
            "mode": "local",
            "bind": "lan",
            "auth": { "mode": "token" },
            "trustedProxies": ["10.192.0.0/10"],
            "controlUi": { "allowedOrigins": ["${CONTROL_UI_ORIGIN}"] }
          }
        }
        JSON
          chmod 600 "$$cfg"
        fi
        if [ -f /app/docker-entrypoint.mjs ]; then
          exec node /app/docker-entrypoint.mjs node openclaw.mjs gateway --allow-unconfigured --bind lan --port 18789
        fi
        exec node openclaw.mjs gateway --allow-unconfigured --bind lan --port 18789
    volumes:
      - state:/home/node/.openclaw
      - auth-keys:/home/node/.config/openclaw
    # The image's own check runs every 3 minutes, so a deploy would wait that long.
    healthcheck:
      test: ["CMD", "node", "-e", "fetch('http://127.0.0.1:18789/healthz').then(r=>process.exit(r.ok?0:1),()=>process.exit(1))"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 5m
      start_interval: 5s

volumes:
  state:
  auth-keys: