Перейти к содержанию

Обзор развертывания Openclaw на сервере

Предварительные требования и базовые условия

Для развертывания Openclaw требуется среда Linux-сервера с определенными системными пакетами и настройками пользователей. На хост-системе должны присутствовать следующие компоненты:

  • Операционная система: Дистрибутив на базе Ubuntu или Debian (подразумевается использованием apt).

  • Привилегии: Для установки, управления службами и настройки межсетевого экрана требуются права root или привилегии sudo.

  • Системные пакеты: Должны быть установлены или требуются следующие пакеты:

  • ansible

  • ca-certificates

  • curl

  • dbus-user-session

  • git

  • sudo

  • Docker: Docker Engine должен быть установлен и работать корректно.

  • Учетная запись пользователя: Создается выделенный системный пользователь с именем openclaw с домашним каталогом в /home/openclaw.

  • Сеть: Порты 80 и 443 должны быть доступны для обратного прокси-сервера. Порт 18789 используется внутренне для Openclaw Gateway.

FQDN финальной панели

Приложение доступно по Полному доменному имени (FQDN), структура которого выглядит следующим образом:

  • Формат домена: <prefix><Server ID>.hostkey.in

  • Префикс: openclaw

  • Зона: hostkey.in

  • Пример: Если Server ID равен 123, домен будет openclaw123.hostkey.in.

  • Протокол доступа: Принудительно используется HTTPS (порт 443). HTTP (порт 80) перенаправляет на HTTPS.

Структура файлов и каталогов

Для развертывания используются определенные каталоги для конфигурации, данных и сертификатов. Структура организована следующим образом:

  • Каталог установки Openclaw: /opt/openclaw-ansible

  • Содержит клонированный репозиторий из https://github.com/openclaw/openclaw-ansible.git.

  • Ветка: main.

  • Домашний каталог пользователя Openclaw: /home/openclaw

  • Принадлежит пользователю openclaw и группе openclaw.

  • Содержит данные приложения и конфигурацию.

  • Каталог конфигурации Nginx: /root/nginx

  • Содержит compose.yml для контейнера Nginx/Certbot.

  • Каталог данных Nginx: /data/nginx

  • /data/nginx/user_conf.d: Содержит пользовательские конфигурации блоков сервера Nginx.

  • /data/nginx/letsencrypt: Каталог для файлов вызова (challenge) Let's Encrypt.

  • /data/nginx/nginx-certbot.env: Переменные окружения для контейнера Nginx.

  • SSL-сертификаты: /etc/letsencrypt

  • Управляются через Docker-том nginx_secrets.

  • Сертификаты хранятся в /etc/letsencrypt/live/<final_domain>/.

  • Хранилище токена шлюза: ~/.ansible/openclaw/gateway-<server_id>.token

  • Расположен в домашнем каталоге пользователя, выполняющего развертывание (обычно /root).

Процесс установки приложения

Приложение Openclaw устанавливается с помощью скрипта, расположенного в каталоге /opt/openclaw-ansible. Процесс включает клонирование репозитория, установку зависимостей и запуск установщика.

  1. Клонирование репозитория:

  2. Репозиторий клонируется в /opt/openclaw-ansible с помощью Git.

  3. Ветка: main.

  4. Установка зависимостей:

  5. Коллекции Ansible устанавливаются командой ansible-galaxy collection install -r requirements.yml.

  6. Запуск установщика:

  7. Выполняется скрипт ./run-playbook.sh с флагом -e ansible_become=true.

  8. Переменные окружения, установленные во время установки:

    • NODE_OPTIONS: --max-old-space-size=768

    • npm_config_jobs: 2

    • npm_config_loglevel: warn

    • CI: true

    • PNPM_HOME: /home/openclaw/.local/share/pnpm

  9. Конфигурация начальной настройки (Onboarding):

  10. Команда openclaw onboard выполняется в неинтерактивном режиме со следующими параметрами:

    • --mode local

    • --auth-choice skip

    • --gateway-auth token

    • --gateway-token <TOKEN>

    • --gateway-port 18789

    • --gateway-bind loopback

    • --skip-bootstrap

    • --skip-skills

    • --skip-health

    • --accept-risk

  11. Патчинг конфигурации:

  12. Конфигурация шлюза патчится для включения поддержки обратного прокси HTTPS, установки доверенных прокси-серверов и определения разрешенных источников для интерфейса управления (Control UI).

Права доступа и безопасность

Меры безопасности реализуются через изоляцию пользователей, правила межсетевого экрана и аутентификацию на основе токенов.

  • Изоляция пользователей:

  • Служба Openclaw работает от имени выделенного пользователя openclaw.

  • Для пользователя openclaw включена функция lingering (сохранение сессии) через loginctl enable-linger openclaw.

  • Межсетевой экран (UFW):

  • Если UFW установлен, порты 80 и 443 разрешены для TCP-трафика.

  • Межсетевой экран перезагружается после изменения правил.

  • Аутентификация:

  • Openclaw Gateway использует аутентификацию на основе токенов.

  • Токен безопасно хранится в /root/openclaw-gateway-token.txt с правами доступа 0600.

  • Аутентификация Tailscale отключена (allowTailscale: false).

  • Доверенные прокси-серверы:

  • Шлюз доверяет прокси-серверам по адресам 127.0.0.1 и ::1.

Базы данных

В предоставленных данных конфигурации не указана выделенная служба базы данных (например, PostgreSQL или MySQL) для Openclaw. Приложение, по-видимому, хранит состояние и конфигурацию локально в каталоге /home/openclaw и использует файловую систему для хранения токенов. Строки подключения или настройки базы данных в исходных файлах отсутствуют.

