2026-02-27 02:13:23 +08:00
|
|
|
services:
|
|
|
|
|
openchamber:
|
|
|
|
|
build:
|
|
|
|
|
context: .
|
|
|
|
|
dockerfile: Dockerfile
|
|
|
|
|
container_name: openchamber
|
|
|
|
|
ports:
|
|
|
|
|
- "3000:3000"
|
|
|
|
|
extra_hosts:
|
|
|
|
|
- "host.docker.internal:host-gateway"
|
|
|
|
|
volumes:
|
2026-02-27 15:34:51 +08:00
|
|
|
- ./data/openchamber:/home/openchamber/.config/openchamber
|
|
|
|
|
- ./data/opencode/share:/home/openchamber/.local/share/opencode
|
|
|
|
|
- ./data/opencode/state:/home/openchamber/.local/state/opencode
|
|
|
|
|
- ./data/opencode/config:/home/openchamber/.config/opencode
|
|
|
|
|
- ./data/ssh:/home/openchamber/.ssh
|
|
|
|
|
- ./workspaces:/home/openchamber/workspaces
|
2026-06-12 18:24:07 +03:00
|
|
|
environment:
|
|
|
|
|
# Docker binds OpenChamber to 0.0.0.0 for port mapping, so UI auth is required.
|
|
|
|
|
# Set this before starting, for example:
|
|
|
|
|
# OPENCHAMBER_UI_PASSWORD="$(openssl rand -base64 24)" docker compose up -d
|
|
|
|
|
OPENCHAMBER_UI_PASSWORD: ${OPENCHAMBER_UI_PASSWORD:?Set OPENCHAMBER_UI_PASSWORD before exposing OpenChamber through Docker}
|
|
|
|
|
# OPENCHAMBER_HOST: 0.0.0.0 # Bind address (default in Docker entrypoint: 0.0.0.0)
|
2026-03-15 00:12:11 +02:00
|
|
|
# OPENCHAMBER_TUNNEL_PROVIDER: cloudflare
|
|
|
|
|
# OPENCHAMBER_TUNNEL_MODE: quick # quick | managed-remote | managed-local
|
|
|
|
|
# OPENCHAMBER_TUNNEL_HOSTNAME: app.example.com # required for managed-remote
|
|
|
|
|
# OPENCHAMBER_TUNNEL_TOKEN: your_cloudflare_token # required for managed-remote
|
|
|
|
|
# OPENCHAMBER_TUNNEL_CONFIG: /home/openchamber/.cloudflared/config.yml # optional for managed-local
|
2026-02-27 15:34:51 +08:00
|
|
|
# OH_MY_OPENCODE: true # enable oh-my-opencode
|
|
|
|
|
# OPENCODE_HOST: http://172.17.0.1:4096 # Connect to external OpenCode server
|
|
|
|
|
# OPENCODE_SKIP_START: true # skip start opencode
|
2026-03-23 22:48:04 +09:00
|
|
|
# OPENCHAMBER_OPENCODE_HOSTNAME: 0.0.0.0 # Bind OpenCode to all interfaces
|
2026-02-27 02:13:23 +08:00
|
|
|
restart: unless-stopped
|