Перейти к содержимому
16 мин чтения

OpenClaw на VPS: установка на сервер Ubuntu, автозапуск и безопасный доступ

openclawvpsubuntulinuxсерверустановкаии-агентыself-hosted

Коротко. Чтобы OpenClaw работал на VPS круглосуточно, нужно пять вещей, и порядок важен. Чистый сервер с Ubuntu 24.04 LTS. Установка из-под root официальным установщиком без мастера настройки. Отдельный пользователь без прав администратора — от его имени работает агент. Включённый для этого пользователя linger, иначе systemd остановит агента, как только вы закроете SSH. И мастер openclaw onboard --install-daemon, который ставит шлюз (Gateway) пользовательской службой openclaw-gateway.service. Шлюз по умолчанию слушает только 127.0.0.1:18789, и так и должно остаться: порт 18789 в интернет не открывают, а до панели управления добираются через SSH-туннель или Tailscale. Ниже — команды для каждого шага, сверенные с официальной документацией, и разбор мест, где у большинства всё ломается: агент умирает после выхода из SSH, systemctl --user не видит шину, панель просит токен, которого вы не видели, а сервер на 1 ГБ падает по нехватке памяти.

На чём это проверено

Команды, имена служб, пути и параметры конфигурации сверены 29 сентября 2026 года с документацией проекта для релиза OpenClaw 2026.9.6 (опубликован 23 сентября 2026 года; в реестре npm это канал latest). Канал долгой поддержки extended-stable на ту же дату указывает на версию 2026.8.33 (вышла 28 сентября). Команды в статье одинаковы для обеих версий, а про выбор канала для сервера — ниже, в разделе об обновлениях.

Источники — только первичные: разделы документации OpenClaw Linux server, пошаговая установка на VPS, руководство по шлюзу и удалённый доступ, а также репозиторий openclaw/openclaw. По запросам «openclaw vps» и «openclaw ubuntu» в выдаче много сайтов-пересказов. Команды там часто выдуманы или устарели, причём незаметно: установка проходит без ошибок, а агент не переживает первую перезагрузку.

Как устроен OpenClaw на сервере

  • Шлюз живёт на VPS и хранит всё: настройки, ключи, историю, рабочую папку агента. Сервер — единственный источник правды, поэтому резервные копии делают с него.
  • Вы подключаетесь к шлюзу из браузера (панель управления, Control UI), с ноутбука или телефона — через SSH-туннель или Tailscale. Напрямую из интернета панель быть доступна не должна: это административный интерфейс, в нём чат, конфигурация и подтверждение команд.
  • Мессенджеры входящих портов не требуют. Telegram по умолчанию работает через long polling: шлюз сам забирает сообщения у Telegram. Режим вебхука есть, но он необязателен.
  • Один шлюз — много агентов. Документация рекомендует один шлюз на машину. Второй нужен только для намеренной изоляции, и тогда у каждого экземпляра должны быть свой порт, свой конфиг, своё состояние и своя рабочая папка.

До установки: сервер, память и страна

Образ. Чистая Ubuntu 24.04 LTS. Документация отдельно предупреждает насчёт готовых «образов в один клик» из маркетплейсов хостеров: не берите их, если не проверили стартовые скрипты и настройки файрвола.

Память. В официальном руководстве агент работает на самой скромной конфигурации: 1 vCPU, 1 ГБ RAM, 25 ГБ SSD. Но только с файлом подкачки (swap) и только с облачными моделями — локальная нейросеть в 1 ГБ не помещается. Если хотите локальную модель, это другой класс сервера; как её подключить, мы разбирали в статье о локальной модели в OpenClaw.

Страна сервера и поставщик нейросети. Этот пункт пропускают чаще всего. Запросы к API нейросети уходят с IP-адреса вашего VPS, а не с вашего компьютера. В списках поддерживаемых стран Anthropic и OpenAI России нет (проверено 29 сентября 2026 года). Значит, сервер в российском дата-центре с ключом одного из этих поставщиков рискует получать отказ на каждый запрос. Страну сервера и поставщика модели выбирают вместе: либо поставщик, который обслуживает страну сервера, либо локальная модель, либо сервер там, где работает ваш поставщик. Если агент будет обрабатывать персональные данные клиентов, выбор страны становится ещё и вопросом 152-ФЗ.