Контейнеры Docker и их развертывание

Docker используется для развертывания обратного прокси-сервера Nginx и Certbot для управления SSL-сертификатами.

  • Образ контейнера: jonasal/nginx-certbot:6.2.0-nginx1.31.0

  • Метод развертывания: Docker Compose

  • Расположение файла Compose: /root/nginx/compose.yml

  • Режим сети: host

  • Тома (Volumes):

  • nginx_secrets (внешний том) монтируется в /etc/letsencrypt.

  • /data/nginx/user_conf.d монтируется в /etc/nginx/user_conf.d.

  • /data/nginx/letsencrypt монтируется в /var/www/letsencrypt.

  • Переменные окружения:

  • CERTBOT_EMAIL: hkadm@hostkey.com

  • Дополнительные переменные загружаются из /data/nginx/nginx-certbot.env.

  • RENEWAL_INTERVAL: Установлено значение 8d в файле окружения.

  • Команда запуска:

  • docker compose up -d выполняется в /root/nginx.

Прокси-серверы

Nginx действует как обратный прокси-сервер для Openclaw Gateway, обрабатывая завершение SSL-сессий и перенаправление HTTP на HTTPS.

  • Файл конфигурации: /data/nginx/user_conf.d/<final_domain>.conf

  • Блок сервера HTTP:

  • Слушает порт 80.

  • Предоставляет файлы вызова Let's Encrypt из /var/www/letsencrypt.

  • Перенаправляет весь остальной трафик на HTTPS.

  • Блок сервера HTTPS:

  • Слушает порт 443 с включенным SSL.

  • SSL-сертификаты:

    • Полная цепочка: /etc/letsencrypt/live/<final_domain>/fullchain.pem

    • Закрытый ключ: /etc/letsencrypt/live/<final_domain>/privkey.pem

    • Доверенный сертификат: /etc/letsencrypt/live/<final_domain>/chain.pem

  • Параметры SSL:

    • DH-параметры: /etc/letsencrypt/dhparams/dhparam.pem

    • Заголовок HSTS: max-age=31536000; includeSubDomains

  • Настройки проксирования:

    • Проксирует запросы на http://127.0.0.1:18789.

    • Версия HTTP: 1.1.

    • Заголовки: Upgrade, Connection, Host, X-Forwarded-Host, X-Forwarded-Proto, X-Forwarded-Port, X-Real-IP, X-Forwarded-For.

    • Таймауты: Таймауты чтения и отправки установлены на 3600 секунд.

    • Буферизация: Отключена.

    • Перенаправления: Отключены.

Настройки прав доступа

Права доступа к файлам и каталогам строго определены для обеспечения безопасности и корректной работы.

Путь Владелец Группа Режим Описание
/root/nginx root root 0755 Каталог compose Nginx
/data/nginx root root 0755 Каталог данных Nginx
/data/nginx/user_conf.d root root 0755 Каталог конфигурации Nginx
/data/nginx/letsencrypt/.well-known/acme-challenge root root 0755 Каталог вызовов Let's Encrypt
/data/nginx/nginx-certbot.env root root 0644 Файл окружения Nginx
/root/nginx/compose.yml root root 0644 Файл Docker Compose
/data/nginx/user_conf.d/<final_domain>.conf root root 0644 Конфигурация блока сервера Nginx
/home/openclaw openclaw openclaw 0755 Домашний каталог пользователя Openclaw
/root/openclaw-gateway-token.txt root root 0600 Файл токена шлюза
/etc/sudoers.d/openclaw-path root root 0440 Конфигурация Sudoers
/etc/systemd/system/openclaw-gateway.service root root 0644 Файл службы Systemd

Расположение файлов конфигурации и данных

  • Конфигурация Openclaw Gateway: Управляется через openclaw config patch и хранится в каталоге /home/openclaw.

  • Конфигурация Nginx: /data/nginx/user_conf.d/<final_domain>.conf

  • Docker Compose: /root/nginx/compose.yml

  • Переменные окружения: /data/nginx/nginx-certbot.env

  • SSL-сертификаты: /etc/letsencrypt/live/<final_domain>/

  • Токен шлюза: /root/openclaw-gateway-token.txt

Доступные порты для подключения

  • Порт 80 (HTTP): Используется для вызовов Let's Encrypt и перенаправления на HTTPS.

  • Порт 443 (HTTPS): Основной порт доступа к веб-интерфейсу Openclaw через Nginx.

  • Порт 18789: Внутренний порт для Openclaw Gateway. Привязан к loopback (127.0.0.1) и не доступен напрямую из внешних сетей.

Запуск, остановка и обновление

Openclaw Gateway управляется как служба systemd.

  • Имя службы: openclaw-gateway.service

  • Запуск службы:

    systemctl start openclaw-gateway.service
    

  • Остановка службы:

    systemctl stop openclaw-gateway.service
    

  • Перезапуск службы:

    systemctl restart openclaw-gateway.service
    

  • Включение при загрузке:

    systemctl enable openclaw-gateway.service
    

  • Проверка статуса:

    systemctl status openclaw-gateway.service
    

  • Перезагрузка демона:

    systemctl daemon-reload
    

Для контейнера прокси-сервера Nginx:

  • Запуск/Обновление:

    cd /root/nginx
    docker compose up -d
    

  • Проверка статуса:

    cd /root/nginx
    docker compose ps
    

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×