2026: OpenClaw на Linux VPS без Docker
Ubuntu 24.04, systemd и Cloudflare Tunnel для шлюза на loopback

Около 18 минут чтения · MACCOME

После гайдов по установке на три платформы и Docker в продакшене у команд остаётся задача поднять OpenClaw Gateway на хостовом Node и systemd поверх Ubuntu 24.04 с Cloudflare Tunnel, чтобы шлюз не слушал публичный интерфейс. В статье — границы с Docker, разложение типовых проблем, две таблицы, фрагменты unit systemd и туннеля, шестишаговый runbook и три дежурные метрики, со ссылками на постинсталляционную диагностику, Docker в продакшене, руководство по установке и продвинутый материал по безопасности Gateway для воспроизводимого ввода в эксплуатацию.

Шесть рисков bare metal: не только «без контейнера»

На «голом» хосте ответственность за версии Node, права, адреса привязки и супервизию процессов полностью на стороне ОС. Если оставить привычку «Gateway в foreground на ноутбуке», перезагрузки рвут сервисы, журналы неструктурированы, а расхождение ufw и облачных security groups делает инциденты невоспроизводимыми. Разложите шесть классов проблем до копирования конфигов.

  1. Дрейф Node и глобального CLI: повторяющийся sudo npm i -g рассинхронизирует прод с документацией; зафиксируйте в ExecStart конкретный бинарник Node или обёртку менеджера версий.
  2. Слишком широкая привязка: 0.0.0.0 плюс одно пропущенное правило файрвола выставляет control plane наружу; с туннелями предпочтительнее 127.0.0.1, а вход принимает туннель.
  3. Расхождение systemd user и WorkingDirectory: конфиги в домашнем каталоге root при юните от пользователя openclaw дают эффект «вручную работает, под сервисом — нет».
  4. Несовпадение upstream-порта туннеля: cloudflared, указывающий не на тот локальный порт, даёт внешний 502, не связанный с таймаутами модели.
  5. Путаница входящего и исходящего: туннели решают доступность для клиентов; API моделей, DNS, прокси и ключи идут исходящими путями — разбор по постинсталляционной статье.
  6. Нет точки отката: обновление OpenClaw или Node без заморозки последнего работоспособного ExecStart и хэша конфигурации блокирует быстрый откат.

Две таблицы сжимают сравнение Docker и bare metal, а также туннеля и прямого обратного прокси на хосте для пакетов на архитектурный обзор.

Продвинутый материал по безопасности Gateway описывает токены, экспозицию и ротацию секретов; здесь — привязка к loopback на Linux и передача ingress туннелю. Вместе это даёт схему «вход на периметре, секреты в управляемой плоскости, процессы под systemd». Онбординг и ключи к моделям завершайте по установочному гайду до ужесточения продакшена здесь.

Docker Compose и bare-metal systemd: когда что выбирать

В материале про Docker в продакшене — фиксация образов, тома и откат через Compose; здесь — юниты на хосте и туннель. Таблица 1 для архитектурного ревью, а не для «религиозного» выбора.

ИзмерениеDocker / ComposeХостовый Node + systemd (эта статья)
ВоспроизводимостьОбразы и digest фиксируют рантаймСтек хоста вариативен; компенсируйте управлением конфигурацией и пинами версий
Глубина разбораСначала логи контейнера и права на томахДоступны инструменты уровня хоста, если политика позволяет
Существующий ops-стекНужны мониторинг контейнеров и поток через registryПереиспользуйте journald, node_exporter, скрипты резервного копирования
Путь обновленияСмена тегов образа; тома явныеNode и глобальные пакеты двигаются вместе — автоматизируйте откат
Типичное применениеКоманды, стандартизировавшиеся на контейнерахНужен запуск на metal или тесная связка с легаси-сервисами systemd

Cloudflare Tunnel и обратный прокси на хосте: где провести границу

Туннели выносят TLS и публичный ingress на периметр; Nginx/Caddy часто терминируют TLS локально и проксируют на loopback. Комбинировать можно, но множество слушающих сокетов должно оставаться минимальным. Сверяйте таблицу 2 с правилами security groups.

ПаттернПривязка GatewayПубличная поверхностьЗаметки по эксплуатации
Туннель на loopback127.0.0.1:PORT (по документации OpenClaw)Нет прямого порта Gateway; только исходящий трафик процесса туннеляСогласуйте ingress с фактическим локальным портом сервиса
Локальный Nginx/CaddyОбычно по-прежнему upstream на loopback443 на прокси; сертификаты и rate limitПерепроверьте ufw и облачные SG, чтобы избежать двойной экспозиции
Не рекомендуется: Gateway на 0.0.0.0Все интерфейсыControl plane в интернетеНужны строгие токены, allowlist и WAF — не вариант по умолчанию
ini
# /etc/systemd/system/openclaw-gateway.service (скелет; ExecStart — по официальному CLI)
[Unit]
Description=OpenClaw Gateway (bare metal)
After=network-online.target
Wants=network-online.target