Что ещё подготовить: SSH-ключ для входа на сервер, API-ключ поставщика нейросети и, если агент будет жить в Telegram, токен бота от @BotFather. Официальное руководство оценивает установку примерно в 20 минут — при готовых ключах и опыте работы в терминале.

Шаг 1. Подготовить сервер и закрыть лишнее

Подключитесь к серверу под root и обновите систему:

ssh root@IP_СЕРВЕРА
apt update && apt upgrade -y

Сразу включите файрвол. Порядок важен: сначала разрешите SSH и только потом включайте UFW, иначе отрежете себе доступ:

apt install -y ufw
ufw allow OpenSSH
ufw enable
ufw status verbose

Порт 18789 не открывайте — ни в UFW, ни в облачном файрволе хостера. Шлюз слушает только локальный интерфейс, и туннель ниже доберётся до него через SSH. Если у хостера есть свой облачный файрвол, логика та же: входящий TCP 22 и больше ничего.

Шаг 2. Установить OpenClaw без мастера

Всё ещё под root запустите официальный установщик с флагом, который пропускает мастер первичной настройки. Настраивать агента будем позже, уже от имени отдельного пользователя:

curl -fsSL https://openclaw.ai/install.sh | bash -s -- --no-onboard

Установщик сам проверит Node.js. Если его нет, поставит линейку Node 24 LTS через репозиторий NodeSource. Поддерживаются Node 24.16+ и 26.1+. Линейки 22, 23 и 25 не поддерживаются, так что если Node на сервере уже стоит, проверьте его версию командой node -v.

Если Node.js вы ведёте сами, пакет можно поставить напрямую через npm. На npm 12 или 11.16+:

npm install -g openclaw@latest --allow-scripts=openclaw

На npm 11.15 и ниже та же команда пишется без --allow-scripts=openclaw. На npm 12 без этого флага установочные скрипты пакета заблокируются.

Сама установка — это пара команд, а те двадцать минут из руководства — только запуск. После него остаются резервные копии, обновления, которые иногда требуют ручного вмешательства, и ответ на вопрос «почему агент молчит с трёх ночи». Если это уже звучит как отдельная работа, мы поднимем OpenClaw на VPS и возьмём сервер на обслуживание. Если ставите сами — дальше шаг, от которого зависит, переживёт ли агент выход из SSH.

Шаг 3. Отдельный пользователь и linger

adduser openclaw
loginctl enable-linger openclaw

Сразу скопируйте новому пользователю свой SSH-ключ, чтобы заходить на сервер и строить туннель под ним, а не под root:

install -d -m 700 -o openclaw -g openclaw /home/openclaw/.ssh
install -m 600 -o openclaw -g openclaw /root/.ssh/authorized_keys /home/openclaw/.ssh/authorized_keys

Зачем отдельный пользователь. Агент выполняет команды и работает с файлами от имени того, кто его запустил. Состояние будет лежать в /home/openclaw/.openclaw/, а шлюз встанет пользовательской службой systemd именно этого пользователя. Запускать шлюз и команды агента от root документация называет небезопасным и неподдерживаемым вариантом.

Зачем enable-linger. По умолчанию systemd останавливает пользовательские службы, когда пользователь выходит из системы. Без linger агент работает, пока открыта ваша SSH-сессия, и замолкает, как только вы её закрыли. Это самая частая причина жалобы «вчера отвечал, сегодня молчит». Мастер настройки тоже пытается включить linger, но ему может понадобиться sudo. Проще сделать это заранее из-под root.

В официальном руководстве пользователя ещё добавляют в группу sudo (usermod -aG sudo openclaw) — для удобства администрирования. Если сервер выделен только под агента, этого можно не делать: linger уже включён, а систему удобнее обслуживать под другой учётной записью, чем та, от которой агент выполняет команды.

Шаг 4. Пройти мастер настройки от имени пользователя

su - openclaw
openclaw --version
openclaw onboard --install-daemon

Мастер проведёт через подключение нейросети, мессенджера, генерацию токена шлюза и установку службы. Подробно каждый экран мы разбирали в статье о первичной настройке OpenClaw. На сервере есть две особенности.

Вход в аккаунт нейросети без браузера на сервере. С API-ключом всё просто: вставляете его в терминал. Если поставщик предлагает вход через браузер (OAuth), мастер покажет ссылку. Откройте её в браузере на своём компьютере, а адрес, на который вас перенаправит, или код авторизации вставьте обратно в терминал сервера. Если поставщик поддерживает вход по коду устройства, введите показанный код в своём браузере, пока процесс на сервере ждёт. Учётные данные сохранятся на сервере, копировать файлы не нужно. Проверить результат можно командой openclaw models status.

