“Er med geigvanlega mikla erfilega med VPS-inn minn. Er ad setja upp OpenClaw i 3. eda 4. skiptid.”

Thessi skilabod birtust a OpenClaw Discord i seinasta manudi. Notandinn var ekki einn. Ef thid fliflid i gegnum samfelagsrasirnar findid thid tugi afbrigda af sama thmanum: vafraverkfaerid bilar, umbodsmanninn naer ekki til Chromium, VPS-inn verdur minnisnaumur, allt virkadi i gaer og nu gerir thad thad ekki.

Ef thid erud ad lesa thetta vegna thess ad thid leitadud ad “OpenClaw vafri virkar ekki VPS,” erud thid a rettum stad. Thessi grein utskyrur fimm hlutu sem bila, hvers vegna thau hafa ahrif hvert a annad a pirrandi hatt, og hvernig vid leystum thau oll med OpenClaw.rocks Kubernetes operator svo thid thurfid aldrei ad hugsa um uppsetningu vafrans aftur.

Villan sem allir sja

Algengasta villubodin i OpenClaw samfelaginu er thessi:

Can't reach the OpenClaw browser control service
(timed out after 15000ms)

Hun birtist a Ubuntu, Debian, i Docker, a Hetzner, Hostinger, GCP og alls stadar annarstadar thar sem folk reyna ad keyra OpenClaw med sjelfvirkri vafranotkun. Gateway-skrarnar segja “Browser control service ready.” En thegar umbodsmanninn reynir ad nota vafrann kemur timeout.

Villan er almenn. Orskirnar eru thad ekki. Thad eru ad minnsta kosti fimm adskild bilanatilvik og thau lita eins ut ad utan.

Bilun 1: Snap Chromium og AppArmor-veggurinn

A nylegum Ubuntu 22.04+ thjoni skilar which chromium-browser /usr/bin/chromium-browser. Thad litur ut fyrir ad vera rett. Thad er thad ekki.

Frá Ubuntu 22.04 er sjelfgefna Chromium-pakkinn snap. Thegar gateway OpenClaw reynir ad raesa thad binary gegnum systemd-thjonustu blokkkar takmorkuunarlag AppArmor thad. Snap-pakkinn getur ekki bundid Chrome DevTools Protocol (CDP) kembitengi gegnum sandkassann. Binary-id raesist, vidrast byrja, en bilar svo thoglega vid ad opna tengid sem OpenClaw tharf.

I skranunum muntu sja “Failed to start Chrome CDP on port 18800”, eda stundum ekkert. Vafrferlid raesist og deyr adur en thad skrifar eina einustu skrarlimu.

Lausnin er ad setja upp Google Chrome .deb-pakka eda nota sjelfstaedt Chromium-binary fra Playwright ur ~/.cache/ms-playwright/. Baedu komast framhja snap-sandkassanum. En lausnin er ekki augljós. Vafrgreining OpenClaw skannar stadlaedar slódir i rod, finnur snap-binary-id fyrst og reynir ad nota thad. GitHub issue #4978 hefur fulla lysingu.

Bilun 2: Headless-sjelfgildi sem gera rad fyrir skja

OpenClaw kemur med headless: false og noSandbox: false sem sjelfgefnar vafrstellingar. Thetta er skynsamlegt a Mac eda Windows-tolvu med skja. A VPS er enginn skjar. An serstakar stillingar reynir Chromium ad opna glugga a skjathjoni sem er ekki til.

Tvaer stillingarbreytingar laga thetta:

openclaw config set browser.headless true
openclaw config set browser.noSandbox true

Flestar VPS-leidarvisiur naefna thetta. En ef thid fylgid stadladum OpenClaw-uppsetningarleidbeiningum birtist hvorug linan. Thid settid upp, reynid vafrann, hann bilar. Thid leitid ad villunni. Thid findid bloggfaerslu. Thid bredtid stillingum. Thid endurraesid. Nu erud thid komin ad bilun thremur.

Bilun 3: OOM-drapid sem thid sjaid ekki

Einn Chromium-flipi med nokkrum opnum sidum neytir 2 til 4 GB af vinnsluminni. A 4 GB VPS skilur thad naesta ekkert eftir fyrir OpenClaw sjalfan, stydrikerfid og adra thjonustu sem eru i gangi.

