Visas sistēmas darbojas Tavs IP: 216.73.217.113 info@cloudhosting.lv +371 66 66 29 69 Klientu zona

← Visi jautājumi

OpenClaw ar Docker: uzstādīšana un palaišana

Atjaunināts:

OpenClaw labi darbojas Docker vidē: lejupielādē oficiālo ghcr.io/openclaw/openclaw attēlu, piesaisti (bind-mount) uid 1000 lietotājam piederošu resursdatora direktoriju pie /home/node/.openclaw, glabā API atslēgas un vārtejas (gateway) tokenu .env failā, publicē portu 18789 tikai uz 127.0.0.1 un palaid to ar docker compose up -d. Uz nelielas Linux virtuālās mašīnas uzstādīšana aizņem apmēram desmit minūtes; smilškastes (sandbox) nianse raksta beigās ir tā daļa, ko lielākā daļa Docker lietotāju palaiž garām.

Ko dod Docker attēls

OpenClaw ir atvērtā koda (MIT, OpenClaw Foundation) personīgais MI aģents, kas darbojas kā ilgdzīvojoša vārteja: viens Node.js process, kas uztur kanālu savienojumus, sazinās ar LLM sniedzēju un izpilda rīkus. Natīvajai instalācijai vajadzīgs Node 24.16+ vai 26.1+; attēlā ir sava izpildvide, tāpēc resursdatoram nepieciešams tikai Docker Engine un Compose v2.

Attēls atrodas GitHub Container Registry kā ghcr.io/openclaw/openclaw, ar spoguli Docker Hub kā openclaw/openclaw. Tagi seko laidienu kalendāram (piemēram, 2026.9.3), plus mainīgie kanāli latest, main un extended-stable, kā arī varianti, piemēram, -slim un -browser. Parastie versiju tagi un datētie -rYYYYMMDD tagi ir nemainīgi, un dokumentācija iesaka piesaistīt vienu no tiem, lai izvietojums nesekotu mainīgam tagam. Raksta tapšanas brīdī jaunākais laidiens ir v2026.9.4 (2026. gada 11. septembris).

Attēla iekšienē process darbojas kā neprivileģēts lietotājs node, uid 1000; Dockerfile jau iepriekš izveido /home/node/.openclaw ar režīmu 0700, kas pieder šim lietotājam, tāpēc 1. solī ir svarīga resursdatora direktorijas piederība. Dokumentācija prasa 6 GB RAM tikai tad, ja būvē no pirmkoda; ar gatavo attēlu mūsu izvietojumos vārteja dīkstāvē patērē dažus simtus megabaitu, tāpēc 1 līdz 2 GB pietiek aģentam, kas strādā tikai ar Telegram.

1. solis: sagatavo stāvokļa direktoriju

Viss, kam jāpārdzīvo restarts, atrodas vienā direktorijā: openclaw.json, darba vide (workspace), SQLite stāvokļa faili un kanālu stāvoklis. Dokumentācija to piesaista kā bind-mount, lai tā pārdzīvotu konteinera nomaiņu, un problēmu novēršanas lapa dod to pašu risinājumu piekļuves tiesību kļūdām: resursdatora direktorijai jāpieder uid 1000, lietotājam, ar kuru darbojas konteiners.

mkdir -p ~/.openclaw/workspace ~/.openclaw-auth-profile-secrets
sudo chown -R 1000:1000 ~/.openclaw ~/.openclaw-auth-profile-secrets
chmod 700 ~/.openclaw

Uz svaigas Ubuntu VM pirmais pieteikšanās lietotājs parasti jau ir uid 1000; ja strādā kā root, tieši chown novērš EACCES kļūdas žurnālos.

2. solis: Compose fails

Oficiālais ceļš ir klonēt repozitoriju un palaist ./scripts/docker/setup.sh, kas uzbūvē vai lejupielādē attēlu, ieraksta .env un sāk sākotnējo iestatīšanu (onboarding). Uz servera ar roku rakstīts Compose fails ar piesaistītu tagu un publicēšanu tikai uz loopback ir vieglāk pārbaudāms. Zemāk esošais fails ir saīsināts no augšupējā (upstream) docker-compose.yml: tie paši servisu nosaukumi, konteinera ceļi, nostiprināšana un veselības pārbaude, ar fiksētu tagu, 127.0.0.1 piesaisti un YAML enkuriem kopīgajai videi. Augšupējais fails publicē arī 18790 un 3978 (tilts un Microsoft Teams); aģentam tikai ar Telegram nav vajadzīgs neviens no tiem.

