Hosting

Hetzner

Мета

Запустити постійний OpenClaw Gateway на Hetzner VPS за допомогою Docker, зі стійким станом, вбудованими бінарними файлами та безпечною поведінкою перезапуску.

Якщо вам потрібен "OpenClaw 24/7 приблизно за $5", це найпростіше надійне налаштування. Ціни Hetzner змінюються; виберіть найменший Debian/Ubuntu VPS і масштабуйтеся вгору, якщо зіткнетеся з OOM.

Нагадування про модель безпеки:

  • Спільні для компанії агенти підходять, коли всі перебувають в одній межі довіри, а середовище виконання використовується лише для бізнесу.
  • Дотримуйтеся суворого розділення: окремий VPS/середовище виконання + окремі облікові записи; жодних особистих профілів Apple/Google/браузера/менеджера паролів на цьому хості.
  • Якщо користувачі можуть бути ворожими один до одного, розділяйте їх за gateway/хостом/користувачем ОС.

Див. Безпека і VPS-хостинг.

Що ми робимо (простими словами)?

  • Орендуємо невеликий Linux-сервер (Hetzner VPS)
  • Встановлюємо Docker (ізольоване середовище виконання застосунку)
  • Запускаємо OpenClaw Gateway у Docker
  • Зберігаємо ~/.openclaw + ~/.openclaw/workspace на хості (переживає перезапуски/перезбирання)
  • Отримуємо доступ до інтерфейсу керування з вашого ноутбука через SSH-тунель

Цей змонтований стан ~/.openclaw включає openclaw.json, окремі для кожного агента agents/<agentId>/agent/auth-profiles.json і .env.

До Gateway можна отримати доступ через:

  • Перенаправлення SSH-порту з вашого ноутбука
  • Пряме відкриття порту, якщо ви самостійно керуєте firewall і токенами

Цей посібник передбачає Ubuntu або Debian на Hetzner.
Якщо ви використовуєте інший Linux VPS, зіставте пакети відповідно. Для загального Docker-процесу див. Docker.


Швидкий шлях (досвідчені оператори)

  1. Підготуйте Hetzner VPS
  2. Встановіть Docker
  3. Клонуйте репозиторій OpenClaw
  4. Створіть постійні каталоги на хості
  5. Налаштуйте .env і docker-compose.yml
  6. Вбудуйте потрібні бінарні файли в образ
  7. docker compose up -d
  8. Перевірте збереження стану та доступ до Gateway