Thegar Linux verdur minnisnaumt, drepur OOM-drapari kjarnans thad ferli sem neytir mests minnis. Thad er Chromium. Ferlid deyr. OpenClaw skrar vafrTimeout. Engin hrunsskyrsla, enginn staflaferill, engin vik ad thvi ad minni hafi verid vandamalid.

Thad er einig fíngerðari útgáfa af thessu vandamali. Chromium raesir undirteiknaraferli fyrir hvern flipa. Ef thessi ferli eru ekki hreinsu upp a réttan hátt, safnast thau upp. Eitt GitHub issue skraddi 39 munadarleysingjaferli sem neyttu 3,8 GB af vinnsluminni a VPS sem aetti ad hafa naegan svigrúm.

Thid getid kannast vid thetta eftir a med dmesg | grep -i "oom\|killed\|chromium", en flestir hugsa ekki um ad lita thar. Their endurraesa OpenClaw, thad virkar i nokkrar minutur, og svo gerist thad aftur.

Opinbera thjonustukrofusidan maelir med ad lagmarki 4 GB fyrir grunnuppsetningu. En su tala gerir rad fyrir engri sjelfvirkri vafranotkun. Med vafranum virkjum eru 8 GB raunhaefur lagmarkskostnadur. Hja Hetzner er thad munurinn a milli cpx22 (5 $/man.) og cpx42 (17 $/man.).

Bilun 4: Sameignarminni sem vantar i Docker

Ef thid keyrrid OpenClaw i Docker (algengt fyrir VPS-uppsetningar), er oennur gildra. Sjelfgefid /dev/shm i Docker er 64 MB. Chromium notar sameignarminni (shared memory) fyrir samskipti milli ferla. Thegar thad klárast, hrynja flipar thogulegur eda birta audar sidur.

Lausnin er ein lina i docker-compose.yml:

shm_size: '2gb'

Eda taka thad beinlinis med:

volumes:
  - /dev/shm:/dev/shm

Thetta er ekki skrad i uppsetningarleidbeiningum OpenClaw. Thad er Docker-serstaed hedn sem hefur ahrif a oll forrit sem nota Chromium, en nema thid hafid sent headless-vafra i Docker adur, munud thid ekki vita ad leita ad thvi.

Bilun 5: Gattaarekstur sem enginn varaddi ykkur vid

Vafrastjornunarthjonusta OpenClaw keyrir a odrum tengi en gateway-id. Sjelfgefid er thad gattid a gateway plus 2. Ef gateway-id yddar er a 18789, aetti vafrastjornunarthjonustan ad vera a 18791 og vidbotarrelaeid a 18792.

I Docker, ef thid opnid addeins gatt 18789, er vafrastjornunarthjonustan othaeanleg utan gamsins. Thad sem verra er, gateway-id skrar “Browser control service ready” jafnvel thegar gatt 18791 bindst i raun aldrei. Issue #17584 rakti thetta til gateway-sins sem flutti inn rangt module: thad sem skrar “ready”-skipunina an thess ad raesa HTTP-thjoninn. Skrain segir ykkur ad allt se i lagi. Gattid er daudtt.

I Kubernetes, ef annar gamur i sama pod-inu notar nuathegar gatt 9222 (stadhlaeda CDP-gattid), greinir ensurePortAvailable()-fall OpenClaw gattid sem upptekid og neitar ad tengjast, jafnvel thótt sá sem a gattid se einmitt thad Chromium-tilvik sem OpenClaw aetti ad tala vid.

GitHub issue #10994 skrar tilvik thar sem VPS-uppsetning notandans virkadi rett. Sidan, eftir nokkrar sjelfvirkar adgerdir, festist CDP-gattid. Eina lausnin var ad finna og drepa villta Chromium-ferli sem heldu gattinu.

Af hverju thessar bilanir margfaldast

Hvert thessara fimm vandamala hefur thektta lausn. En thau hafa ahrif hvert a annad. Thid leysid snap-vandamalid og lenndi a headless-sjelfgildinu. Thid lagid stillingarnar og Chromium raesist. Thad keyrir i tiu minutur, sidan tekur OOM-drapariinn thad. Thid baetid vid swap-plássi og nu veldur sameignarminnistakmork Docker hogglum teiknunarbilunum. Thid lagid thad og uppgotuvid ad gatt 18791 er ekki opnad.