x-openclaw-env: &openclaw-env
  HOME: /home/node
  OPENCLAW_HOME: /home/node
  OPENCLAW_STATE_DIR: /home/node/.openclaw
  OPENCLAW_CONFIG_PATH: /home/node/.openclaw/openclaw.json
  OPENCLAW_CONFIG_DIR: /home/node/.openclaw
  OPENCLAW_WORKSPACE_DIR: /home/node/.openclaw/workspace
  OPENCLAW_GATEWAY_PORT: "18789"
  OPENCLAW_GATEWAY_TOKEN: ${OPENCLAW_GATEWAY_TOKEN:-}
  TZ: ${OPENCLAW_TZ:-UTC}

x-openclaw-volumes: &openclaw-volumes
  - "${HOME}/.openclaw:/home/node/.openclaw"
  - "${HOME}/.openclaw/workspace:/home/node/.openclaw/workspace"
  - "${HOME}/.openclaw-auth-profile-secrets:/home/node/.config/openclaw"

services:
  openclaw-gateway:
    image: ghcr.io/openclaw/openclaw:2026.9.3
    env_file:
      - path: .env
        required: false
    environment: *openclaw-env
    volumes: *openclaw-volumes
    ports:
      - "127.0.0.1:18789:18789"
    cap_drop:
      - NET_RAW
      - NET_ADMIN
    security_opt:
      - no-new-privileges:true
    extra_hosts:
      - "host.docker.internal:host-gateway"
    init: true
    restart: unless-stopped
    command: ["node", "dist/index.js", "gateway", "--bind", "lan", "--port", "18789"]
    healthcheck:
      test: ["CMD", "node", "dist/docker-healthcheck.js"]
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 20s

  openclaw-cli:
    image: ghcr.io/openclaw/openclaw:2026.9.3
    network_mode: "service:openclaw-gateway"
    env_file:
      - path: .env
        required: false
    cap_drop:
      - NET_RAW
      - NET_ADMIN
    security_opt:
      - no-new-privileges:true
    environment:
      <<: *openclaw-env
      BROWSER: echo
    volumes: *openclaw-volumes
    stdin_open: true
    tty: true
    init: true
    entrypoint: ["node", "dist/index.js"]
    depends_on:
      - openclaw-gateway

--bind lan nav kļūda: tīklošanas dokumentācija skaidro, ka konteinera iekšienē lan ļauj resursdatoram sasniegt publicēto portu, savukārt loopback ir sasniedzams tikai no paša konteinera tīkla telpas (namespace). Atklātību nosaka rinda ports:, un 127.0.0.1:18789:18789 notur to uz resursdatora loopback; dokumentācija pieprasa vārtejas autentifikāciju jebkurai piesaistei, kas nav loopback, tāpēc tokens ir obligāts. Serviss openclaw-cli dala vārtejas tīkla telpu, tāpēc docker compose run --rm openclaw-cli ... izpilda jebkuru openclaw komandu pret strādājošo vārteju.

3. solis: noslēpumi .env failā

Compose nolasa .env blakus Compose failam un caur env_file ievada katru mainīgo abos konteineros. Turi to ar režīmu 600 un ārpus git.

OPENCLAW_GATEWAY_TOKEN=replace-with-a-long-random-string
OPENAI_API_KEY=sk-...
TELEGRAM_BOT_TOKEN=123456789:AA...
OPENCLAW_TZ=Europe/London

Ģenerē tokenu ar openssl rand -hex 32. OPENAI_API_KEY ir mainīgais, ko Docker dokumentācija izmanto sniedzēja akreditācijas datiem; ar --secret-input-mode ref sākotnējā iestatīšana saglabā atsauci uz šo mainīgo, nevis pašu atslēgu, un arī openclaw.json vērtības atbalsta ${VAR} aizstāšanu. OpenAI saderīgam galapunktam onboard komandas apraksts rāda --auth-choice custom-api-key ar --custom-base-url un --custom-model-id; sniedzējam bez dokumentētas neinteraktīvas izvēles (Anthropic, cik mums izdevās atrast) palaid interaktīvo vedni no dokumentācijas manuālās plūsmas: docker compose run --rm --no-deps --entrypoint node openclaw-gateway dist/index.js onboard --mode local --no-install-daemon. TELEGRAM_BOT_TOKEN ir dokumentētais rezerves variants noklusētajam Telegram kontam; konfigurācijai ir prioritāte pār to, un tam jāpaliek .env failā arī pēc sākotnējās iestatīšanas, jo --use-env to nekopē konfigurācijā. Konfigurācijas dokumentācija pieļauj arī neobligātu ~/.openclaw/.env stāvokļa direktorijas iekšienē; mēs to izmantojam MCP serveru galvenēm.