[Service]
User=openclaw
Group=openclaw
WorkingDirectory=/var/lib/openclaw
Environment=NODE_ENV=production
ExecStart=/usr/bin/node /path/to/openclaw/cli.js gateway start --bind 127.0.0.1
Restart=on-failure
RestartSec=5
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
yaml
# Фрагмент cloudflared: hostname к локальному Gateway
tunnel: YOUR_TUNNEL_ID
credentials-file: /etc/cloudflared/YOUR_TUNNEL.json

ingress:
  - hostname: claw.example.com
    service: http://127.0.0.1:18789
  - service: http_status:404
warning

Примечание: порты и пути к бинарям — плейсхолдеры. Сверяйтесь с актуальной документацией OpenClaw и openclaw --help; хэши и команды отката фиксируйте в тикете на изменение.

Шесть шагов: от чистой Ubuntu 24.04 до дежурного systemd и туннеля

  1. Заморозить базовую линию: ядро, минор Node, версия пакета OpenClaw, OpenSSL — согласуйте минимумы с установочным гайдом.
  2. Создать пользователя сервиса и каталоги: выделенный пользователь, явное владение — избегайте прод-конфигов в личном home при запуске от другой учётной записи.
  3. Сначала проверить loopback: привязка 127.0.0.1, curl или health по доке, затем подключайте туннель.
  4. Описать и включить systemd: daemon-reload && enable --now; смотрите journalctl -u openclaw-gateway -f на ошибки порядка запуска.
  5. Настроить ingress cloudflared: DNS в облаке совпадает с локальным конфигом; внешние 502/525 классифицируйте как туннель против upstream.
  6. Отработать обновление и откат: заархивируйте последний работоспособный ExecStart и конфиги; «вперёд только» допустимо в пределах вашего RTO.

Разделяйте локальное здоровье (процесс и порт на loopback) и внешнее здоровье (DNS, цепочка сертификатов, маршрутизация на периметре). Обновление только одного из контуров при релизах даёт ложноположительные «зелёно внутри, красно снаружи». Шаблоны тикетов должны требовать версию OpenClaw, минор Node и версию cloudflared плюс выдержку из журнала для аудита.

Три дежурные метрики

  1. Число слушающих сокетов: в продакшене перечисляйте каждый открытый TCP-порт в одной строке; публичная привязка Gateway без WAF — дефект срочного устранения.
  2. Разбор 502 туннеля: сначала curl -v 127.0.0.1:PORT, затем логи туннеля; локальный отказ — слой приложения, локально ок / удалённо нет — туннель или DNS.
  3. Базовая линия исходящих проб: автоматизируйте TLS и HTTP-проверки с VPS к вендору моделей; пороги согласуйте с шагами post-install doctor.

Дополнение: на небольших VPS, где крутятся только Gateway и туннель, при джиттере задержки при «простаивающем» CPU проверьте лимиты файловых дескрипторов на процесс, число долгоживущих WebSocket и RTT TLS к провайдерам до увеличения vCPU.

Разрыв между «любой VPS» и устойчивым слоем исполнения

Обычный Linux VPS подходит для демонстраций, но разброс I/O и ограничения без GUI всё равно влияют на долгоживущую автоматизацию. Продакшен OpenClaw требует повторяемой супервизии, аудируемых listening surfaces и согласованности с CI и потоками секретов.

Для сборок iOS, Simulator или GUI-разбора Linux не заменяет Apple Silicon; многие команды ставят Gateway на Linux на периметре, а тяжёлый Xcode переносят на удалённые Mac. Запасные ноутбуки и фрагментированные десктопы плохо держат агентов 24/7: сон и диалоги превращают автоматизацию в случайные сбои. У MACCOME — мультирегиональные Mac Mini M4 / M4 Pro на bare metal как бэкенд сборок и длинных сессий, пока Linux концентрирует ingress. Откройте центр помощи, затем сопоставьте тарифы аренды со страницей вашего региона.

Пилотируйте короткими арендами, измеряя сквозную задержку сценария «туннель + нагрузка на удалённом Mac», прежде чем совмещать роли ingress и компиляции на одном хосте.

Вопросы

Разве Docker недостаточно?

Часто да — см. Docker в продакшене. Связка systemd на хосте уместна при тесной интеграции с существующим ops на сервере или необходимости трассировки на уровне ОС.

127.0.0.1 или 0.0.0.0 для Gateway?

Предпочтительно loopback за туннелем или локальным прокси; расширяйте привязку только с файрволом, токенами и мониторингом. Шаги проверки — в постинсталляционной диагностике. Уточнения по доступу к Mac — центр помощи.

Где команды установки и отличия платформ?

Установка и выбор платформы; тарифы — цены аренды Mac Mini.