openclaw/docker-compose.yml
{Suksham-sharma} 8f068817ca fix(docker): add MOLTBOT_STATE_DIR to resolve permission error
When running in Docker, the app fell back to os.homedir() to resolve
the state directory, but the container's HOME=/home/node didn't match
the mounted volume permissions properly.

By explicitly setting MOLTBOT_STATE_DIR=/home/node/.clawdbot in the
container environment, the app now correctly uses the mounted volume
path, fixing the "EACCES: permission denied, mkdir '/home/node/.clawdbot/agents/main/agent'" error.

Fixes #3480
2026-01-28 23:41:03 +05:30

48 lines
1.4 KiB
YAML

services:
moltbot-gateway:
image: ${CLAWDBOT_IMAGE:-moltbot:local}
environment:
HOME: /home/node
MOLTBOT_STATE_DIR: /home/node/.clawdbot
TERM: xterm-256color
CLAWDBOT_GATEWAY_TOKEN: ${CLAWDBOT_GATEWAY_TOKEN}
CLAUDE_AI_SESSION_KEY: ${CLAUDE_AI_SESSION_KEY}
CLAUDE_WEB_SESSION_KEY: ${CLAUDE_WEB_SESSION_KEY}
CLAUDE_WEB_COOKIE: ${CLAUDE_WEB_COOKIE}
volumes:
- ${CLAWDBOT_CONFIG_DIR}:/home/node/.clawdbot
- ${CLAWDBOT_WORKSPACE_DIR}:/home/node/clawd
ports:
- "${CLAWDBOT_GATEWAY_PORT:-18789}:18789"
- "${CLAWDBOT_BRIDGE_PORT:-18790}:18790"
init: true
restart: unless-stopped
command:
[
"node",
"dist/index.js",
"gateway",
"--bind",
"${CLAWDBOT_GATEWAY_BIND:-lan}",
"--port",
"${CLAWDBOT_GATEWAY_PORT:-18789}"
]
moltbot-cli:
image: ${CLAWDBOT_IMAGE:-moltbot:local}
environment:
HOME: /home/node
MOLTBOT_STATE_DIR: /home/node/.clawdbot
TERM: xterm-256color
BROWSER: echo
CLAUDE_AI_SESSION_KEY: ${CLAUDE_AI_SESSION_KEY}
CLAUDE_WEB_SESSION_KEY: ${CLAUDE_WEB_SESSION_KEY}
CLAUDE_WEB_COOKIE: ${CLAUDE_WEB_COOKIE}
volumes:
- ${CLAWDBOT_CONFIG_DIR}:/home/node/.clawdbot
- ${CLAWDBOT_WORKSPACE_DIR}:/home/node/clawd
stdin_open: true
tty: true
init: true
entrypoint: ["node", "dist/index.js"]