4. solis: sākotnējā iestatīšana un Telegram

Docker dokumentācija piedāvā neinteraktīvu sākotnējās iestatīšanas komandu resursdatoriem bez TTY. Tā ieraksta openclaw.json piesaistītajā direktorijā, norāda vārtejas autentifikāciju uz .env tokenu un izlaiž kanālus:

docker compose run -T --rm --no-deps --entrypoint node openclaw-gateway \
  dist/index.js onboard --non-interactive --accept-risk --skip-health \
  --mode local \
  --auth-choice openai-api-key \
  --secret-input-mode ref \
  --gateway-auth token \
  --gateway-token-ref-env OPENCLAW_GATEWAY_TOKEN \
  --skip-channels \
  --no-install-daemon

docker compose run -T --rm --no-deps --entrypoint node openclaw-gateway \
  dist/index.js channels add --channel telegram --use-env

Abas komandas ir nokopētas no Docker dokumentācijas; --use-env pārbauda, vai TELEGRAM_BOT_TOKEN ir iestatīts, pirms ieraksta konfigurāciju. Tagad piesaisti botu tikai sev: Telegram tevi identificē pēc skaitliska lietotāja id (uzraksti botam privāti, kamēr tas vēl ir pārošanas režīmā, un nolasi id no tā atbildes, vai pajautā @userinfobot), un piekļuves kontroles dokumentācija iesaka dmPolicy: "allowlist" ar šo id sarakstā allowFrom, plus commands.ownerAllowFrom komandām, kas paredzētas tikai īpašniekam; lietotājvārdi, tālruņa numuri un čatu id netiek pieņemti. Rediģē ~/.openclaw/openclaw.json:

{
  "channels": {
    "telegram": {
      "enabled": true,
      "dmPolicy": "allowlist",
      "allowFrom": ["123456789"]
    }
  },
  "commands": {
    "ownerAllowFrom": ["telegram:123456789"]
  }
}

Noklusētais dmPolicy ir pairing, kas notur nezināmus sūtītājus gaidīšanā, līdz tu tos apstiprini; allowlist ir stingrāks, un tieši to mēs piegādājam. Fails ir JSON5 formātā, tāpēc komentāri un beigu komati tiek pieļauti, bet nezināma atslēga vai nederīga vērtība liek vārtejai atteikties startēt ar izejas kodu 78.

5. solis: palaid, pārbaudi veselību, lasi žurnālus

docker compose up -d openclaw-gateway
docker compose ps
docker compose logs -f openclaw-gateway
curl -fsS http://127.0.0.1:18789/healthz
curl -fsS http://127.0.0.1:18789/readyz
docker compose run --rm openclaw-cli gateway status
docker compose run --rm openclaw-cli doctor

Veselības pārbaude izpilda node dist/docker-healthcheck.js ik pēc 30 sekundēm pēc 20 sekunžu starta perioda, tāpēc docker compose ps rāda healthy, tiklīdz vārteja ir gatava. Dokumentācijā uzskaitītas trīs neautentificētas pārbaudes: /healthz (dzīvotspēja), /startupz (starts) un /readyz (gatavība, ņemot vērā kanālus). Vesela gateway status izvade rāda Runtime: running un Connectivity probe: ok.

Konteinera nostiprināšana