Шина пользователя systemd. Если на установке службы или на любой команде systemctl --user вы видите ошибку подключения к шине, значит, в сессии не задан XDG_RUNTIME_DIR. Так часто бывает после входа через su -, а не по SSH. Задайте переменную и повторите команду:

export XDG_RUNTIME_DIR=/run/user/$(id -u)

На Debian и Ubuntu пользовательскую шину обеспечивает пакет dbus-user-session. Если ошибка не уходит, проверьте, что он установлен. Надёжнее всего заходить на сервер по SSH сразу под пользователем openclaw: тогда сессия создаётся полноценно, и переменная задаётся сама.

Шаг 5. Проверить, что агент жив и переживёт перезагрузку

openclaw gateway status
openclaw status
systemctl --user status openclaw-gateway.service
openclaw channels status --probe

Здоровое состояние по документации: в выводе openclaw gateway status есть Runtime: running и Connectivity probe: ok. Последняя команда проверяет каналы вживую, в том числе отвечает ли бот в Telegram. Журнал шлюза в реальном времени:

journalctl --user -u openclaw-gateway.service -f

Потом сделайте то, что пропускают почти все: перезагрузите сервер (reboot из-под root), зайдите снова и повторите openclaw gateway status. Если после перезагрузки шлюз не поднялся, почти наверняка не включён linger. Лучше узнать это сейчас, чем от клиента, которому бот не ответил.

Шаг 6. Подкачка и настройки для маленького сервера

На сервере с 1 ГБ памяти файл подкачки обязателен. Команды из официального руководства, выполняются под root:

fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap sw 0 0' | tee -a /etc/fstab

Последняя строка делает подкачку постоянной после перезагрузки. Проверка — free -h.

На слабых и ARM-серверах документация советует ещё две переменные окружения для службы. Кэш компиляции модулей Node ускоряет повторные запуски, а OPENCLAW_NO_RESPAWN=1 оставляет обычные перезапуски шлюза внутри процесса. Правьте не сам файл службы, а дополнение к нему — под пользователем openclaw:

systemctl --user edit openclaw-gateway.service
[Service]
Environment=OPENCLAW_NO_RESPAWN=1
Environment=NODE_COMPILE_CACHE=/var/tmp/openclaw-compile-cache
TimeoutStartSec=90

Файл службы генерирует и обновляет сам OpenClaw, поэтому свои настройки держат в дополнении — так они не потеряются при переустановке службы.

Если памяти всё же не хватило, ядро убьёт один из процессов. OpenClaw заранее повышает дочерним процессам (командам, MCP-серверам, браузеру) приоритет на такое убийство, а в службе стоит OOMPolicy=continue. Поэтому обычно умирает конкретная задача, а не весь шлюз с каналами. Если это повторяется, увеличьте память сервера или переведите тяжёлые задачи на облачную модель.

Доступ к панели управления: туннель или Tailscale

Вариант А. SSH-туннель — работает везде

На своём компьютере выполните:

ssh -N -L 18789:127.0.0.1:18789 openclaw@IP_СЕРВЕРА

Пока команда работает, панель открывается в браузере по адресу http://127.0.0.1:18789/. Туннель не отменяет авторизацию: панель спросит Gateway secret. Токен мастер сгенерировал на шаге 4, а посмотреть его можно на сервере, в интерактивном терминале:

openclaw gateway auth-token --show

Флаг --show обязателен: без него команда откажется печатать токен. Обычная openclaw config get секреты не показывает, это сделано намеренно.

Есть вариант без копирования токена: команда openclaw dashboard --json на сервере выдаёт поле browserUrl. Это одноразовая ссылка, она действует десять минут и привязывается к конкретному браузеру. При открытом туннеле её можно открыть на своём компьютере.

Вариант Б. Tailscale Serve — постоянный адрес с HTTPS

Если не хочется каждый раз поднимать туннель, документация предлагает Tailscale — частную сеть между вашими устройствами (на свой ноутбук или телефон Tailscale ставится тоже, под тем же аккаунтом):

# под root
curl -fsSL https://tailscale.com/install.sh | sh
tailscale up --operator=openclaw

# под пользователем openclaw
openclaw config set gateway.tailscale.mode serve
openclaw gateway restart

