English | 简体中文
Docker image packaging for siteboon/claudecodeui.
This repository installs @cloudcli-ai/cloudcli globally from npm and preinstalls all supported provider CLIs into the image at build time. It also preinstalls the cloudcli-plugin-terminal plugin during image build. At runtime it can optionally update CloudCLI and the provider CLIs, then starts CloudCLI through docker-entrypoint.sh. It publishes versioned tags plus latest.
Two registries are published:
ghcr.io/libzonda/claudecodeui-docker:latestghcr.io/libzonda/claudecodeui-docker:<upstream-release-tag>docker.io/libzonda/claudecodeui-docker:latestdocker.io/libzonda/claudecodeui-docker:<upstream-release-tag>
For most users, Docker Hub is the simplest pull target:
docker.io/libzonda/claudecodeui-docker:latest
Important runtime variables:
SERVER_PORT— backend/UI port, default3001HOST— bind address, default0.0.0.0DATABASE_PATH— auth database path inside container, default/root/.cloudcli/auth.dbHTTP_PROXY/HTTPS_PROXY/NO_PROXY— proxy settings passed through to provider CLIs at runtime
Runtime update variables:
AUTO_UPDATE_CLOUDCLI=true— update@cloudcli-ai/cloudclion container startup; defaultfalseAUTO_UPDATE_CLI=true— update provider CLIs on container startup; defaultfalseNPM_REGISTRY— npm mirror/registry URL used only during runtime updates for CloudCLI, Codex, and Gemini
Important persistent paths:
/root/.cloudcli— storesauth.db/root/.claude— Claude Code sessions, settings, credentials, MCP config/root/.codex— Codex auth and session data/root/.gemini— Gemini auth and config/root/.claude-code-ui— installed plugins, plugin state, and plugin config
Recommended mounts:
-v claudecodeui-cloudcli:/root/.cloudcli-v claudecodeui-claude:/root/.claude-v claudecodeui-codex:/root/.codex-v claudecodeui-gemini:/root/.gemini-v claudecodeui-plugins:/root/.claude-code-ui
If you want to access project files from the UI, mount your workspace too:
-v /path/to/your/project:/workspace/project
docker build -t claudecodeui:latest .Using Docker Hub:
docker run -d \
--name claudecodeui \
-p 3001:3001 \
-e HOST=0.0.0.0 \
-e SERVER_PORT=3001 \
-e DATABASE_PATH=/root/.cloudcli/auth.db \
-v claudecodeui-cloudcli:/root/.cloudcli \
-v claudecodeui-claude:/root/.claude \
-v claudecodeui-codex:/root/.codex \
-v claudecodeui-gemini:/root/.gemini \
-v claudecodeui-plugins:/root/.claude-code-ui \
-v /path/to/your/project:/workspace/project \
docker.io/libzonda/claudecodeui-docker:latestUsing GHCR:
docker run -d \
--name claudecodeui \
-p 3001:3001 \
-e HOST=0.0.0.0 \
-e SERVER_PORT=3001 \
-e DATABASE_PATH=/root/.cloudcli/auth.db \
-v claudecodeui-cloudcli:/root/.cloudcli \
-v claudecodeui-claude:/root/.claude \
-v claudecodeui-codex:/root/.codex \
-v claudecodeui-gemini:/root/.gemini \
-v claudecodeui-plugins:/root/.claude-code-ui \
-v /path/to/your/project:/workspace/project \
ghcr.io/libzonda/claudecodeui-docker:latestThen open http://localhost:3001.
services:
claudecodeui:
image: docker.io/libzonda/claudecodeui-docker:latest
container_name: claudecodeui
ports:
- "3001:3001"
environment:
HOST: 0.0.0.0
SERVER_PORT: 3001
DATABASE_PATH: /root/.cloudcli/auth.db
volumes:
- claudecodeui-cloudcli:/root/.cloudcli
- claudecodeui-claude:/root/.claude
- claudecodeui-codex:/root/.codex
- claudecodeui-gemini:/root/.gemini
- claudecodeui-plugins:/root/.claude-code-ui
- /path/to/your/project:/workspace/project
restart: unless-stopped
volumes:
claudecodeui-cloudcli:
claudecodeui-claude:
claudecodeui-codex:
claudecodeui-gemini:
claudecodeui-plugins:Start it with:
docker compose up -dThe workflow:
- checks upstream latest release every 2 hours
- builds from the upstream release source tarball
- skips the image build only if the release tag already exists in both GHCR and Docker Hub
- publishes both
<release-tag>andlatestto GHCR and Docker Hub when a new release appears - syncs this repository
README.mdto Docker Hub
To publish to Docker Hub and update the Docker Hub description, configure:
DOCKERHUB_USERNAMEDOCKERHUB_TOKEN
DOCKERHUB_TOKEN should be a Docker Hub access token, not your account password.