OpenClaw pēc uzbūves ir attālināta koda izpilde: aģents tavā vietā izpilda čaulas komandas, kas ir visa jēga un vienlaikus iemesls, kāpēc vārteja nekad nedrīkst būt sasniedzama no interneta. Agrākiem laidieniem bija CVE-2026-25253, attālināta koda izpilde ar vienu klikšķi caur vārtejas tokena zādzību, plus izcelsmes (origin) validācijas nepilnības vadības saskarnē. Aizsardzība visām versijām ir viena un tā pati: ports paliek uz loopback, un tu to sasniedz caur SSH vai privātu pārklājuma tīklu.

  • Publicē tikai uz 127.0.0.1. Drošības dokumentācija norāda, ka publicētie konteineru porti iet caur Docker pārsūtīšanas ķēdēm, nevis tikai caur resursdatora INPUT noteikumiem, tāpēc publicēšana uz 0.0.0.0 var būt atvērta pat tad, ja tavs ugunsmūris apgalvo pretējo; visu, ko tomēr publicē, filtrē ķēdē DOCKER-USER.
  • Vadības saskarni sasniedz caur SSH tuneli no attālinātās piekļuves dokumentācijas: ssh -N -L 18789:127.0.0.1:18789 user@gateway-host, tad atver http://127.0.0.1:18789/. Dokumentācija tā paša iemesla dēļ dod priekšroku Tailscale Serve, nevis LAN piesaistēm: vārteja paliek uz loopback.
  • Ierobežo, kas drīkst runāt ar botu, izmantojot allowFrom, un ko katrs sūtītājs drīkst darīt, ar tools.toolsBySender, ja atļauts vairāk nekā viens cilvēks.
  • Pēc katras izmaiņas palaid docker compose run --rm openclaw-cli security audit; dokumentācija to sauc par vienīgo komandu, kas pasaka, vai esi novirzījies no drošā stāvokļa.

Smilškastes nianse

OpenClaw var izpildīt rīkus atsevišķā smilškastes konteinerā. Iestatījums ir agents.defaults.sandbox.mode ar trim dokumentētām vērtībām: off (noklusējums), non-main (katra sesija, izņemot aģenta galveno sesiju) un all (katra sesija). Docker aizmugure (backend) veido šīs smilškastes caur docker CLI ar nostiprinātiem noklusējumiem: tīkls none, tikai lasāma saknes failu sistēma, visas iespējas (capabilities) noņemtas, attēls openclaw-sandbox:bookworm-slim, ko tu uzbūvē pats ar scripts/sandbox-setup.sh (OpenClaw to neaizstās ar parastu Debian attēlu). Dokumentācija to raksturo kā sienu ap rīku izpildi, kamēr pati vārteja paliek uz resursdatora.

Āķis: konteinerā ievietotai vārtejai nav sava Docker dēmona. Augšupējais Compose fails to pasaka tieši komentārā: smilškastes ieslēgšanai attēlā vajadzīgs Docker CLI (būvē ar --build-arg OPENCLAW_INSTALL_DOCKER_CLI=1 vai palaid setup.sh ar OPENCLAW_SANDBOX=1), vārtejas konteinerā jāpiesaista /var/run/docker.sock un caur group_add jāpievieno resursdatora docker grupas id. Dokumentācija rezultātu sauc par blakuskonteineriem (sibling containers), kas izveidoti caur resursdatora Docker ligzdu. Šīs ligzdas nodošana konteineram, kurā darbojas MI aģents, dod aģentam root līmeņa kontroli pār resursdatoru, kas atceļ lielāko daļu no tā, ko smilškaste pievieno.

Tāpēc lielākā daļa Docker izvietojumu, arī mūsējie, darbojas ar izslēgtu smilškasti un paļaujas uz divām robežām: vārtejas konteineru (neprivileģēts uid 1000, noņemtas iespējas, no-new-privileges) un virtuālo mašīnu ap to, kurā nav nekā cita. Ja smilškaste tev ir vajadzīga, instalē natīvi uz resursdatora, kur vārteja var sasniegt Docker, kā mūsu soli pa solim VPS uzstādīšanas pamācībā, vai izmanto citu dokumentētu aizmuguri: podman, ssh, openshell vai crabbox.

-browser attēls un atmiņa

Standarta attēlā pārlūka nav. Aģentam, kas atver tīmekļa lapas, izmanto -browser variantu; dokumentācijas piemērs ir ghcr.io/openclaw/openclaw:latest-browser, un piesaistītam izvietojumam tā iesaka šī mainīgā taga vietā izvēlēties konkrēta laidiena -browser tagu. Dokumentācija norāda, ka ar Docker vārteju pārlūka binārajam failam jāatrodas konteinera iekšienē; pārlūka attēlā ir iebūvēts Playwright Chromium plus Xvfb, ko OpenClaw uz Linux atpazīst automātiski; ja starts ziņo par trūkstošu displeju, pārbaudi browser.headless vai OPENCLAW_BROWSER_HEADLESS. Nepiesaisti neko virs /home/node/.cache/ms-playwright, jo tas paslēptu iebūvēto pārlūku. Dokumentācija atmiņas skaitli nedod; mūsu izvietojumos bezgalvas (headless) Chromium sesija pievieno aptuveni 0.5 līdz 1 GB virs vārtejas, tāpēc pārlūka attēlam par minimumu uzskatām 4 GB.

