Back to articles
2026-02-11

Browser automation on ARM64 Hetzner: Playwright install, Chromium path drift, and fast recovery for OpenClaw

A practical runbook for stable OpenClaw browser automation on ARM64 Hetzner: Playwright/Chromium dependency checks, persistent paths, and repeatable recovery steps.

Want this set up for you?
Basic Setup is £249 (24–48h). Email alex@clawsetup.co.uk.

Abstract: ARM64 Hetzner VPS instances are a good fit for OpenClaw cost and performance, but browser automation reliability depends on operational details that are easy to miss: Playwright availability, Chromium binary persistence, and post-upgrade path drift. This deep-dive explains how SetupClaw treats browser automation as a recoverable subsystem, with explicit checks and a repeatable runbook that prevents recurring breakage.

People often blame ARM64 when browser automation fails. I think that is usually the wrong diagnosis. Most outages come from runtime drift, missing browser binaries, or install assumptions that worked once and then quietly failed after rebuilds.

That distinction matters for SetupClaw Basic Setup. If you treat browser tooling as a one-time install, you get periodic incidents. If you treat it as an operational dependency with health checks and persistence rules, ARM64 can be stable and predictable for day-to-day OpenClaw work.

Why this failure pattern repeats on ARM64 VPS hosts

The typical timeline is straightforward. Initial deployment works. A host update, container rebuild, or image refresh happens. Then browser actions fail with messages about unavailable Playwright features or missing Chromium binaries.

From the operator’s point of view, this looks random because OpenClaw config may be unchanged. From a runtime point of view, it is not random at all. Browser assets were in cache or paths that did not survive the change.

So the right question is not “did we configure browser once?” It is “are browser dependencies still present at the path this runtime expects?”

Keep subsystem boundaries clear during incidents

OpenClaw browser tooling is part of the stack, but it is not the entire gateway. That separation gives you options when browser health degrades.

Telegram control can still work. Memory can still store incident notes. Many non-browser automations can continue running. You can use those channels for diagnosis instead of escalating to emergency network changes.

This also supports security posture. There is no need to expose operator UI publicly just to debug browser issues quickly. Keep the control plane private and use established access methods.

Practical recovery sequence for path drift and missing binaries

A recovery runbook should be short, ordered, and copy/paste friendly.

Step one: verify gateway and browser status

Start with status checks so you know whether this is browser-specific or a broader service outage.

Step two: confirm Playwright capability is available

If advanced browser actions fail with Playwright availability errors, treat dependency state as the primary suspect.

Step three: reinstall Chromium with bundled CLI path

In Docker/ARM64 layouts, use the bundled CLI path rather than assuming generic npx playwright behaviour.

Example for layouts where app root is /app:

node /app/node_modules/playwright-core/cli.js install chromium

Restart the gateway after dependency changes so runtime state is clean.

Step four: enforce persistent browser cache path

Set and verify PLAYWRIGHT_BROWSERS_PATH to persistent storage. If cache lives on ephemeral paths, incidents will recur after redeploy.

Step five: run browser smoke checks

Run a fixed set of tests in order, status, snapshot, navigate, screenshot, and record results in your runbook.

For browser-dependent cron jobs, add a preflight check (for example status + snapshot) so failures happen early with actionable logs.

When this sequence is documented and followed, this usually reduces mean time to recovery by making remediation repeatable.

Persistence is the main reliability control

In practice, persistence is the dividing line between a stable ARM64 browser setup and a flaky one. Teams often install dependencies correctly but store binaries in locations tied to transient layers.

If the browser cache disappears on restart or rebuild, automation breaks again regardless of how clean the original install looked. That is why SetupClaw handoff should include one explicit rule: browser binaries must live in persistent storage with known ownership and path policy.

After upgrades, also verify Playwright package version and browser revision compatibility; mismatch can look like path drift.

Profile choice affects determinism

For server-side automation, the managed openclaw browser profile is usually the better default because it is predictable and controlled on-host.

Chrome extension relay is still useful when you intentionally need live-tab takeover on a local machine, but it should be treated as a separate operating mode, not the baseline for VPS automation reliability.

How browser health connects to cron, memory, and PR-only

Browser failures can be isolated, but they still matter for scheduled jobs. Any cron task that depends on browser actions should include a lightweight preflight check so jobs fail early with clear diagnostics.

Memory should capture host-specific recovery knowledge. Keep last-known-good paths and command blocks in operational notes so future incidents are faster to resolve.

If fixing reliability requires Dockerfile or config changes, route those changes through PR-only workflows. Emergency hot edits can restore service, but undocumented edits increase long-term risk and make future drift harder to trace.

Practical handoff checklist for this topic

A usable Basic Setup handoff for ARM64 browser operations should include:

  • a browser sanity checklist (status, snapshot, navigate, screenshot)
  • the exact reinstall command path for Chromium
  • persistence requirements for browser cache location
  • restart expectations after dependency/config updates
  • rollback notes for upgrades that break browser actions

This is intentionally small. The goal is not to add process overhead, it is to make failures obvious, recoverable, and repeatable under pressure.

One final boundary is worth stating clearly. SetupClaw can stabilise tooling, paths, and recovery on ARM64, but it cannot guarantee third-party website behaviour in headless contexts, especially where anti-bot or CAPTCHA controls are involved.

Want this set up for you?
Basic Setup is £249 (24–48h). Email alex@clawsetup.co.uk.