用 docker compose 部署 OpenClaw + Ollama 的專案。
docker-compose.yaml.env.exampleconfig/render-config.mjs.gitignore
openclawollama
- 啟動前自動由
.env生成/home/node/.openclaw/openclaw.json - 可透過
OPENCLAW_CONFIG_STRATEGY控制 config 是每次重建還是只初始化一次 - 可從
.env預設啟用 Discord - 可從
.env設定 Discord guild / channel - 可從
.env設定gateway.controlUi.allowedOrigins
- 複製
.env.example成.env - 填入必要值,至少:
DISCORD_TOKEN
- 若要限制 Discord guild / channel,填入:
DISCORD_GUILD_IDDISCORD_CHANNEL_ID
- 啟動:
docker compose up -d
- 若要使用 Ollama cloud model,第一次需在 Ollama 容器內完成登入(登入狀態會保存在
${OLLAMA_DATA_PATH})
第一次啟動後,執行:
docker compose exec ollama ollama signin
docker compose restart openclaw若登入成功,OpenClaw 之後就能使用 .env 中設定的 OPENCLAW_DEFAULT_MODEL(例如 ollama/minimax-m2.5:cloud)。
OPENCLAW_IMAGEOPENCLAW_PORTOPENCLAW_GATEWAY_BINDOPENCLAW_CONFIG_PATHOPENCLAW_PROJECT_PATHOPENCLAW_CONFIG_STRATEGYOPENCLAW_DEFAULT_MODEL
OLLAMA_IMAGEOLLAMA_PORTOLLAMA_DATA_PATH
DISCORD_ENABLEDDISCORD_TOKENDISCORD_GROUP_POLICYDISCORD_DM_POLICYDISCORD_CONFIG_WRITESDISCORD_DEFAULT_TODISCORD_ALLOW_FROMDISCORD_GUILD_IDDISCORD_GUILD_SLUGDISCORD_CHANNEL_ID
CONTROL_UI_ENABLEDCONTROL_UI_BASE_PATHCONTROL_UI_ALLOWED_ORIGINS
OLLAMA_ENABLEDOLLAMA_BASE_URLOLLAMA_API_KEY
CONTROL_UI_ALLOWED_ORIGINS 用逗號分隔,例如:
CONTROL_UI_ALLOWED_ORIGINS=https://control.example.com,https://chat.example.com若你想讓主動發訊息預設發到某個 channel,可填:
DISCORD_DEFAULT_TO=channel:123456789012345678OPENCLAW_CONFIG_STRATEGY 支援兩種模式:
always(預設):每次容器啟動都用.env重建openclaw.jsononce:只有第一次生成;若openclaw.json已存在,後續啟動跳過 render
建議:
- 如果你把
.env當 source of truth,使用always - 如果你想先初始化再手動維護
openclaw.json,使用once - 使用
always時,請把openclaw.json視為 render artifact,而不是手動維護的主要設定檔
若你想讓 OpenClaw 預設使用 Ollama 雲端模型,例如 MiniMax:
OLLAMA_ENABLED=true
OLLAMA_BASE_URL=http://ollama:11434
OLLAMA_API_KEY=ollama-local
OPENCLAW_DEFAULT_MODEL=ollama/minimax-m2.5:cloud本專案會一起啟動 ollama 容器。若要使用 cloud model,第一次需在該容器內完成 Ollama 登入,登入狀態會保存在 ${OLLAMA_DATA_PATH}。
- 目前是單一 guild / 單一 channel 模板版
- 若
DISCORD_ENABLED=true但DISCORD_TOKEN沒填,容器啟動會直接失敗,避免帶著錯誤設定繼續跑 - 使用
OPENCLAW_CONFIG_STRATEGY=once時,修改.env不會自動更新既有openclaw.json - 若使用 Ollama cloud model,請確認
OLLAMA_BASE_URL指向的是可連線且已設定完成的 Ollama 服務