Шлюз сам поднимает Serve при запуске, а работает он не от root. Флаг Tailscale --operator=openclaw разрешает этому пользователю управлять Tailscale без повышения прав. В официальном руководстве пользователь openclaw состоит в группе sudo, поэтому там этого шага нет.

После этого панель доступна по адресу https://<имя-сервера-в-tailnet>/ с любого вашего устройства в той же сети Tailscale. Шлюз при этом по-прежнему слушает только локальный интерфейс. Для Serve в вашей сети Tailscale должен быть включён HTTPS; если он выключен, OpenClaw подскажет.

Учтите одну тонкость. Через Serve панель и WebSocket авторизуются по вашей личности в Tailscale, и документация исходит из того, что сам сервер доверенный. HTTP API шлюза всё равно требует токен. Если хотите, чтобы токен спрашивался и в панели, задайте gateway.auth.allowTailscale: false.

Чего не делать

Не переключайте шлюз на bind: "lan" и не открывайте порт 18789 наружу «чтобы проще было». Режим Tailscale Funnel публикует панель в открытый интернет и поэтому требует пароль, а не токен — для личного агента он не нужен. Правило из документации простое: никогда не выставлять шлюз без авторизации на 0.0.0.0.

Telegram: первым подтвердите себя

Бот и его токен подключаются в мастере на шаге 4 (как создать бота через @BotFather — в той же статье о первичной настройке). По умолчанию в личных сообщениях Telegram действует режим pairing. Незнакомец, который написал боту, получает код из восьми символов, а агент ему не отвечает, пока вы не подтвердите код на сервере:

openclaw pairing list telegram
openclaw pairing approve telegram <КОД>

Коды живут один час, одновременно в очереди может быть не больше трёх запросов на канал. Важная деталь: если на сервере ещё нет владельца, первое подтверждение из командной строки делает этого отправителя владельцем — тем, кто может выполнять привилегированные команды и подтверждать запуск команд. Поэтому первым боту пишете вы сами и первым подтверждаете свой код. Следующие подтверждения дают людям только доступ к переписке. То же можно сделать в панели: Settings → Channels → DM access requests.

Безопасность: аудит перед тем, как пускать людей

У OpenClaw есть встроенный аудит конфигурации. Его стоит запускать после любой правки настроек:

openclaw security audit
openclaw security audit --deep
openclaw security audit --fix

Аудит проверяет, могут ли посторонние писать боту, насколько опасны доступные агенту инструменты, открыт ли шлюз наружу, не читаются ли файлы состояния другими пользователями системы. Флаг --deep добавляет живую проверку шлюза. Флаг --fix намеренно узкий: переводит открытые политики групп на белые списки и выставляет правильные права на файлы (600 для файлов, 700 для папок). Остальное он не чинит.

Если боту будут писать несколько человек, задайте session.dmScope: "per-channel-peer". Без этого все личные переписки складываются в одну общую сессию агента. Для личного помощника это нормально, для бота, которому пишут сотрудники или клиенты, — нет. Если агенту нужен доступ к командной строке, изолируйте его в песочнице: пошагово мы разбирали это в статье об OpenClaw в Docker.

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

Обновления и резервные копии

Перед каждым заметным обновлением делайте проверенную резервную копию:

openclaw backup create --output ~/Backups/openclaw --verify
openclaw update

Первая команда собирает архив с состоянием, конфигурацией, учётными данными, папками агентов и рабочими папками, а флаг --verify сразу проверяет его целостность. openclaw update сам определяет способ установки, проверяет новую версию, пока старый шлюз продолжает работать, и только потом переключается.

Три правила из документации, которые стоит знать заранее:

  • Не копируйте «живые» файлы .sqlite (и -wal, -shm) как резервную копию. Шлюз пишет в них во время работы, и копия может оказаться битой. Для резервных копий есть openclaw backup.
  • Архив содержит ключи и токены. Храните его зашифрованным, с теми же ограничениями доступа, что и само состояние. Снимок сервера у хостера — хорошее дополнение, но не замена.
  • Для сервера подумайте о канале extended-stable. Это канал долгой поддержки, он отстаёт от основного, и обновления в нём никогда не ставятся автоматически. Переключение — openclaw update --channel extended-stable, вернуться обратно — --channel stable. Выбор сохраняется в настройках.

Что ломается чаще всего

