Skip to main content
Shared runtime steps for VM-based Docker installs such as GCP, Hetzner, and similar VPS providers.

Bake required binaries into the image

Installing binaries inside a running container is a trap: anything installed at runtime is lost on restart. Bake every external binary a skill needs into the image at build time. The examples below cover three binaries only, alphabetically:
  • gog (from gogcli) for Gmail access
  • goplaces for Google Places
  • wacli for WhatsApp
These are examples, not a complete list. Install as many binaries as your skills need using the same pattern. When you add a skill that needs a new binary later:
  1. Update the Dockerfile.
  2. Rebuild the image.
  3. Restart the containers.
Example Dockerfile
The URLs above are examples. For ARM-based VMs, choose the arm64 assets. For reproducible builds, pin versioned release URLs.

Build and launch

If the build fails with Killed or exit code 137 during pnpm install --frozen-lockfile, the VM is out of memory. Use a larger machine class before retrying. Verify binaries:
Expected output:
Verify the gateway is up:
/healthz returning a 200 response confirms the gateway process is listening and healthy; the built-in image HEALTHCHECK polls the same endpoint.

What persists where

OpenClaw runs in Docker, but Docker is not the source of truth. All long-lived state must survive restarts, rebuilds, and reboots.

Updates

To update OpenClaw on the VM: