Apps / Docker Images
OpenClaw in Docker.
Your AI agent, your server.
OpenClaw is a self-hosted AI agent gateway: it runs an autonomous assistant you control from a web Control UI, connect to chat channels, and point at the LLM provider of your choice, with all state kept on your own instance.
docker pull ghcr.io/remarkablecloud/openclaw Current build
2026.9.4-r1
Updated Sep 11, 2026
Base
OpenClaw official, digest-pinned
What's inside
Hardened defaults, one data volume, proxy-fronted UI
Upstream license
OpenClaw: MIT
Free to pull and run anywhere. Digest-pinned, updated deliberately; each build is recorded in the changelog.
The image
What our image adds.
OpenClaw is a self-hosted AI agent gateway: it runs an autonomous assistant you control from a web Control UI, connect to chat channels, and point at the LLM provider of your choice, with all state kept on your own instance.
Digest-pinned base
Built from `ghcr.io/openclaw/openclaw@sha256:cc596b846506a5f4cfcee111394a2725f375f01cca2ebb492a161fd1b747f101` (OpenClaw 2026.9.4, Node 24, Debian 12). Pinning by digest keeps rebuilds reproducible.
Token-gated Control UI, never open
The gateway is started with token authentication, and our wrapper generates a strong token on first run, persists it in the data volume, and prints it once. Nothing is baked into an image layer, and the instance is never left unauthenticated on a public URL. Y
Reachable behind a proxy
The gateway binds a routable interface (not loopback) and starts in an unconfigured-friendly mode, so it comes up cleanly behind a reverse proxy on first boot, before you have added an LLM key.
Local state, no external database
All state lives in a single `/home/node/.openclaw` volume.
Healthcheck
A container `HEALTHCHECK` polls `/health` so the platform routes traffic only once the gateway is ready. The current published tag is `ghcr.io/remarkablecloud/openclaw:2026.9.4-r1`. OpenClaw is a trademark of its respective owner (OpenClaw Foundation). Remarka
Rather skip the compose file? Deploy OpenClaw with one click on your own VPS: TLS, domain and database already wired.
Deploy OpenClaw in one clickThe guide
Run it in production.
Architecture at a glance
- OpenClaw gateway serves the Control UI on port
18789. TLS is terminated upstream by a reverse proxy (Traefik on the RemarkableCloud App Platform). - No external database. State, memory, and credentials live in the
/home/node/.openclawvolume. - LLM provider. OpenClaw calls an external LLM (OpenAI, Anthropic, and many others); you supply your own API key in the Control UI (or via environment).
Docker Compose walkthrough
The standalone stack is defined in the image’s docker-compose.yml:
name: openclaw
services:
openclaw:
image: ${OPENCLAW_IMAGE:-ghcr.io/remarkablecloud/openclaw:2026.9.4-r1}
restart: unless-stopped
ports: ["${HTTP_PORT:-18789}:18789"]
environment:
OPENCLAW_GATEWAY_TOKEN: ${OPENCLAW_GATEWAY_TOKEN:-}
# OPENAI_API_KEY: ${OPENAI_API_KEY:-}
volumes:
- openclaw-data:/home/node/.openclaw
volumes:
openclaw-data:
Step by step:
- The token is generated if blank. Leave
OPENCLAW_GATEWAY_TOKENempty and the image creates a strong one on first run, logs it once, and keeps it in the volume. - Only the web port is exposed.
${HTTP_PORT:-18789}:18789is for local use; in production the proxy connects to port18789on the internal network. - State lives in a volume.
openclaw-data(/home/node/.openclaw) persists the token, config, and memory across restarts and upgrades.
To start it locally:
docker compose up -d
Then read the token from docker compose logs openclaw, open http://localhost:18789, paste the token into Settings, and add your LLM API key.
Environment variable reference
| Variable | Required | Value / default | Purpose |
|---|---|---|---|
OPENCLAW_GATEWAY_TOKEN | no | (generated) | Shared token for the Control UI. Leave empty to auto-generate on first run (printed once); set it to pin your own. |
OPENCLAW_GATEWAY_PORT | no | 18789 | Gateway / Control UI port. |
OPENAI_API_KEY (or other provider key) | no | (unset) | LLM provider key. Can be set here or in the Control UI after connecting. |
Hardening notes
- Token-gated by default. The Control UI is started with token auth and a generated token; it is never open.
- Treat the token as admin/shell access. OpenClaw is an autonomous agent that can execute tasks and browse the web from its own container. Anyone with the token controls the agent, so keep it private and rotate it if leaked.
- Digest-pinned base. Each build is auditable and reproducible.
- Healthcheck gates traffic.
/healthmust return success before the platform routes requests. - Isolated per instance. Each deployment is its own container with its own volume and token.
Backups
The single volume holds all state:
docker run --rm -v openclaw_openclaw-data:/data -v "$PWD":/backup alpine \
tar czf /backup/openclaw-data.tgz -C /data .
The /home/node/.openclaw volume contains the token, configuration, and agent memory. On the RemarkableCloud App Platform, volume backups follow the platform’s backup schedule.
Upgrades
- New builds ship as new
-rtags. Pull the new tag and recreate the container; state persists in the volume:docker compose pull openclaw && docker compose up -d openclaw - Read the changelog. Every build is listed in
CHANGELOG.mdwith the base image digest and any behavior changes.
Or skip the ops
Host OpenClaw on your own private VPS.
One click installs this exact image on a VPS that is yours alone, domain and TLS wizard included. The same server runs as many apps as fit, with no per-app charge.
FAQ
Questions we get.
Do I need a database?
No. OpenClaw keeps all state in the `/home/node/.openclaw` volume; there is no external database.
How do I log in the first time?
The gateway token is printed once to the container log on first run. Open the Control UI, paste the token into Settings, then add your LLM API key.
Do I need my own LLM key?
Yes. OpenClaw calls an external LLM provider (OpenAI, Anthropic, and many others); add your key in the Control UI or via environment.
Is it safe to expose publicly?
It is token-gated, so it is not open. But because the agent can execute tasks, treat the token as administrative access: keep it private, and rotate it if it leaks.
How does HTTPS work if the container serves HTTP on 18789?
TLS is terminated at the reverse proxy (Traefik on the App Platform), which forwards to port `18789` on the internal network.
Your server runs. You sleep.
Fully managed hosting from people who have been doing this since 2001.