Kembilyddan litur svoleleis ut: leitid ad villu, finnid hlutlausn, notid lausn, lendid a naeste villu, endurtakid. Einn Discord-notandi lysiti thvi ad hafa sett stydrikerfid sitt upp aftur “i 3. eda 4. skiptid.” Annar sagdi ad vafrinn vaeri “ostodugur” eftir thad sem hann taldi vera fullkomna uppsetningu. Sa thridi opnadi issue med einfaldlega titlinum “Browser tool consistently fails on VPS.”

Vandamalid er ekki ad ein stakstok lausn se erfid. Vandamalid er ad thad eru fimm af theim, thau eru hada vid stadkvaemt stydrikerfi, pakkastjóra, gámarúntíma og VPS-veitu, og eitt mistok i kedjunni thydir ad vafrinn virkar ekki.

Thad ber ad thakka OpenClaw-lidinu ad thad hefur lagad tengda galla stadigt. Villandi “ready”-skrain, hreinsun a munadarleysja-rendererum og medhandling CDP-gatta hafa oll batnast i nylegum utthafum. En upstream-lagfarirnar taka a einkennum inni i koda OpenClaw. Thaer geta ekki sett upp retta Chromium-binary-id a thjoninum yddar, stillt sameignarminni Docker eda uthlutad naegu vinnsluminni fyrir sjelfvirka vafranotkun. Thad er enn a yddar abyrgt.

Hvernig vid brotum Chromium thrisvar (og hvad vid laerdum)

Vid keyrum hvern OpenClaw.rocks umbodsmann a Kubernetes med opnum-uppsprettu-operatornum okkar. Vafra-sidecar-id tok okkur vikur ad fa rett. Vid rákum a okkar eigin utgafu af ollu sem lysst er ad ofan, auk nokkurra vandamala sem birtast einungis i samhengi gámaútvegslu.

Hugmyndin var einfoeld: keyra Chromium sem serstakan gam vid hlib OpenClaw, tengdan gegnum CDP. Ein lina i custom resource og vafrinn virkar bara.

spec:
  chromium:
    enabled: true

Svoleleis kom thessi eina lina i raun saman.

Hrun 1: Rangur notandi, skrifvarnatt skraarkerfi

Fyrsta tilraun okkar keyrdi Chromium-gaminn sem UID 1001 med skrifvarnddu skraarkerfi. Bestu ordyggisvenjur. Einnig algjarlega bilad. Browserless-myndinn baist vid UID 999 (blessuser) og Node.js kallar a os.userInfo() vid raesingu, sem bilar med ENOENT thegar UID-id hefur enga /etc/passwd-faerslu. Jafnvel eftir ad laga UID-id, blokkadi skrifvarnada skraarkerfid Chrome fra thvi ad skrifa bradabirgdaskrar. Sidecar-id hrundi vid hverja raesingu adur en thad skrifadi eina einustu skrarlinu. Issue #12 hefur alla soguna.

Hrun 2: WebSocket-ordyggisveggurin

Med gaminum loksins i gangi var Chromium virkt, CDP svadadi a gatti 9222, en OpenClaw neittadi ad nota thad. Gateway-id var ad bindast vid LAN-IP pod-sins (naudsynlegt fyrir Kubernetes Service routing) og ordyggislagid OpenClaw blokkadi otadulad ws://-tengingar vid netfong sem eru ekki loopback: “SECURITY ERROR: Gateway URL uses plaintext ws:// to a non-loopback address. Both credentials and chat data would be exposed to network interception.”

Logleg ordyggissthing. En i Kubernetes-pod deila allir gamar netkerfi. Umferd a milli theirra yfirgefur aldrei hnútinn. Vid gatum ekki breytt ordyggisathugun OpenClaw, svo vid baettum vid nginx reverse proxy sidecar sem hlustar a ollum vidmotum og framleidir til gateway-sins a loopback. Gateway-id helst oryggt. Thjonustan helst thaeanleg. Issue #135 skrar kembinguna.

Hrun 3: Gatt 3000 arekstur

