Запуск OpenClaw на VPS даёт главное преимущество --- агент работает 24/7, доступен из любого мессенджера и не зависит от того, включён ли ваш компьютер. Но это же создаёт серьёзную проблему: ваш агент оказывается в интернете, доступный для всех. Без правильной настройки он станет одним из тех 42 665 открытых экземпляров, которые обнаружили исследователи безопасности.
Этот гайд проведёт вас через все шаги --- от чистого сервера до полностью защищённого агента. Каждый шаг обязателен. Пропуск любого из них оставляет дыру в безопасности.
Что понадобится
- VPS с Ubuntu 22.04 или новее --- подойдёт любой провайдер: Timeweb, Selectel, Hetzner, DigitalOcean и другие.
- Минимум 2 ГБ оперативной памяти --- для Docker, Nginx и самого OpenClaw.
- Root-доступ к серверу --- нужен для первоначальной настройки.
- Доменное имя (опционально, но рекомендуется) --- для настройки HTTPS через Let’s Encrypt.
Если у вас ещё не установлен OpenClaw локально и вы хотите сначала познакомиться с ним, начните с инструкции по установке на Mac, Windows или Linux.
Шаг 1. Создание отдельного пользователя
Никогда не запускайте OpenClaw от имени root. Если агент или его скилл скомпрометирован, злоумышленник получит root-доступ ко всему серверу. Отдельный пользователь с ограниченными правами --- первый барьер защиты.
Подключитесь к серверу и создайте пользователя:
adduser openclaw
Система попросит задать пароль и заполнить информацию о пользователе. Пароль задайте сложный (16+ символов), остальные поля можно пропустить.
Добавьте пользователя в группу sudo для выполнения административных команд и в группу docker, которая понадобится позже:
usermod -aG sudo openclaw
usermod -aG docker openclaw
Проверьте, что пользователь создан корректно:
su - openclaw
whoami
Вывод должен быть openclaw. Вернитесь в root-сессию командой exit.
После этого шага у вас отдельный пользователь openclaw с ограниченными правами, от имени которого будет работать агент.
Шаг 2. SSH-ключи и отключение входа по паролю
Пароль для SSH --- это слабое звено. Его можно подобрать брутфорсом. SSH-ключи --- криптографически стойкая альтернатива, которую невозможно угадать.
Генерация ключей на вашем компьютере
На вашем локальном компьютере (не на сервере) выполните:
ssh-keygen -t ed25519 -C "openclaw-vps"
Нажмите Enter, чтобы сохранить ключ в стандартном расположении. Задайте пароль для ключа (passphrase) --- это дополнительный слой защиты на случай, если файл ключа украдут.
Копирование ключа на сервер
ssh-copy-id openclaw@your-server-ip
Замените your-server-ip на IP-адрес вашего сервера. Команда попросит пароль пользователя openclaw --- введите тот, что задали в шаге 1.
Проверьте, что вход по ключу работает:
ssh openclaw@your-server-ip
Если вход произошёл без запроса пароля сервера (только passphrase ключа, если вы его задали) --- ключ настроен верно.
Отключение входа по паролю
Теперь отключите возможность входа по паролю и запретите вход под root. На сервере отредактируйте конфигурацию SSH:
sudo nano /etc/ssh/sshd_config
Найдите и измените (или добавьте) следующие строки:
PasswordAuthentication no
PermitRootLogin no
Перезапустите SSH-сервер:
sudo systemctl restart sshd
Важно: не закрывайте текущую SSH-сессию, пока не убедитесь, что вход по ключу работает. Откройте новый терминал и попробуйте подключиться. Если всё в порядке --- старую сессию можно закрыть.
После этого шага у вас вход на сервер только по SSH-ключу. Пароль отключён, root-доступ по SSH запрещён. Брутфорс-атаки больше не представляют угрозы.
Шаг 3. Настройка файрвола UFW
UFW (Uncomplicated Firewall) --- простой в настройке файрвол для Ubuntu. Он блокирует все входящие соединения, кроме явно разрешённых.
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
Разберём каждую строку:
deny incoming--- по умолчанию блокировать все входящие соединения.allow outgoing--- разрешить все исходящие (агенту нужен доступ к API языковых моделей).allow ssh--- разрешить SSH (порт 22), чтобы вы не потеряли доступ к серверу.allow 80/tcpиallow 443/tcp--- разрешить HTTP и HTTPS для Nginx.enable--- включить файрвол.
Проверьте статус:
sudo ufw status
Вы должны увидеть список разрешённых портов: 22, 80 и 443.
Критически важно: не открывайте порт 18789 (порт gateway OpenClaw по умолчанию) для внешнего доступа. Доступ к нему будет организован через Nginx, который мы настроим в шаге 6.
После этого шага у вас файрвол, который пропускает только SSH, HTTP и HTTPS. Все остальные порты --- включая порт 18789 OpenClaw --- закрыты для внешнего мира.
Шаг 4. Установка Docker
Docker нужен для двух целей: запуск OpenClaw в изолированном контейнере и работа режима песочницы (sandbox).
Установите Docker по официальной инструкции для Ubuntu:
sudo apt update
sudo apt install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
Убедитесь, что пользователь openclaw добавлен в группу docker (мы сделали это в шаге 1). Если нет:
sudo usermod -aG docker openclaw
Для применения изменений группы нужно перелогиниться:
su - openclaw
Проверьте, что Docker работает без sudo:
docker run hello-world
После этого шага у вас установлен Docker, и пользователь openclaw может запускать контейнеры без root-прав.
Шаг 5. Запуск OpenClaw в Docker
Источник: порядок деплоя основан на официальной документации Docker и гайде по Hetzner VPS.
Переключитесь на пользователя openclaw:
su - openclaw
Подготовка директорий
Создайте директории для конфигурации и рабочей области. Владелец --- uid 1000 (пользователь node внутри контейнера):
mkdir -p ~/.openclaw/workspace
sudo chown -R 1000:1000 ~/.openclaw
Клонирование и сборка
Официальный способ --- клонировать репозиторий OpenClaw и собрать Docker-образ локально:
git clone https://github.com/openclaw/openclaw.git ~/openclaw-repo
cd ~/openclaw-repo
Запуск через docker-setup.sh
./docker-setup.sh
Скрипт автоматически:
- Соберёт Docker-образ gateway
- Запустит мастер настройки (onboarding) --- здесь вы укажете API-ключ и подключите мессенджер
- Запустит gateway через Docker Compose
- Сгенерирует токен gateway и запишет его в
.env
После завершения gateway будет доступен по адресу http://127.0.0.1:18789/.
Ключевой момент безопасности
В официальном docker-compose.yml gateway по умолчанию привязан к lan. Для VPS критически важно, чтобы порт 18789 не был открыт извне. Доступ к дашборду организуем через Nginx (шаг 6) или SSH-туннель.
Подключение каналов
После запуска gateway настройте мессенджеры через CLI-контейнер:
cd ~/openclaw-repo
# Telegram
docker compose run --rm openclaw-cli channels add --channel telegram --token "<ваш-токен-бота>"
# WhatsApp (по QR-коду)
docker compose run --rm openclaw-cli channels login
Конфигурация песочницы
Добавьте в ~/.openclaw/openclaw.json настройку песочницы для дополнительной изоляции:
{
agents: {
defaults: {
sandbox: {
mode: "non-main",
},
},
},
}
Проверка
cd ~/openclaw-repo
docker compose logs -f
Вы должны увидеть сообщения о запуске gateway. Нажмите Ctrl + C, чтобы выйти из просмотра логов (контейнер продолжит работать).
После этого шага у вас OpenClaw работает в Docker-контейнере от пользователя node (не root). Порт 18789 доступен только локально.
Шаг 6. Nginx + HTTPS
Nginx выступает обратным прокси: принимает внешние запросы по HTTPS и перенаправляет их на OpenClaw по локальному порту. Это добавляет шифрование и дополнительный слой контроля.
Установка Nginx
sudo apt install -y nginx
Конфигурация
Создайте файл конфигурации:
sudo nano /etc/nginx/sites-available/openclaw
Содержимое:
server {
listen 80;
server_name your-domain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name your-domain.com;
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:18789;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_cache_bypass $http_upgrade;
}
}
Замените your-domain.com на ваш домен. Если у вас нет домена, можно использовать IP-адрес, но тогда HTTPS настроить через Let’s Encrypt не получится --- понадобится самоподписанный сертификат.
Активируйте конфигурацию:
sudo ln -s /etc/nginx/sites-available/openclaw /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
Команда nginx -t проверяет синтаксис конфигурации. Если она выдаёт ошибку --- не перезапускайте Nginx, сначала исправьте конфигурацию.
Сертификат Let’s Encrypt
Установите Certbot и получите бесплатный SSL-сертификат:
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com
Certbot автоматически настроит обновление сертификата. Проверьте, что автообновление работает:
sudo certbot renew --dry-run
После этого шага у вас Nginx проксирует внешние запросы на OpenClaw через HTTPS. Трафик между клиентами и сервером зашифрован. Прямой доступ к порту 18789 извне по-прежнему закрыт файрволом.
Шаг 7. Мониторинг и автоматические обновления
Сервер настроен и защищён, но безопасность --- это непрерывный процесс. Нужно следить за состоянием агента и своевременно обновлять его.
Просмотр логов
docker compose logs -f --tail 100
Обращайте внимание на: сообщения об ошибках, подозрительные входящие запросы, неожиданные обращения к файловой системе.
Обновление OpenClaw
Поскольку образ собирается локально из репозитория, для обновления:
cd ~/openclaw-repo
git pull
./docker-setup.sh
Скрипт пересоберёт образ и перезапустит gateway. Конфигурация и данные в ~/.openclaw/ сохранятся.
Обновление системных пакетов
Не забывайте обновлять и сам сервер:
sudo apt update && sudo apt upgrade -y
Рекомендуется настроить автоматические обновления безопасности:
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
После этого шага у вас настроено автоматическое обновление контейнера OpenClaw и системных пакетов. Логи доступны для мониторинга.
Чеклист безопасности
Перед тем как считать настройку завершённой, пройдитесь по этому списку. Каждый пункт должен быть выполнен:
- Создан отдельный пользователь
openclaw(не root) - SSH-вход настроен по ключу, вход по паролю отключён
- PermitRootLogin установлен в
no - UFW включён, разрешены только порты 22, 80 и 443
- Порт 18789 не открыт в файрволе
- Docker установлен, OpenClaw работает в контейнере
- Порт 18789 слушает только
127.0.0.1(не0.0.0.0) - Sandbox mode включён в
openclaw.json - API-ключи хранятся в
.envфайле с правами600 - Nginx настроен как обратный прокси
- HTTPS-сертификат получен и автообновление работает
- Watchtower настроен для автоматического обновления контейнера
Если какой-либо пункт не выполнен --- вернитесь к соответствующему шагу. Не запускайте агент в продакшене с незакрытыми пунктами.
Что дальше
- Безопасность OpenClaw: что нужно знать --- обзор уязвимостей, инцидент ClawHavoc, базовые правила безопасности.
- Установка OpenClaw на Mac --- если вы хотите сначала протестировать агента локально.
- Установка OpenClaw на Windows --- инструкция для Windows 10 и 11.
- Установка OpenClaw на Linux --- нативная установка с systemd.
- Gateway: как устроен и как настроить --- подробно о gateway, дашборде и удалённом доступе.
- openclaw.ai --- официальная документация с разделом по серверному развёртыванию.
Серверная безопасность требует постоянного внимания. Периодически проверяйте логи, следите за обновлениями OpenClaw и обновлениями безопасности Ubuntu. Если вы заметили подозрительную активность --- остановите агента (docker compose down), проанализируйте логи и устраните проблему до повторного запуска.