Що вам потрібно

  • Hetzner VPS з root-доступом
  • SSH-доступ із вашого ноутбука
  • Базова впевненість у роботі з SSH + копіюванням/вставленням
  • ~20 хвилин
  • Docker і Docker Compose
  • Облікові дані автентифікації моделі
  • Необов’язкові облікові дані провайдерів
    • WhatsApp QR
    • Токен Telegram-бота
    • Gmail OAuth

  • Підготуйте VPS

    Створіть Ubuntu або Debian VPS у Hetzner.

    Підключіться як root:

    ssh root@YOUR_VPS_IP
    

    Цей посібник передбачає, що VPS зберігає стан. Не розглядайте його як одноразову інфраструктуру.

  • Встановіть Docker (на VPS)

    apt-get update
    apt-get install -y git curl ca-certificates
    curl -fsSL https://get.docker.com | sh
    

    Перевірте:

    docker --version
    docker compose version
    
  • Клонуйте репозиторій OpenClaw

    git clone https://github.com/openclaw/openclaw.git
    cd openclaw
    

    Цей посібник передбачає, що ви зберете власний образ, щоб гарантувати збереження бінарних файлів.

  • Створіть постійні каталоги на хості

    Docker-контейнери ефемерні. Увесь довготривалий стан має зберігатися на хості.

    mkdir -p /root/.openclaw/workspace
    
    # Set ownership to the container user (uid 1000):
    chown -R 1000:1000 /root/.openclaw
    
  • Налаштуйте змінні середовища

    Створіть .env у корені репозиторію.

    OPENCLAW_IMAGE=openclaw:latest
    OPENCLAW_GATEWAY_TOKEN=
    OPENCLAW_GATEWAY_BIND=lan
    OPENCLAW_GATEWAY_PORT=18789
    
    OPENCLAW_CONFIG_DIR=/root/.openclaw
    OPENCLAW_WORKSPACE_DIR=/root/.openclaw/workspace
    
    GOG_KEYRING_PASSWORD=
    XDG_CONFIG_HOME=/home/node/.openclaw
    

    Задайте OPENCLAW_GATEWAY_TOKEN, коли хочете керувати стабільним токеном gateway через .env; інакше налаштуйте gateway.auth.token перед тим, як покладатися на клієнтів між перезапусками. Якщо жодного джерела немає, OpenClaw використовує токен лише для поточного запуску. Згенеруйте пароль keyring і вставте його в GOG_KEYRING_PASSWORD:

    openssl rand -hex 32
    

    Не комітьте цей файл.

    Цей файл .env призначений для змінних середовища контейнера/середовища виконання, таких як OPENCLAW_GATEWAY_TOKEN. Збережена автентифікація OAuth/API-key провайдера міститься у змонтованому ~/.openclaw/agents/<agentId>/agent/auth-profiles.json.

  • Конфігурація Docker Compose

    Створіть або оновіть docker-compose.yml.

    services:
      openclaw-gateway:
        image: ${OPENCLAW_IMAGE}
        build: .
        restart: unless-stopped
        env_file:
          - .env
        environment:
          - HOME=/home/node
          - NODE_ENV=production
          - TERM=xterm-256color
          - OPENCLAW_GATEWAY_BIND=${OPENCLAW_GATEWAY_BIND}
          - OPENCLAW_GATEWAY_PORT=${OPENCLAW_GATEWAY_PORT}
          - OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}
          - GOG_KEYRING_PASSWORD=${GOG_KEYRING_PASSWORD}
          - XDG_CONFIG_HOME=${XDG_CONFIG_HOME}
          - PATH=/home/linuxbrew/.linuxbrew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
        volumes:
          - ${OPENCLAW_CONFIG_DIR}:/home/node/.openclaw
          - ${OPENCLAW_WORKSPACE_DIR}:/home/node/.openclaw/workspace
        ports:
          # Recommended: keep the Gateway loopback-only on the VPS; access via SSH tunnel.
          # To expose it publicly, remove the `127.0.0.1:` prefix and firewall accordingly.
          - "127.0.0.1:${OPENCLAW_GATEWAY_PORT}:18789"
        command:
          [
            "node",
            "dist/index.js",
            "gateway",
            "--bind",
            "${OPENCLAW_GATEWAY_BIND}",
            "--port",
            "${OPENCLAW_GATEWAY_PORT}",
            "--allow-unconfigured",
          ]
    

    --allow-unconfigured потрібен лише для зручності початкового налаштування, це не заміна належної конфігурації gateway. Усе одно задайте автентифікацію (gateway.auth.token або пароль) і використовуйте безпечні налаштування bind для вашого розгортання.

  • Спільні кроки середовища виконання Docker VM

    Використовуйте спільний посібник середовища виконання для загального процесу на Docker-хості:

  • Доступ, специфічний для Hetzner

    Після спільних кроків збирання та запуску завершіть таке налаштування, щоб відкрити тунель:

    Передумова: Переконайтеся, що конфігурація sshd вашого VPS дозволяє TCP forwarding. Якщо ви посилили свою SSH-конфігурацію, перевірте /etc/ssh/sshd_config і задайте:

    AllowTcpForwarding local
    

    local дозволяє локальні перенаправлення ssh -L з вашого ноутбука, водночас блокуючи віддалені перенаправлення із сервера. Якщо встановити no, тунель завершиться помилкою з: channel 3: open failed: administratively prohibited: open failed

    Після підтвердження, що TCP forwarding увімкнено, перезапустіть SSH-сервіс (systemctl restart ssh) і запустіть тунель зі свого ноутбука:

    ssh -N -L 18789:127.0.0.1:18789 root@YOUR_VPS_IP
    

    Відкрийте:

    http://127.0.0.1:18789/

    Вставте налаштований спільний секрет. У цьому посібнику за замовчуванням використовується токен gateway; якщо ви перейшли на автентифікацію за паролем, використайте натомість цей пароль.

  • Спільна мапа збереження стану міститься в Docker VM Runtime.

    Інфраструктура як код (Terraform)

    Для команд, які віддають перевагу робочим процесам infrastructure-as-code, підтримуване спільнотою налаштування Terraform надає:

    • Модульну конфігурацію Terraform із керуванням віддаленим станом
    • Автоматизоване підготування через cloud-init
    • Скрипти розгортання (bootstrap, deploy, backup/restore)
    • Посилення безпеки (firewall, UFW, доступ лише через SSH)
    • Конфігурацію SSH-тунелю для доступу до gateway

    Репозиторії:

    Цей підхід доповнює Docker-налаштування вище відтворюваними розгортаннями, інфраструктурою під контролем версій і автоматизованим аварійним відновленням.

    Наступні кроки

    Пов’язане