Chromium var i gangi. Gateway-id var proxied. En vafrinn vildi enn ekki tengjast. Browserless-myndinn notar sjelfgefid gatt 3000, sem rekst a innri vafrastjornunarthjonustu OpenClaw. Og thegar vid skipt yfir i gatt 9222, greindi ensurePortAvailable() OpenClaw thad sem “i notkun af einhverju odru” og neittadi ad tengjast, thvi ad i samnyttu netkerfisrymi litur gatt sidecar-sins ut eins og stadvaert.

Lausnin var ad nota IP-tolu pod-sins (gegnum Kubernetes Downward API) i stad localhost fyrir CDP-slodina. Netfang sem er ekki loopback segir OpenClaw ad nota fjarstyrt/tengja-addeins-stillingu: tengjast thvi sem er thegar i gangi i stad thess ad reyna ad raesa sinn eigin vafra. PR #183 leysti thetta.

Nidurstadan: fimm lagfarir, sjalfvirkt beittar

Hvert thessara hruna kennddi okkur eitthvad. Nudverandi operator koddar allt:

Sidecar-einangrun. Chromium keyrir i eigin gami. Ekkert snap. Ekkert Playwright. Engir headless-flaggar. Browserless-myndinn sjaer um allt thetta.

Tileinkad audlindir. Sidecar-id faer sin eigin CPU- og minnistakmork (250m-1000m CPU, 512Mi-2Gi RAM sjelfgefid, stillanlegt). Ef Chromium fer yfir minnistakmork sin, endurraesir Kubernetes addeins vafragaminn. Umbodsmasturinn yddar heldur afram.

Sameignarminni. Operatorinn tengir sjalfvirkt 1 GB minnisbundid drif vid /dev/shm. Engin Docker shm_size-stilling naudsynleg.

Gattastefna. Pod-IP fyrir CDP-slodina virkjar fjartengdan ham. OpenClaw tengist sidecar-inu i stathinn ad reyna ad eigna ser gattid. ensurePortAvailable()-areksturinn hverfur.

Innbyggd bot-vorn. Margar vefsidur greina sjelfgefid headless Chromium og loka fyrir sjelfvirknni. Operatorinn studur extraArgs a Chromium-sidecar-inu, svo thid getid sent flagga eins og --disable-blink-features=AutomationControlled og sersnidna notandaumbodshadda an thess ad byggja serstaka gamsmynd:

spec:
  chromium:
    enabled: true
    extraArgs:
      - "--disable-blink-features=AutomationControlled"
      - "--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
      - "--window-size=1920,1080"

Ordyggi an saettagerda. Ollum Linux-getum sleppt, forrettindaaukun ovirk, seccomp RuntimeDefault, non-root UID 999. Ekkert --no-sandbox sem root.

Hvad thetta thydir fyrir ykkur

Ef thid keyrrid OpenClaw a VPS og vafrinn virkar, til hamingju. Thid hafid siglt i gegnum fimm adskild bilanatilvik og komist a hina hlidina. Haldid uppsetningunni yddar. Afritid stillingarnar yddar.

Ef vafrinn virkar ekki, eda hann virkar af og til, eda ef thid erud threytt a ad kemba Chromium a 5-dala VPS, ihugid hvad timi yddar er verdur.

OpenClaw.rocks keyrir hvern umbodsmann a Kubernetes med operatornum sem lyst er ad ofan. Vafra-sidecar-id er foruppsettt. Minni er uthlutad. Gott eru stefnd. Ordyggi er hert. Thid settid ekkert upp, stillid ekkert og kembid ekkert.

Umbodsmasturinn yddar faer vafra sem virkar. I hvert skipti. Beinnt ur kassanum.

Fimm lagfarirnar, dregnar saman

Ef thid viljid halda ad hafa thad sjalf, her er heildarlisti:

  1. Skippa ut snap Chromium med Google Chrome .deb eda sjelfstaedu binary fra Playwright
  2. Virkja headless-ham: openclaw config set browser.headless true og browser.noSandbox true
  3. Uthluta 8 GB+ vinnsluminni eda baeta vid 4 GB swap fyrir sjelfvirka vafranotkun
  4. Tengja sameignarminni i Docker: shm_size: '2gb'
  5. Opna oll thrju gottin: gateway, vafrastjornun (gateway + 2) og vidbotarrelae (gateway + 3)

Eda sleppid listanum. Faid umbodsmanninn yddar a OpenClaw.rocks og latid okkur sja um innvihi.