-
Notifications
You must be signed in to change notification settings - Fork 0
Docker Deployment
Chris & Mike edited this page Mar 7, 2026
·
5 revisions
Run DO Manager using Docker or Docker Compose.
Before running the container, you need to set up the metadata database on Cloudflare:
npx wrangler login
npx wrangler d1 create do-manager-metadatagit clone https://github.com/neverinfamous/do-manager.git
cd do-manager
npx wrangler d1 execute do-manager-metadata --remote --file=worker/schema.sql| Credential | Where to Find |
|---|---|
ACCOUNT_ID |
Dashboard URL: dash.cloudflare.com/{ACCOUNT_ID}/...
|
API_KEY |
API Tokens → Create Token → Workers Scripts Read + D1 Edit |
TEAM_DOMAIN |
Zero Trust → Settings → Custom Pages |
POLICY_AUD |
Zero Trust → Access → Applications → Your App → AUD tag |
docker pull writenotenow/do-manager:latestdocker run -d \
-p 8787:8787 \
-e ACCOUNT_ID=your_cloudflare_account_id \
-e API_KEY=your_cloudflare_api_token \
-e TEAM_DOMAIN=https://yourteam.cloudflareaccess.com \
-e POLICY_AUD=your_cloudflare_access_aud_tag \
--name do-manager \
--restart unless-stopped \
writenotenow/do-manager:latestCreate docker-compose.yml:
services:
do-manager:
image: writenotenow/do-manager:latest
container_name: do-manager
ports:
- "8787:8787"
environment:
- ACCOUNT_ID=${ACCOUNT_ID}
- API_KEY=${API_KEY}
- TEAM_DOMAIN=${TEAM_DOMAIN}
- POLICY_AUD=${POLICY_AUD}
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8787/health"]
interval: 30s
timeout: 10s
retries: 3Create .env file:
ACCOUNT_ID=your_cloudflare_account_id
API_KEY=your_cloudflare_api_token
TEAM_DOMAIN=https://yourteam.cloudflareaccess.com
POLICY_AUD=your_cloudflare_access_aud_tagRun:
docker compose up -d| Variable | Required | Description |
|---|---|---|
ACCOUNT_ID |
Yes | Cloudflare Account ID |
API_KEY |
Yes | API Token with Workers Scripts Read + D1 Edit permission |
TEAM_DOMAIN |
Yes | https://yourteam.cloudflareaccess.com |
POLICY_AUD |
Yes | Cloudflare Access Application AUD tag |
PORT |
No | Port (default: 8787) |
NODE_ENV |
No | Environment (default: production) |
| Tag | Description |
|---|---|
latest |
Latest stable release |
<version> |
Specific version (recommended for production) |
sha-XXXXXX |
Commit SHA for reproducible builds |
| Property | Value |
|---|---|
| Base Image | node:20-alpine |
| Size | ~150MB |
| Architectures |
linux/amd64, linux/arm64
|
| Port | 8787 |
| User | Non-root (app) |
| Health Endpoint | /health |
Run this after updating to add new tables (safe to run multiple times):
npx wrangler d1 execute do-manager-metadata --remote --file=worker/schema.sqlDocker:
docker pull writenotenow/do-manager:latest
docker stop do-manager && docker rm do-manager
# Re-run your docker run commandDocker Compose:
docker compose pull && docker compose up -dgit clone https://github.com/neverinfamous/do-manager.git
cd do-manager
docker build -t do-manager:local .
docker run -d -p 8787:8787 \
-e ACCOUNT_ID=your_account_id \
-e API_KEY=your_api_token \
-e TEAM_DOMAIN=https://yourteam.cloudflareaccess.com \
-e POLICY_AUD=your_aud_tag \
do-manager:localCheck logs:
docker logs do-managerCommon causes:
- Missing environment variables
- Port already in use
- Verify
TEAM_DOMAINincludeshttps:// - Confirm
POLICY_AUDmatches your Access application - Check API token has Workers Scripts Read permission
curl -X GET "https://api.cloudflare.com/client/v4/accounts/${ACCOUNT_ID}/workers/scripts" \
-H "Authorization: Bearer ${API_KEY}"- Admin Hooks — Enable storage management for your DOs
- Features — Learn about all available features
- Troubleshooting — More solutions