СимптомПричинаЧто делать
Агент замолкает после выхода из SSH или не поднимается после перезагрузки Не включён linger loginctl enable-linger openclaw из-под root; openclaw doctor тоже проверяет linger
systemctl --user не может подключиться к шине Не задан XDG_RUNTIME_DIR, чаще всего после su - export XDG_RUNTIME_DIR=/run/user/$(id -u) или вход по SSH сразу под пользователем
Панель просит Gateway secret, или клиент получает AUTH_TOKEN_MISSING Не передан токен — туннель авторизацию не отменяет openclaw gateway auth-token --show на сервере и вставить токен в панель
При старте шлюз пишет, что сгенерировал временный токен В конфигурации нет токена; временный токен не сохраняется и не восстанавливается openclaw doctor --generate-gateway-token, перезапуск шлюза, затем auth-token --show
Поменяли gateway.port, а служба слушает старый порт Порт записан в определение службы при установке openclaw doctor --fix или openclaw gateway install --force
Служба не перезапускается после ошибки Некорректный конфиг: шлюз выходит с кодом 78, и systemd намеренно перестаёт его перезапускать Исправить конфигурацию (openclaw doctor подскажет, что не так) и запустить службу снова
Порт 18789 занят Остался старый процесс или второй экземпляр шлюза lsof -i :18789 и openclaw gateway status --deep — он находит и старые службы
Нейросеть отвечает отказом на каждый запрос Поставщик не обслуживает страну, где стоит сервер Сверить страну сервера со списком поддерживаемых стран поставщика

Для перезапуска используйте openclaw gateway restart, а не связку stop + start. Когда непонятно, с чего начать, запускайте openclaw doctor: он проверяет службу, linger и дрейф конфигурации.

Когда не стоит делать это самому

Установка на VPS честно укладывается в полчаса — не это место требует помощи. Помощь нужна после запуска. Кто-то должен следить, что сервер обновляется и не забит логами. Что резервные копии делаются и из них реально можно восстановиться. Что обновление OpenClaw, которое иногда требует ручных шагов, не выпадает на вечер пятницы. И что в три часа ночи кто-то заметит, если бот перестал отвечать. Если на всё это есть свой администратор с запасом времени — ставьте сами, инструкция выше рабочая целиком.

Если нет — сопровождение можно отдать нам по подписке. Условия и цены подписки опубликованы отдельно. Нейросеть и сервер оплачиваются сверх подписки: напрямую поставщикам или одним счётом через нас. Агент, сервер и данные остаются вашими. Мы независимый сервис и не аффилированы с проектом OpenClaw — просто каждый день работаем с этими агентами.

Частые вопросы

Сколько памяти нужно серверу под OpenClaw?

С облачной моделью официальное руководство показывает работающую конфигурацию на 1 ГБ RAM с файлом подкачки на 2 ГБ. Это нижняя граница: при больших запросах документация советует взять модель поменьше или сервер на 2 ГБ. Локальная нейросеть требует совсем другого железа.

Нужно ли открывать порт 18789?

Нет. Шлюз слушает только локальный интерфейс, панель открывается через SSH-туннель или Tailscale Serve, а Telegram по умолчанию сам забирает сообщения и входящих соединений не требует. Наружу открыт только SSH.

Можно ли сделать системную службу вместо пользовательской?

Можно. Для многопользовательских и постоянно включённых серверов документация описывает системный юнит в /etc/systemd/system/, обязательно с User=: без этой строки шлюз запустится от root. На сервере с одним пользователем поддерживаемый путь — пользовательская служба плюс linger, как в этой статье. Не держите оба варианта сразу: если системной службой управляете вы, запускайте openclaw doctor с OPENCLAW_SERVICE_REPAIR_POLICY=external, чтобы он не ставил конкурирующую пользовательскую службу.

Чем это отличается от установки на домашний компьютер?

Сервер не засыпает, не перезагружается после обновлений Windows и не выключается на ночь. Для агента, которому пишут другие люди, это решающая разница. Установка на рабочий ПК разобрана в статье про OpenClaw на Windows, общий обзор способов установки — в инструкции по установке OpenClaw, а выбор модели и контроль расходов — в разборе тюнинга OpenClaw.

Когда агент на сервере уже запущен, начинается сама эксплуатация: обновления системы и OpenClaw, мониторинг, резервные копии, разбор журналов. Если не хотите держать под это своего администратора, мы возьмём на себя сервер под агентом — обновления, резервные копии и мониторинг, а вам останется только сам агент.