Индекс на дневникаDockup / бележка от практиката
Note / self-host-openclaw

Как да хоствате OpenClaw самостоятелно през 2026 г.: Gateway, канали и сигурност

Хоствайте OpenClaw самостоятелно с правилно конфигурирани портове, persistent storage, HTTPS, secrets, backups и проверки при upgrade. Научете как да отстраните проблем, при който Gateway се свързва само към loopback.

Разглеждайте OpenClaw като малка система, а не като Docker image. Потребителската цел на OpenClaw е ясна: Gateway за AI асистент с над 22 channel integrations; deployment-ът е приемлив само когато можете да сдвоите един messaging channel, да изпратите inbound message, да одобрите подателя, да извикате безвреден tool и да свържете отново Control UI след рестартиране на Gateway.

Това разграничение разкрива failure mode-а, с който операторите се сблъскват след локално тестване: Gateway се свързва само към loopback или proxy-то отхвърля WebSocket upgrades. То също така прави плана за backup и upgrade достатъчно конкретен, за да бъде тестван.

Изберете най-малката работеща топология за OpenClaw

Най-малката отговорна топология за OpenClaw съдържа един private listener на 18789, ingress route и документирана граница на state-а. Външното изискване за OpenClaw е model-provider key и поне един paired channel. Тествайте outbound DNS, TLS и поведението на provider-а, без да публикувате друг inbound service.

Валидирайте топологията, като помолите чист client да сдвои един messaging channel, да изпрати inbound message, да одобрите подателя, да извика безвреден tool и да свърже отново Control UI след рестартиране на Gateway. Наблюдавайте parallel agent turns, model latency, browser-tool processes и размера на натрупаната session history, докато системата работи. Резултатът ще покаже дали следващото подобрение трябва да бъде в memory, storage, networking или в отделен worker, вместо да ви насърчава към произволно оразмеряване на container-а.

Диагностицирайте OpenClaw, който изглежда здрав

Една idle health check дава малко информация за OpenClaw. Наблюдавайте parallel agent turns, model latency, browser-tool processes и размера на натрупаната session history, след което настройте alert според симптома, който потребителите изпитват: неуспешно изпълнение на действието „сдвоете един messaging channel, изпратете inbound message, одобрете подателя, извикайте безвреден tool и свържете отново Control UI след рестартиране на Gateway“. Поддържайте liveness локална и евтина; нека readiness отчита migrations или initialization, без да предизвиква restart storm.

Рисковата зона при upgrade е, че даден release може да промени Gateway configuration schema, bundled skills, browser dependencies или channel adapters. Прочетете release notes, направете snapshot на state-а, deploy-нете целевата версия срещу възстановено копие и повторете acceptance action-а. Ако Gateway се свързва само към loopback или proxy-то отхвърля WebSocket upgrades, свържете client request-а с първия релевантен application log, вместо сляпо да изтривате state или да добавяте redirects.

Пет проверки, по-надеждни от container health

Release record-ът за OpenClaw се нуждае от факти, а не от „изглежда добре“. Съхранявайте избрания image digest, configuration checksum, public hostname и timestamped резултат за: сдвояване на един messaging channel, изпращане на inbound message, одобряване на подателя, извикване на безвреден tool и повторно свързване на Control UI след рестартиране на Gateway. Използвайте примерни данни, които не са production данни, за да може проверката да се изпълнява след всеки deployment.

Докажете поотделно две lifecycle събития. Подмяната на container трябва да запазва нормалната работа; clean recovery трябва да покаже, че възстановеният Gateway може да отвори отново своя workspace, да разпознае paired channel-а и да използва provider authentication без повторен onboarding. Докато проверките се изпълняват, измервайте parallel agent turns, model latency, browser-tool processes и размера на натрупаната session history и запазвайте резултата като очаквания envelope за тази версия.

Тествайте и отказано или невалидно условие: временно блокирайте test path-а, използван от model-provider key и поне един paired channel. OpenClaw трябва да се провали по начин, който може да бъде диагностициран, и не трябва да презаписва здравия state. Възстановете валидното условие, изпълнете отново sample-а и приложете съответните redacted logs. Тези artifacts дават на бъдещото решение за rollback конкретни доказателства.

Стартирайте първия instance, близък до production

Поддържайте първоначалното извикване на OpenClaw достатъчно възпроизводимо, за да може да бъде прегледано в pull request.

docker run -d \
  --name openclaw \
  --restart unless-stopped \
  -p 127.0.0.1:18789:18789 \
  -v openclaw-data:/home/node/.openclaw \
  -e OPENCLAW_GATEWAY_TOKEN=replace-with-a-long-random-value \
  -e OPENCLAW_GATEWAY_BIND=lan \
  ghcr.io/openclaw/openclaw:latest node dist/index.js gateway --bind lan --port 18789