Atjaunināšana, mainot tagu

Tā kā stāvoklis atrodas uz resursdatora, atjaunināšana ir taga maiņa. Izveido rezerves kopiju, nomaini tagu abos servisos (piemēram, uz 2026.9.4), tad:

tar czf ~/openclaw-backup-$(date +%F).tgz -C ~ .openclaw
docker compose pull openclaw-gateway openclaw-cli
docker compose up -d openclaw-gateway
docker compose run --rm openclaw-cli doctor --json

Jaunā vārteja pirms ziņošanas par gatavību izpilda startam drošas migrācijas, un dokumentācija saka, ka parastai attēla atjaunināšanai nevajadzētu prasīt atsevišķu doctor --fix piegājienu. Ja labošanu nevar droši pabeigt, vārteja beidz darbu tā vietā, lai ziņotu par veselību, un konteiners restartējas ciklā; dokumentētais risinājums ir vienreiz palaist to pašu attēlu ar doctor --fix kā komandu pret to pašu stāvokļa direktoriju, tad palaist vārteju un izpildīt doctor --json kā tikai lasošu priekšpārbaudi:

docker run --rm -v ~/.openclaw:/home/node/.openclaw ghcr.io/openclaw/openclaw:2026.9.4 openclaw doctor --fix

Tar arhīvs ir vienkāršā čaulas rezerves kopija; dokumentācija piedāvā arī openclaw backup create --verify. Atkāpšanās nozīmē iepriekšējo tagu plus šo rezerves kopiju: dokumentācija brīdina, ka uz jaunāku versiju migrēta stāvokļa datubāze pati par sevi atpakaļ neatgriežas.

Kad to visu izlaist

Aģentam, kas tev atbild Telegram, izpilda dažus rīkus un paliek privāts, augstāk aprakstītie soļi ir viss darbs; ar tā mitināšanu tiek galā neliela Linux VM no mūsu VPS klāsta. Ja tu labāk vispār negribi uzturēt Docker, mūsu gatavais OpenClaw serveris no 9.35 EUR mēnesī tiek piegādāts ar Ubuntu 24.04, vārteju, kas jau uzstādīta Docker tieši tā, kā aprakstīts šeit, portu uz loopback un izslēgtu smilškasti; tu pievieno LLM atslēgu, pieslēdz Telegram botu un sāc sarunu. Par to, kuru mašīnu izvēlēties, lasi rakstā servera izvēle MI darba slodzēm.

Jautājumi

Vai man vajadzīgs Node.js uz resursdatora, lai darbinātu OpenClaw Docker vidē?

Nē. Natīvajai instalācijai vajadzīgs Node 24.16+ vai 26.1+, bet attēlā ir sava izpildvide; resursdatoram vajadzīgs tikai Docker Engine un Compose v2.

Kāpēc Compose fails piesaista pie lan, ja vārtejai jābūt tikai uz loopback?

Konteinera iekšienē loopback nozīmē paša konteinera tīkla telpu, ko resursdators nevar sasniegt, tāpēc tīklošanas dokumentācija Docker izvietojumiem pēc noklusējuma izmanto lan un ļauj rindai ports izlemt par atklātību; publicēšana uz 127.0.0.1:18789 notur vārteju tikai uz loopback, raugoties no resursdatora puses.

Vai smilškasti var ieslēgt vēlāk?

Jā, bet ar vārteju Docker vidē tas nozīmē dot konteineram Docker CLI un resursdatora Docker ligzdu, lai tas varētu radīt blakus smilškastes konteinerus. Lielākajai daļai viena īpašnieka aģentu konteinera plus VM robeža ir drošāks kompromiss.

Kur ir žurnāli?

docker compose logs -f openclaw-gateway straumē vārtejas izvadi; docker compose run --rm openclaw-cli logs --follow izmanto paša OpenClaw žurnālu komandu. Ja kaut kas izskatās nepareizi, sāc ar gateway status un doctor.

Gribat, lai tas darbojas privāti?
AI asistents uz sava servera ES, un dati paliek tur, kur jūs tos nolikāt.
Apskatīt cenas

Gatavs sākt?

Palaid dažās minūtēs vai aprunājies ar inženieri par piemērotāko risinājumu.