Не разчитайте на latest, след като вече има реални данни. Запазете работещия digest, потребителя на container-а и ownership-а на mount-а. Проследете application log-а през пълен тест — сдвояване на един messaging channel, изпращане на inbound message, одобряване на подателя, извикване на безвреден tool и повторно свързване на Control UI след рестартиране на Gateway — и отбележете всички migrations, преди да поставите route-а зад production traffic.

Направете recovery на OpenClaw измерим

Docker image може да бъде изтеглен отново; workspace-ът, channel state-ът и configuration-ът на OpenClaw не могат. Направете mount на /home/node/.openclaw преди bootstrap, запишете безвредни sample данни и заменете container-а, за да докажете, че този path действително е persistent. Проверете effective mount-а, вместо да се доверявате на име на Compose файл, и се уверете, че runtime user-ът може да записва там, където OpenClaw очаква.

Изберете retention и off-host destination, след което репетирайте recovery, без да засягате production. Drill-ът е успешен само когато възстановеният Gateway може да отвори отново своя workspace, да разпознае paired channel-а и да използва provider authentication без повторен onboarding. При state, базиран на database, комбинирайте storage snapshots с application-consistent exports, както е описано в point-in-time recovery срещу snapshots.

Тествайте OpenClaw извън сървъра

Разглеждайте външния OpenClaw URL като configuration, която трябва да се запази при redeploy. Първо конфигурирайте public Gateway address и proxy, поддържащо WebSocket; след това насочете hostname-а към port 18789, като запазите оригиналните host и scheme.

Checklist-ът за reachability при deployment може да докаже, че request-ите влизат в container-а. След този етап известният failure — Gateway се свързва само към loopback или proxy-то отхвърля WebSocket upgrades — трябва да се изследва в OpenClaw, неговия state или workload-а, а не в автоматизацията на certificate-ите.

Намалете authority-то, притежавано от OpenClaw

Bootstrap credentials са временни; trust model-ът е постоянен. При OpenClaw следете дали Gateway token-ът не е оставен unset или не са одобрени неизвестни channel pairings, и използвайте една trust boundary на Gateway, преглеждайте всяко DM pairing и sandbox-вайте tools, които взаимодействат с host-а.

Третирайте OPENCLAW_GATEWAY_TOKEN според ролята му в OpenClaw: съхранявайте sensitive values извън Git, документирайте ефектите от rotation и никога не заменяйте публичен пример в production. Стартирайте image-а без ненужни Linux capabilities и публикувайте само public application route-а. Поддържайте administrator activity видима, без да записвате secret values.

Свържете OpenClaw с lifecycle-а на Dockup

Platform layer-ът за OpenClaw се състои от port 18789, ingress, TLS, runtime configuration, storage и dependency reachability. Dockup може да възпроизведе тези компоненти за собствената си инфраструктура или за сървър, свързан от клиента.

След това операторът завършва product layer-а: конфигурира public Gateway address и proxy, поддържащо WebSocket; прилага това access rule — използвайте една trust boundary на Gateway, преглеждайте всяко DM pairing и sandbox-вайте tools, които взаимодействат с host-а; и изпълнява „сдвоете един messaging channel, изпратете inbound message, одобрете подателя, извикайте безвреден tool и свържете отново Control UI след рестартиране на Gateway“. Записването на този тест заедно с deployment-а предотвратява объркването между автоматизираното provisioning и application readiness.

Често задавани въпроси

Какво е необходимо на OpenClaw за production deployment?

Насочете OpenClaw container-а на port 18789 през един HTTPS origin. Външното изискване за delivery е model-provider key и поне един paired channel. Не приемайте OpenClaw за готов, докато не можете да сдвоите един messaging channel, да изпратите inbound message, да одобрите подателя, да извикате безвреден tool и да свържете отново Control UI след рестартиране на Gateway.

Кои данни на OpenClaw трябва да бъдат включени в backup?

Направете persistent /home/node/.openclaw и включете workspace-а, channel state-а и configuration-а на OpenClaw в един и същ recovery manifest. Успешният clean restore на OpenClaw е налице само когато възстановеният Gateway може да отвори отново своя workspace, да разпознае paired channel-а и да използва provider authentication без повторен onboarding.

Изисква ли OpenClaw HTTPS зад reverse proxy?

Използвайте HTTPS за public OpenClaw origin и оставете port 18789 във вътрешния route. Приложете правилно OpenClaw setting-а: конфигурирайте public Gateway address и proxy, поддържащо WebSocket. При OpenClaw HTTPS защитава credentials или user content при пренос и поддържа последователно поведение на client-а, чувствително към origin.

Как трябва да бъде тестван OpenClaw upgrade?

Възстановете текущия OpenClaw state в isolated deployment, приложете candidate version и повторете acceptance transaction-а. Обърнете специално внимание, тъй като даден release може да промени Gateway configuration schema, bundled skills, browser dependencies или channel adapters. Запазете предишния OpenClaw image, докато границите на data migration-а и rollback-а не бъдат изяснени.