- docker/.env.example
- docker/docker-compose.yaml
- helm/octo/values.yaml
- helm/octo/values-china.yaml
OCTO 环境变量配置参考 v1.0
本文档覆盖 Docker Compose 部署(`docker/.env`)的全部环境变量,并提供与 Helm values 的对照。所有变量均标注来源和安全等级。
🔴 = 敏感变量(密码/Token/密钥),必须修改默认值。
1. 变量分类总览
| 分类 |
变量数量 |
说明 |
| 域名与主机 |
2 |
OCTO_DOMAIN, OCTO_EXTERNAL_IP |
| 端口映射 |
19 |
各服务宿主机端口 |
| 绑定地址 |
16 |
各服务绑定 127.0.0.1 还是 0.0.0.0 |
| 网络 |
1 |
Docker 子网 |
| 时区 |
1 |
TZ |
| MySQL |
2 |
root 密码、数据库名 |
| MinIO |
4+2 |
root/app 凭据 + 可选 URL 覆盖 |
| WuKongIM |
5 |
模式、对外地址、Token |
| OCTO Server |
3+ |
主密钥、Webhook 密钥、外部 URL 等 |
| 服务间认证 |
2 |
NOTIFY_INTERNAL_TOKEN, WUKONGIM_MANAGER_TOKEN |
| 侧服务数据库密码 |
6 |
matter/summary/summary_reader/marketplace/speech/docs |
| Summary API |
1 |
内部服务 URL |
| LLM |
3 |
URL/Key/Model |
| Admin |
1 |
初始管理员密码 |
| 功能开关 |
2 |
DM_THREAD_ON, OCTO_SEARCH_BACKEND |
| Compose Profiles |
1 |
COMPOSE_PROFILES |
| Speech 模块 |
~15 |
语音转写引擎配置 |
| Docs 模块 |
8 |
协作文档后端配置 |
| Search 模块 |
~25 |
消息搜索管道配置 |
| 镜像覆盖 |
~15 |
各服务镜像 tag 覆盖 |
| Compose 内部固定变量 |
~40+ |
服务级 environment 段中硬编码/组合的变量 |
2. 必填变量(必须修改,否则栈无法启动)
2.1 🔴 MYSQL_ROOT_PASSWORD
| 属性 |
值 |
| 默认值 |
CHANGE_ME_MYSQL_PASSWORD |
| 必填 |
✅ |
| 字符集限制 |
仅允许 [A-Za-z0-9._-](Go MySQL DSN URL 安全字符集) |
| 生成命令 |
openssl rand -hex 16 |
| 校验方 |
init-extra-dbs.sh(首次 MySQL 卷初始化时校验);MinIO 7 字符默认不涉及此项 |
| 来源 |
.env.example L130;docker-compose.yaml mysql 服务 |
| 注意事项 |
严禁使用 @ # ! $ & : / 等特殊字符,会导致 Go MySQL DSN 静默解析失败。openssl rand -hex 16 输出始终安全。 |
2.2 🔴 MINIO_ROOT_PASSWORD
| 属性 |
值 |
| 默认值 |
CHG_ME!(7 字符,故意短于 MinIO 要求的 ≥8 字符) |
| 必填 |
✅ |
| 字符集限制 |
≥8 字符 |
| 生成命令 |
openssl rand -hex 16 |
| 校验方 |
MinIO 自身 ≥8 字符校验;minio-init 占位符校验(拒绝 CHANGE_ME_*/CHG_ME*) |
| 来源 |
.env.example L143;docker-compose.yaml minio+minio-init 服务 |
| 注意事项 |
7 字符默认值是故意设计的防御机制:未修改时 MinIO 自身启动失败。 |
2.3 🔴 OCTO_MINIO_APP_PASSWORD
| 属性 |
值 |
| 默认值 |
CHANGE_ME_MINIO_APP_PASSWORD |
| 必填 |
✅ |
| 生成命令 |
openssl rand -hex 24 |
| 校验方 |
minio-init 服务(拒绝空值和占位符) |
| 来源 |
.env.example L160;docker-compose.yaml minio-init/octo-server 服务 |
| 注意事项 |
octo-server 使用此应用级 IAM 用户签名预签名 URL,不是 root 凭据。泄露不影响 mc admin 控制。可随时通过修改 .env 后 docker compose up -d 轮换。 |
2.4 🔴 OCTO_MASTER_KEY
| 属性 |
值 |
| 默认值 |
CHANGE_ME_32_BYTES_octo_master_(31 字符,故意差 1 字节) |
| 必填 |
✅ |
| 长度要求 |
必须恰好 32 字节 |
| 生成命令 |
openssl rand -hex 16 |
| 校验方 |
octo-server 启动时校验长度 |
| 来源 |
.env.example L187;docker-compose.yaml octo-server 服务(OCTO_MASTER_KEY + DMWORK_MASTER_KEY) |
| 注意事项 |
31 字符默认值故意让 octo-server 拒绝启动,而非以已知弱密钥运行。 |
2.5 🔴 OCTO_NOTIFY_INTERNAL_TOKEN
| 属性 |
值 |
| 默认值 |
CHANGE_ME_notify_internal_token |
| 必填 |
✅ |
| 生成命令 |
openssl rand -hex 32 |
| 校验方 |
preflight 服务(拒绝空值和 CHANGE_ME_*/CHG_ME*);compose 渲染时无默认值(无 :- 回退) |
| 来源 |
.env.example L194;docker-compose.yaml preflight/octo-server/matter/summary-api/summary-worker 服务 |
| 注意事项 |
octo-server ↔ matter ↔ summary-api/worker 之间 /internal/* 回调的 HMAC 密钥。无 :- 默认值,缺失时 compose 会发出警告。 |
2.6 🔴 OCTO_WUKONGIM_MANAGER_TOKEN
| 属性 |
值 |
| 默认值 |
CHANGE_ME_wukongim_manager_token |
| 必填 |
✅ |
| 生成命令 |
openssl rand -hex 32 |
| 校验方 |
preflight 服务;WuKongIM tokenAuthOn: true |
| 来源 |
.env.example L207;docker-compose.yaml wukongim(WK_MANAGERTOKEN)+ octo-server(TS_WUKONGIM_MANAGERTOKEN/WUKONGIM_MANAGER_TOKEN) |
| 注意事项 |
同时设置在 WuKongIM(WK_MANAGERTOKEN)和 octo-server 两端,从同一 .env 值读取确保不漂移。留空会导致两端短路令牌比较,管理端点无需凭据即可访问。 |
2.7 🔴 LLM_API_KEY(使用 matter/summary 时必填)
| 属性 |
值 |
| 默认值 |
(空) |
| 必填 |
功能相关(启用 matter/summary 时必填) |
| 校验方 |
summary-worker 在启动时调用 config.ValidateRequired,空值时回退到占位符 changeme-set-real-llm-api-key-to-enable-summary 以保持容器 healthy |
| 来源 |
.env.example L246;docker-compose.yaml matter/summary-api/summary-worker 服务 |
| 注意事项 |
空栈冒烟测试时可不设,服务能启动但所有 LLM 调用都会失败。使用 matter(任务/AI 助手)或 smart-summary 功能前必须设置真实值。 |
3. 域名与网络配置
3.1 OCTO_DOMAIN
| 属性 |
值 |
| 默认值 |
localhost |
| 必填 |
有默认值 |
| 来源 |
.env.example L105;docker-compose.yaml minio/nginx/octo-server/marketplace |
| 注意事项 |
语义规则:①为真实域名时,客户端通过 DNS 访问;②为 localhost/空 且 OCTO_EXTERNAL_IP 为非回环 IP 时,setup.sh 会将 IP 写入三个 URL 覆盖;③为 localhost 且 IP 为回环地址(默认),所有 URL 保持 localhost。历史默认值曾是 octo.local(需 /etc/hosts),已改为 localhost。 |
3.2 OCTO_EXTERNAL_IP
| 属性 |
值 |
| 默认值 |
127.0.0.1 |
| 必填 |
有默认值 |
| 来源 |
.env.example L106;docker-compose.yaml wukongim(WK_EXTERNAL_IP)+ octo-server(TS_EXTERNAL_IP) |
| 注意事项 |
无 DNS 域名的公网部署(如 GCP 裸 IP)需设为实际公网 IP。setup.sh 会据此判断是否物化 URL 覆盖。 |
3.3 OCTO_NETWORK_SUBNET
| 属性 |
值 |
| 默认值 |
172.28.0.0/24 |
| 必填 |
有默认值 |
| 来源 |
.env.example L124;docker-compose.yaml networks.octo-net.ipam |
| 注意事项 |
/24 足够完整栈(约 12 容器)。如与企业 VPN/VPC 网段冲突可调整,需在首次 up 前设置。 |
3.4 TZ
| 属性 |
值 |
| 默认值 |
UTC |
| 必填 |
有默认值 |
| 来源 |
.env.example L127;docker-compose.yaml mysql/octo-server/marketplace/octo-speech 等 |
| 注意事项 |
国内部署建议设为 Asia/Shanghai。 |
4. 端口与绑定配置
4.1 端口映射(宿主机侧)
| 变量名 |
默认值 |
容器端口 |
绑定变量 |
默认绑定 |
来源 |
| OCTO_HTTP_PORT |
28080 |
80 (nginx) |
OCTO_NGINX_BIND |
0.0.0.0 |
.env.example L109 |
| OCTO_HTTPS_PORT |
28443 |
443 (nginx) |
— |
— |
.env.example L116 |
| OCTO_SERVER_PORT |
28081 |
8090 (octo-server) |
OCTO_SERVER_BIND |
127.0.0.1 |
.env.example L117 |
| OCTO_ADMIN_PORT |
28082 |
80 (admin) |
OCTO_ADMIN_BIND |
127.0.0.1 |
.env.example L118 |
| OCTO_WEB_PORT |
28083 |
80 (web) |
OCTO_WEB_BIND |
127.0.0.1 |
.env.example L119 |
| OCTO_MATTER_PORT |
28086 |
8080 (matter) |
OCTO_MATTER_BIND |
127.0.0.1 |
.env.example L120 |
| OCTO_SUMMARY_API_PORT |
28087 |
8080 (summary-api) |
OCTO_SUMMARY_API_BIND |
127.0.0.1 |
.env.example L121 |
| OCTO_WK_API_PORT |
25001 |
5001 (wukongim API) |
OCTO_WK_API_BIND |
127.0.0.1 |
.env.example L122 |
| OCTO_WK_TCP_PORT |
25100 |
5100 (wukongim TCP) |
OCTO_WK_TCP_BIND |
127.0.0.1 |
.env.example L123 |
| OCTO_WK_WS_PORT |
25200 |
5200 (wukongim WS) |
OCTO_WK_WS_BIND |
127.0.0.1 |
.env.example L124 |
| OCTO_WK_MONITOR_PORT |
25300 |
5300 (wukongim monitor) |
OCTO_WK_MONITOR_BIND |
127.0.0.1 |
.env.example L125 |
| OCTO_MYSQL_PORT |
23306 |
3306 (mysql) |
OCTO_MYSQL_BIND |
127.0.0.1 |
.env.example L126 |
| OCTO_REDIS_PORT |
26379 |
6379 (redis) |
OCTO_REDIS_BIND |
127.0.0.1 |
.env.example L127 |
| OCTO_MINIO_API_PORT |
29000 |
9000 (minio API) |
OCTO_MINIO_API_BIND |
127.0.0.1 |
.env.example L128 |
| OCTO_MINIO_CONSOLE_PORT |
29001 |
9001 (minio console) |
OCTO_MINIO_CONSOLE_BIND |
127.0.0.1 |
.env.example L129 |
| OCTO_SPEECH_ADMIN_PORT |
28088 |
8781 (speech-admin) |
OCTO_SPEECH_ADMIN_BIND |
127.0.0.1 |
.env.example Speech 段 |
| OCTO_SEARCH_OPENSEARCH_PORT |
29200 |
9200 (opensearch) |
OCTO_SEARCH_OPENSEARCH_BIND |
127.0.0.1 |
.env.example Search 段 |
| OCTO_SEARCH_KAFKA_PORT |
29092 |
29092 (kafka external) |
OCTO_SEARCH_KAFKA_BIND |
127.0.0.1 |
.env.example Search 段 |
- OCTO_NGINX_BIND 默认
0.0.0.0,是唯一默认暴露在公网的端口。前端反向代理(nginx/Cloudflare/Caddy/云 LB)场景下必须改为 127.0.0.1,因为 Docker 通过 iptables DOCKER chain 发布端口,会绕过 ufw 规则。
- MySQL/Redis/MinIO/WuKongIM monitor 默认全部绑定
127.0.0.1,防止配置失误时公网暴露。
- octo-server/matter/summary-api 的直接端口绕过 nginx 限流,默认 loopback 仅用于运维冒烟测试。
- WuKongIM API(25001)是内部调试端口,不通过 nginx 暴露,需
docker exec 或 SSH 隧道访问。
- 浏览器/APP 流量通过 nginx 单一入口(28080):
/→web、/admin/→admin、/ws→wukongim WS、/api/+/v1/→octo-server、/matter/→matter、/summary/→summary-api。
4.2 外部 URL 覆盖变量(可选)
| 变量名 |
默认值(compose 内) |
说明 |
来源 |
| MINIO_SERVER_URL |
http://${OCTO_DOMAIN}:${OCTO_HTTP_PORT} |
MinIO 对外 S3 端点 |
docker-compose.yaml minio |
| TS_MINIO_DOWNLOADURL |
同 MINIO_SERVER_URL |
octo-server 返回给客户端的预签名下载 URL |
docker-compose.yaml octo-server |
| TS_EXTERNAL_BASEURL |
同 MINIO_SERVER_URL |
octo-server 对外基准 URL(登录重定向、OIDC 回调等) |
docker-compose.yaml octo-server |
| MINIO_BROWSER_REDIRECT_URL |
(空) |
MinIO Console 登录后重定向 URL |
docker-compose.yaml minio |
MINIO_SERVER_URL=https://octo.example.com:28443
TS_MINIO_DOWNLOADURL=https://octo.example.com:28443
TS_EXTERNAL_BASEURL=https://octo.example.com:28443
5. 数据库密码
5.1 核心数据库
| 变量名 🔴 |
默认值 |
MySQL 用户 |
数据库 |
权限 |
校验方 |
来源 |
| MYSQL_ROOT_PASSWORD |
CHANGE_ME_MYSQL_PASSWORD |
root |
全部 |
ALL |
init-extra-dbs.sh |
.env.example L130 |
| MYSQL_DATABASE |
octo |
— |
octo |
— |
— |
.env.example L131 |
5.2 侧服务数据库密码
| 变量名 🔴 |
默认值 |
MySQL 用户 |
数据库 |
权限 |
校验方 |
来源 |
| OCTO_MATTER_DB_PASSWORD |
matter |
matter |
octo_matter |
ALL |
init-extra-dbs.sh(拒绝字面默认 matter) |
.env.example L228 |
| OCTO_SUMMARY_DB_PASSWORD |
summary |
summary |
octo_summary |
ALL |
init-extra-dbs.sh(拒绝字面默认 summary) |
.env.example L229 |
| OCTO_SUMMARY_READER_PASSWORD |
summary_reader |
summary_reader |
octo |
SELECT(只读 IM schema) |
init-extra-dbs.sh(拒绝字面默认 summary_reader) |
.env.example L230 |
| OCTO_MARKETPLACE_DB_PASSWORD |
CHANGE_ME_marketplace_db_pass |
marketplace |
octo_marketplace |
ALL |
market-preflight(每次启动校验) |
.env.example L231 |
docker compose exec mysql mysql -uroot -p"$MYSQL_ROOT_PASSWORD" -e "
ALTER USER 'matter'@'%' IDENTIFIED BY '';
ALTER USER 'summary'@'%' IDENTIFIED BY '';
ALTER USER 'summary_reader'@'%' IDENTIFIED BY '';
FLUSH PRIVILEGES;"
6. 服务间认证 Token
| 变量名 🔴 |
默认值 |
生成命令 |
使用方 |
来源 |
| OCTO_NOTIFY_INTERNAL_TOKEN |
CHANGE_ME_notify_internal_token |
openssl rand -hex 32 |
octo-server / matter / summary-api / summary-worker 间 /internal/* 回调 HMAC |
.env.example L194 |
| OCTO_WUKONGIM_MANAGER_TOKEN |
CHANGE_ME_wukongim_manager_token |
openssl rand -hex 32 |
wukongim(WK_MANAGERTOKEN)+ octo-server(TS_WUKONGIM_MANAGERTOKEN) |
.env.example L207 |
| OCTO_WEBHOOK_SECRET_KEY |
(空) |
openssl rand -hex 32(可选) |
入站 Webhook HMAC-SHA256 密钥 |
.env.example L190 |
7. LLM 配置
| 变量名 |
默认值 |
必填 |
说明 |
来源 |
| LLM_API_URL |
https://api.example.com/v1 |
有默认值 |
LLM API 端点地址 |
.env.example L245 |
| LLM_API_KEY 🔴 |
(空) |
功能必填 |
API 密钥;空栈冒烟测试可为空 |
.env.example L246 |
| LLM_MODEL |
claude-sonnet-4-6 |
有默认值 |
模型名称 |
.env.example L247 |
8. Admin 初始密码
| 变量名 🔴 |
默认值 |
说明 |
来源 |
| OCTO_ADMIN_PWD |
(空/注释) |
首次启动时自动创建 superAdmin 账号(用户名 superAdmin,密码 bcrypt())。留空则跳过自动引导,需通过 API 手动创建。一旦栈启动,MySQL 卷中保留原始哈希,后续修改此值不会轮换密码。 切勿使用 changeme/admin/password 等弱密码。setup.sh 自动生成随机值。 |
.env.example L251-258 |
9. 功能开关
| 变量名 |
默认值 |
说明 |
来源 |
| DM_THREAD_ON |
true |
子区(Thread)功能开关。设为 false 隐藏 Thread 入口。 |
.env.example L265 |
| OCTO_SEARCH_BACKEND |
disabled |
消息搜索后端:disabled(关闭)/ es(OpenSearch)/ zinc(旧版 Zinc)。不设此值会让 octo-server 假设 ES 开启,在无搜索部署时产生错误日志。 |
.env.example Search 段 |
| OCTO_SEARCH_PRODUCER_ON |
false |
octo-server 内置实时 producer(searchetl→Kafka)开关。搜索升级流程最终步骤才设为 true。必须与 OCTO_SEARCH_STANDALONE_PRODUCER_ON 互斥,search-producer-guard 双向阻止双写。 |
.env.example Search 段 |
| OCTO_SEARCH_STANDALONE_PRODUCER_ON |
false |
独立 search-producer 开关(search-producer profile)。K8s 路径使用,Docker 路径推荐使用内置 producer。 |
.env.example Search 段 |
10. Compose Profiles
COMPOSE_PROFILES
| 属性 |
值 |
| 默认值 |
(空,仅启动核心栈) |
| 可选值 |
summary, speech, docs, search, search-producer, search-tools |
| 组合方式 |
逗号分隔,如 summary,speech,docs,search |
| 来源 |
.env.example L267-277 |
- summary:summary-api + summary-worker
- speech:octo-speech + octo-speech-admin
- docs:docs-preflight + octo-docs-backend
- search:search-kafka + search-kafka-init + search-opensearch + es-indexer
- search-producer:search-producer(独立实时 producer)
- search-tools:search-cursor-seed + search-backfill(一次性升级工具)
⚠️ search-producer-guard 是无 profile 的共享服务,始终实例化,用于双向阻止内置 producer 和独立 producer 同时开启。
11. Speech 模块变量(COMPOSE_PROFILES 含 "speech" 时使用)
| 变量名 🔴 |
默认值 |
必填 |
说明 |
来源 |
| VOICE_ENGINE |
qwen |
有默认值 |
语音转写引擎:qwen(推荐中文)/gpt/gemini |
.env.example |
| VOICE_QWEN_URL |
(空) |
qwen 引擎必填 |
通义千问兼容端点 |
.env.example |
| VOICE_QWEN_KEY 🔴 |
(空) |
qwen 引擎必填 |
通义千问 API Key |
.env.example |
| VOICE_QWEN_MODELS |
qwen3.5-omni-plus |
有默认值 |
千问模型名 |
.env.example |
| VOICE_LITELLM_URL |
(空) |
非qwen引擎必填 |
LiteLLM 代理端点 |
.env.example |
| VOICE_LITELLM_KEY 🔴 |
(空) |
非qwen引擎必填 |
LiteLLM Key |
.env.example |
| VOICE_GPT_MODELS |
(空) |
gpt 引擎必填 |
Whisper 模型名 |
.env.example |
| VOICE_MODELS |
(空) |
gemini 引擎必填 |
Gemini 模型名 |
.env.example |
| SPEECH_ADMIN_USERNAME |
admin |
有默认值 |
speech-admin 控制台用户名 |
.env.example |
| SPEECH_ADMIN_PASSWORD 🔴 |
(空) |
必填 |
speech-admin 密码。openssl rand -hex 16 生成。不设会导致控制台无认证启动。 |
.env.example |
| SPEECH_ADMIN_JWT_SECRET 🔴 |
(空) |
必填 |
speech-admin JWT 密钥。openssl rand -hex 32 生成。 |
.env.example |
| SPEECH_DB_PASSWORD 🔴 |
(空) |
必填 |
speech MySQL 用户密码,[A-Za-z0-9._-]。openssl rand -hex 16。缺失导致启动失败。 |
.env.example |
| SPEECH_SERVICE_URL |
http://octo-speech:8780 |
有默认值 |
octo-server 调用 octo-speech 的地址 |
.env.example |
| SPEECH_API_KEY 🔴 |
(空) |
必填(功能) |
在 speech-admin 控制台创建后填入,重启 octo-server |
.env.example |
| OCTO_SPEECH_ADMIN_BIND |
127.0.0.1 |
有默认值 |
speech-admin 绑定地址 |
.env.example |
| OCTO_SPEECH_ADMIN_PORT |
28088 |
有默认值 |
speech-admin 宿主机端口 |
.env.example |
| SPEECH_ADMIN_SECURE_COOKIE |
false |
有默认值 |
HTTPS 前置时设为 true |
.env.example |
SPEECH_SERVICE_PORT=8780、VOICE_LITELLM_TIMEOUT=60、VOICE_TOTAL_TIMEOUT=90
VOICE_MAX_DURATION=60、VOICE_MAX_FILE_SIZE=3145728(3MB)
⚠️ 添加 "speech" profile 前必须先运行 `docker/scripts/speech-setup.sh`,不要手动添加 profile 而不设置所有凭据。
12. Docs 模块变量(COMPOSE_PROFILES 含 "docs" 时使用)
| 变量名 🔴 |
默认值 |
必填 |
说明 |
来源 |
| OCTO_DOCS_DB_PASSWORD 🔴 |
(空) |
必填 |
docs MySQL 用户密码,[A-Za-z0-9._-]。openssl rand -hex 16 |
.env.example |
| OCTO_DOCS_COLLAB_SECRET 🔴 |
(空) |
必填 |
Hocuspocus 协作文档短期 JWT 签名密钥,≥32 字符。openssl rand -hex 32 |
.env.example |
| OCTO_DOCS_ATTACHMENT_SECRET 🔴 |
(空) |
必填 |
附件预签名 URL HMAC 密钥,≥32 字符。openssl rand -hex 32 |
.env.example |
| OCTO_DOCS_COLLAB_WS_URL |
(空) |
必填 |
浏览器可达的 Hocuspocus WebSocket URL。nginx 代理 /docs-ws/ → :1234。例:ws://10.201.0.101:28080/docs-ws/ |
.env.example |
| OCTO_DOCS_WEB_ORIGIN |
(空) |
必填 |
octo-web 的公开 origin,用于生成可分享文档链接。例:http://10.201.0.101:28080 |
.env.example |
| OCTO_DOCS_S3_ENDPOINT |
(空) |
必填 |
MinIO 公开 S3 端点(浏览器可达,用于附件预签名 PUT/GET)。例:http://10.201.0.101:28080 |
.env.example |
| OCTO_DOCS_CORS_ORIGINS |
(空) |
必填 |
docs REST API 的 CORS 允许源(逗号分隔精确源,或 *)。必须包含 octo-web 的 origin。 |
.env.example |
| OCTO_DOCS_NOTIFY_TOKEN 🔴 |
(空) |
可选 |
octo-server → octo-docs-backend 通知调用共享密钥。openssl rand -hex 32 |
.env.example |
NODE_ENV=production、HTTP_PORT=3000、HOCUSPOCUS_PORT=1234、TRUST_PROXY=1
MYSQL_HOST=mysql、MYSQL_PORT=3306、MYSQL_USER=docs、MYSQL_DATABASE=octo_docs
REDIS_HOST=redis、REDIS_PORT=6379、REDIS_PREFIX=octo-docs
OCTO_IDENTITY_MODE=http、OCTO_SERVER_BASE_URL=http://octo-server:8090
ATTACHMENT_DRIVER=s3、ATTACHMENT_BUCKET=octo-docs-attachments
ATTACHMENT_S3_FORCE_PATH_STYLE=true
- MinIO 凭据复用
OCTO_MINIO_APP_USER/OCTO_MINIO_APP_PASSWORD
13. Search 模块变量(COMPOSE_PROFILES 含 "search" 时使用)
13.1 端口与绑定
| 变量名 |
默认值 |
说明 |
来源 |
| OCTO_SEARCH_OPENSEARCH_PORT |
29200 |
OpenSearch 宿主机端口 |
.env.example |
| OCTO_SEARCH_OPENSEARCH_BIND |
127.0.0.1 |
OpenSearch 绑定地址 |
.env.example |
| OCTO_SEARCH_KAFKA_PORT |
29092 |
Kafka 外部监听宿主机端口 |
.env.example |
| OCTO_SEARCH_KAFKA_BIND |
127.0.0.1 |
Kafka 绑定地址 |
.env.example |
13.2 Kafka/OpenSearch 配置
| 变量名 |
默认值 |
说明 |
来源 |
| OCTO_SEARCH_KAFKA_ADVERTISED_HOST |
localhost |
Kafka EXTERNAL listener 通告主机(本地验证用) |
.env.example |
| OCTO_SEARCH_OPENSEARCH_JAVA_OPTS |
-Xms512m -Xmx512m |
OpenSearch JVM 堆内存 |
.env.example |
| OCTO_SEARCH_OPENSEARCH_DISABLE_SECURITY |
true |
禁用 OpenSearch security 插件(本地栈);生产设 false 并配置 ES_USERNAME/ES_PASSWORD |
.env.example |
| OCTO_SEARCH_KAFKA_CLUSTER_ID |
3kNqlPkyT16sjDguh9qqKA |
KRaft 集群 UUID(首次安装后不可变) |
docker-compose.yaml search-kafka |
13.3 octo-server 搜索接线
| 变量名 🔴 |
默认值 |
说明 |
来源 |
| OCTO_SEARCH_BACKEND |
disabled |
搜索后端开关(见 §9) |
.env.example |
| OCTO_SEARCH_OS_ADDRS |
http://search-opensearch:9200 |
OpenSearch 地址(仅 OCTO_SEARCH_BACKEND=es 时生效) |
.env.example |
| OCTO_SEARCH_OS_READ_ALIAS |
wukongim-messages-read |
OpenSearch 读别名 |
.env.example |
| OCTO_SEARCH_CURSOR_HMAC 🔴 |
(空 → 公开常量) |
搜索分页游标 HMAC 密钥。生产必须设置:openssl rand -hex 32 |
.env.example |
| OCTO_SEARCH_PRODUCER_ON |
false |
内置 producer 开关(见 §9) |
.env.example |
| OCTO_SEARCH_KAFKA_BROKERS |
search-kafka:9092 |
Kafka broker 列表 |
.env.example |
13.4 Kafka Topic/Index(通常不需修改)
| 变量名 |
默认值 |
说明 |
来源 |
| OCTO_SEARCH_KAFKA_TOPIC |
octo.message.v1 |
消息 Topic |
.env.example |
| OCTO_SEARCH_KAFKA_DLQ_TOPIC |
octo.message.v1.dlq |
死信 Topic |
.env.example |
| OCTO_SEARCH_ES_INDEX |
octo-message |
OpenSearch 索引名 |
.env.example |
| OCTO_SEARCH_INDEXER_GROUP_ID |
octo-search-indexer |
es-indexer Kafka consumer group |
docker-compose.yaml es-indexer |
| OCTO_SEARCH_INDEXER_BATCH_SIZE |
500 |
索引批量大小 |
docker-compose.yaml es-indexer |
| OCTO_SEARCH_ES_USERNAME / OCTO_SEARCH_ES_PASSWORD |
(空) |
OpenSearch 认证(DISABLE_SECURITY=true 时不使用) |
docker-compose.yaml es-indexer |
13.5 独立 Producer(search-producer profile)
| 变量名 |
默认值 |
说明 |
来源 |
| OCTO_SEARCH_STANDALONE_PRODUCER_ON |
false |
独立 producer 主开关(K8s 路径使用) |
.env.example |
| OCTO_SEARCH_STANDALONE_PRODUCER_LAG_SECONDS |
600 |
稳定性延迟窗口(秒),必须 >0 |
.env.example |
13.6 回填工具(search-tools profile,一次性)
| 变量名 |
默认值 |
说明 |
来源 |
| OCTO_SEARCH_SHARD_TABLES |
message,message1,message2,message3,message4 |
消息分片表 |
.env.example |
| OCTO_SEARCH_BACKFILL_RATE |
5000 |
回填速率(docs/s) |
.env.example |
| OCTO_SEARCH_BACKFILL_BATCH |
1000 |
回填批量大小 |
.env.example |
| OCTO_SEARCH_BACKFILL_FROM / OCTO_SEARCH_BACKFILL_TO |
0/0 |
回填时间窗口(epoch 秒),0/0 = 全量 |
.env.example |
13.7 compose 内部 Kafka 固定配置
KAFKA_NODE_ID=1、KAFKA_PROCESS_ROLES=broker,controller
- Listeners: PLAINTEXT (9092, 内部), CONTROLLER (9093), EXTERNAL (29092, 宿主机)
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1、KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR=1
KAFKA_AUTO_CREATE_TOPICS_ENABLE=false(topic 由 search-kafka-init 预创建)
KAFKA_LOG_DIRS=/var/lib/kafka/data
14. WuKongIM 配置
| 变量名 |
默认值 |
说明 |
来源 |
| WK_MODE |
release |
运行模式:debug/release/bench |
.env.example L174 |
| OCTO_WK_WS_ADDR |
(注释/未设置) |
WuKongIM 对外 WS 地址。不设时 compose 组合为 ws://${OCTO_DOMAIN}:${OCTO_HTTP_PORT}/ws。HTTPS 时设为 wss://octo.example.com/ws |
.env.example L181 |
| OCTO_WK_WSS_ADDR |
(注释/未设置) |
WSS 地址 |
.env.example L182 |
| OCTO_WK_TCP_ADDR |
(注释/未设置) |
TCP 直连地址(原生客户端使用) |
.env.example L183 |
WK_EXTERNAL_IP: ${OCTO_EXTERNAL_IP:-127.0.0.1}
WK_EXTERNAL_WSADDR: ${OCTO_WK_WS_ADDR:-ws://${OCTO_DOMAIN}:${OCTO_HTTP_PORT}/ws}(compose 内组合)
WK_EXTERNAL_WSSADDR: ${OCTO_WK_WSS_ADDR:-}
WK_EXTERNAL_TCPADDR: ${OCTO_WK_TCP_ADDR:-}
WK_MANAGERTOKEN: ${OCTO_WUKONGIM_MANAGER_TOKEN}
15. MinIO 附加配置
| 变量名 |
默认值 |
说明 |
来源 |
| MINIO_ROOT_USER |
octoadmin |
MinIO root 用户名 |
.env.example L142 |
| MINIO_ROOT_PASSWORD 🔴 |
CHG_ME! |
见 §2.2 |
.env.example L143 |
| OCTO_MINIO_APP_USER |
octo-app |
应用 IAM 用户名 |
.env.example L159 |
| OCTO_MINIO_APP_PASSWORD 🔴 |
CHANGE_ME_MINIO_APP_PASSWORD |
见 §2.3 |
.env.example L160 |
| MINIO_SERVER_URL |
组合自 OCTO_DOMAIN+PORT |
见 §4.2 |
docker-compose.yaml |
| MINIO_BROWSER_REDIRECT_URL |
(空) |
Console 重定向 URL,空值让 MinIO 在请求到达的 URL 渲染 Console |
docker-compose.yaml |
16. 镜像覆盖变量
| 变量名 |
默认镜像 |
来源 |
| OCTO_PREFLIGHT_IMAGE |
busybox:1.36 |
docker-compose.yaml |
| OCTO_SERVER_IMAGE |
mininglamposs/octo-server:latest |
.env.example |
| OCTO_WEB_IMAGE |
mininglamposs/octo-web:latest |
.env.example |
| OCTO_ADMIN_IMAGE |
mininglamposs/octo-admin:latest |
.env.example |
| OCTO_MATTER_IMAGE |
mininglamposs/octo-matter:latest |
.env.example |
| OCTO_SUMMARY_API_IMAGE |
mininglamposs/octo-smart-summary-api:latest |
.env.example |
| OCTO_SUMMARY_WORKER_IMAGE |
mininglamposs/octo-smart-summary-worker:latest |
.env.example |
| OCTO_MARKETPLACE_IMAGE |
mininglamposs/octo-marketplace:latest |
.env.example |
| OCTO_WK_IMAGE |
wukongim/wukongim:v2.2.4-20260313 |
.env.example |
| OCTO_MINIO_IMAGE |
minio/minio:RELEASE.2025-04-22T22-12-26Z |
.env.example |
| OCTO_MINIO_MC_IMAGE |
minio/mc:RELEASE.2025-04-16T18-13-26Z |
docker-compose.yaml |
| OCTO_SPEECH_IMAGE |
mininglamposs/octo-speech:latest |
.env.example |
| OCTO_SPEECH_ADMIN_IMAGE |
mininglamposs/octo-speech-admin:latest |
.env.example |
| OCTO_DOCS_IMAGE |
mininglamposs/octo-docs-backend:0.4.0 |
.env.example |
| OCTO_SEARCH_KAFKA_IMAGE |
apache/kafka:3.8.0 |
.env.example |
| OCTO_SEARCH_OPENSEARCH_IMAGE |
octo-search-opensearch-ik:2.17.0(需本地构建) |
.env.example |
| OCTO_SEARCH_OPENSEARCH_VERSION |
2.17.0 |
.env.example |
| OCTO_SEARCH_INDEXER_IMAGE |
mininglamposs/octo-search-indexer:latest |
.env.example |
中国镜像:使用 Helm 部署时,`values-china.yaml` 将 6 个 OCTO 应用镜像(server/web/admin/matter/summary-api/summary-worker)映射到 `tsh8-deepminer-tcr1.tencentcloudcr.com/octo-oss/*`。基础设施镜像(mysql/redis/minio/wukongim/nginx/busybox)不重映射,需通过集群 Docker Hub 镜像加速器拉取。
17. Compose 内部固定环境变量(不在 .env 中暴露)
octo-server 服务
| 变量 |
值 |
说明 |
| DMWORK_MASTER_KEY |
${OCTO_MASTER_KEY} |
OCTO_MASTER_KEY 的 kustomize 别名 |
| TS_DB_MYSQLADDR |
root:${MYSQL_ROOT_PASSWORD}@tcp(mysql:3306)/octo?... |
从 root 密码组合的 DSN |
| TS_DB_REDISADDR |
redis:6379 |
Redis 地址(无密码) |
| DM_MYSQL_DSN |
同 TS_DB_MYSQLADDR |
kustomize 别名 |
| DM_REDIS_ADDR |
redis:6379 |
kustomize 别名 |
| TS_MINIO_ACCESSKEYID |
${OCTO_MINIO_APP_USER:-octo-app} |
MinIO 应用 AK |
| TS_MINIO_SECRETACCESSKEY |
${OCTO_MINIO_APP_PASSWORD} |
MinIO 应用 SK |
| WUKONGIM_MANAGER_TOKEN |
${OCTO_WUKONGIM_MANAGER_TOKEN} |
kustomize 别名 |
| TS_KAFKA_BROKERS / TS_KAFKA_TOPIC / TS_KAFKA_DLQTOPIC |
见 Search 段 |
Kafka 接线 |
web 服务
| 变量 |
值 |
| API_URL |
http://octo-server:8090 |
| MARKET_API_URL |
http://marketplace:8092 |
admin 服务
| 变量 |
值 |
| API_BACKEND |
octo-server:8090 |
matter 服务
| 变量 |
值 |
| APP_ENV |
${MATTER_APP_ENV:-prod} |
| MYSQL_DSN |
matter:${OCTO_MATTER_DB_PASSWORD}@tcp(mysql:3306)/octo_matter?... |
| DMWORKIM_URL |
http://octo-server:8090 |
| WUKONGIM_URL |
http://wukongim:5001 |
| SERVER_PORT |
8080 |
| LLM_TIMEOUT |
30 |
summary-api 服务
| 变量 |
值 |
| OCTO_API_URL / DMWORK_API_URL |
http://octo-server:8090 |
| API_PORT / API_INTERNAL_PORT |
8080 / 8081 |
| WORKER_TRIGGER_URL |
http://summary-worker:8082/internal/worker-trigger |
| WORKER_API_CALLBACK_URL |
http://summary-api:8081/internal/task-event |
summary-worker 服务
| 变量 |
值 |
| WORKER_INTERNAL_PORT |
8082 |
| LLM_API_KEY 回退 |
${LLM_API_KEY:-changeme-set-real-llm-api-key-to-enable-summary} |
marketplace 服务
| 变量 |
值 |
| APP_ENV |
prod |
| API_PORT |
8092 |
| AUTH_ENABLED |
true |
| STORAGE_DRIVER |
oss |
| OSS_ENDPOINT |
http://minio:9000 |
| OSS_BUCKET |
marketplace |
| OSS_REGION |
us-east-1 |
| OSS_PATH_STYLE |
true |
| OSS_DOWNLOAD_SIGNED |
true |
| MAX_UPLOAD_MB |
20 |
| REDIS_URL |
redis://redis:6379/0 |
es-indexer 服务
| 变量 |
值 |
| ES_INDEXER_ENABLED |
true |
| KAFKA_BROKERS |
search-kafka:9092 |
| ES_ADDRESSES |
http://search-opensearch:9200 |
| INDEXER_DLQ_SPILL_DIR |
/var/lib/es-indexer/dlq-spill |
search-producer 服务
| 变量 |
值 |
| PRODUCER_ENABLED |
${OCTO_SEARCH_STANDALONE_PRODUCER_ON:-false} |
| PRODUCER_MYSQL_DSN |
从 MYSQL_ROOT_PASSWORD 组合 |
| PRODUCER_REDIS_ADDR |
redis:6379 |
| PRODUCER_TABLES |
${OCTO_SEARCH_SHARD_TABLES:-message,message1,...} |
| PRODUCER_LAG_SECONDS |
${OCTO_SEARCH_STANDALONE_PRODUCER_LAG_SECONDS:-600} |
18. Helm Values 与 Docker Compose 变量对照
18.1 关键差异
| 领域 |
Docker Compose |
Helm Values |
差异说明 |
| 密钥管理 |
明文 .env 文件 |
secrets: 块(通过 Kubernetes Secret 注入) |
Helm 支持 existingSecret 引用预创建 Secret(search producer) |
| 镜像仓库 |
默认 Docker Hub,支持 OCTO_*_IMAGE 覆盖 |
global.imageRegistry 前缀 + values-china.yaml 中国区映射 |
Helm 有统一 registry 前缀机制 |
| MySQL/Redis/MinIO/WuKongIM |
始终使用栈内容器 |
通过 mysql.enabled/redis.enabled/minio.enabled/wukongim.enabled 开关,支持 externalMySQL/externalRedis/externalMinio/externalWukongim 外接 |
Helm 支持外接托管服务 |
| 文件存储 |
仅 MinIO |
server.config.fileService 支持 minio/tencentCOS/aliOSS/s3/qiniu |
Helm 多云存储支持 |
| Redis 密码 |
默认无密码(--requirepass 未设) |
secrets.redisPassword 字段 |
Helm 模板支持 Redis AUTH |
| Nginx 暴露 |
宿主机端口映射(OCTO_HTTP_PORT) |
ClusterIP Service + 可选 Ingress |
K8s 通过 Service/Ingress 暴露 |
| Profile/模块开关 |
COMPOSE_PROFILES 逗号分隔 |
summary.enabled/speech.enabled/docs.enabled/marketplace.enabled/search.enabled 布尔值 |
Helm 各模块独立开关 |
| 域名 |
OCTO_DOMAIN + OCTO_EXTERNAL_IP |
domain + externalBaseURL + ingress.host |
Helm 支持 Ingress TLS |
| 时区 |
TZ |
global.timezone |
— |
| 搜索 producer |
OCTO_SEARCH_PRODUCER_ON / OCTO_SEARCH_STANDALONE_PRODUCER_ON |
search.producer.enabled + search.producer.replicas(DISABLED-ARTIFACT-ONLY) |
Helm 中独立 producer 默认双 OFF |
| WuKongIM 版本 |
v2.2.4-20260313 |
v2.2.5-20260422 |
Helm chart 版本略新 |
18.2 变量名映射(密钥类)
| Docker .env 变量 |
Helm values 路径 |
| MYSQL_ROOT_PASSWORD |
secrets.mysqlRootPassword |
| MINIO_ROOT_PASSWORD |
secrets.minioRootPassword |
| OCTO_MINIO_APP_PASSWORD |
secrets.minioAppPassword |
| OCTO_MASTER_KEY |
secrets.octoMasterKey |
| OCTO_NOTIFY_INTERNAL_TOKEN |
secrets.notifyInternalToken |
| OCTO_WUKONGIM_MANAGER_TOKEN |
secrets.wukongimManagerToken |
| OCTO_ADMIN_PWD |
secrets.adminPwd |
| OCTO_MATTER_DB_PASSWORD |
secrets.matterDbPassword |
| OCTO_SUMMARY_DB_PASSWORD |
secrets.summaryDbPassword |
| OCTO_SUMMARY_READER_PASSWORD |
secrets.summaryReaderPassword |
| OCTO_MARKETPLACE_DB_PASSWORD |
secrets.marketplaceDbPassword |
| LLM_API_KEY |
secrets.llmApiKey |
| LLM_API_URL |
llm.apiURL |
| LLM_MODEL |
llm.model |
| OCTO_WEBHOOK_SECRET_KEY |
secrets.webhookSecretKey |
| SPEECH_DB_PASSWORD |
secrets.speechDbPassword |
| SPEECH_API_KEY |
secrets.speechApiKey |
| SPEECH_ADMIN_PASSWORD |
secrets.speechAdminPassword |
| SPEECH_ADMIN_JWT_SECRET |
secrets.speechAdminJwtSecret |
| OCTO_DOCS_DB_PASSWORD |
secrets.docsDbPassword |
| OCTO_DOCS_COLLAB_SECRET |
secrets.docsCollabSecret |
| OCTO_DOCS_ATTACHMENT_SECRET |
secrets.docsAttachmentSecret |
| TZ |
global.timezone |
| OCTO_DOMAIN |
domain |
| WK_MODE |
wukongim.mode |
| DM_THREAD_ON |
待验证(Helm 中未直接暴露,可能在 server.config 中) |
| OCTO_SEARCH_BACKEND |
待验证 |
| VOICE_ENGINE |
speech.config.engine |
19. 安全注意事项
19.1 🔴 Redis 默认无密码
- 严禁 将
OCTO_REDIS_BIND 改为 0.0.0.0,除非先添加密码:
- 在 redis 服务 `command:` 中添加 `--requirepass `
- 在 octo-server 服务设置 `TS_DB_REDISPASS` 和 `DM_REDIS_PASS`
- Helm 部署通过
secrets.redisPassword 支持 Redis AUTH。
19.2 🔴 MySQL 密码字符集限制
- 特殊字符(
@ # ! $ & : /)会破坏 Go MySQL DSN 的 URL 解析,导致静默失败。
openssl rand -hex 16 的输出始终安全。
init-extra-dbs.sh 和 market-preflight 都会校验此字符集。
19.3 🔴 不要设置空字符串覆盖
19.4 🔴 Docker 端口绕过防火墙
- 使用反向代理时,必须将
OCTO_NGINX_BIND 设为 127.0.0.1。
- 所有后端服务(MySQL/Redis/MinIO/WuKongIM)默认已绑定 127.0.0.1。
19.5 🔴 OCTO_MASTER_KEY 长度要求
19.6 🔴 双 Producer 互斥
19.7 Volume 隔离
19.8 Kafka Cluster ID 不可变
19.9 MINIO_SERVER_URL / TS_MINIO_DOWNLOADURL / TS_EXTERNAL_BASEURL 三变量一致
20. 快速生成脚本
#!/bin/bash
# gen-env-secrets.sh — 生成 OCTO docker/.env 所需的全部密码和 Token
# 用法: bash gen-env-secrets.sh >> docker/.env
# 注意: 如果 .env 中已有值,此脚本输出的新值会重复,建议首次配置时使用。
set -euo pipefail
echo "# === Auto-generated secrets $(date -u +%Y-%m-%dT%H:%M:%SZ) ==="
# MySQL root 密码 ([A-Za-z0-9._-] 安全)
echo "MYSQL_ROOT_PASSWORD=$(openssl rand -hex 16)"
# MinIO root 密码 (≥8 字符)
echo "MINIO_ROOT_PASSWORD=$(openssl rand -hex 16)"
# MinIO app 密码
echo "OCTO_MINIO_APP_PASSWORD=$(openssl rand -hex 24)"
# OCTO master key (32 字节 hex = openssl rand -hex 16 输出 32 字符)
echo "OCTO_MASTER_KEY=$(openssl rand -hex 16)"
# 服务间认证 Token
echo "OCTO_NOTIFY_INTERNAL_TOKEN=$(openssl rand -hex 32)"
echo "OCTO_WUKONGIM_MANAGER_TOKEN=$(openssl rand -hex 32)"
# 侧服务 DB 密码
echo "OCTO_MATTER_DB_PASSWORD=$(openssl rand -hex 16)"
echo "OCTO_SUMMARY_DB_PASSWORD=$(openssl rand -hex 16)"
echo "OCTO_SUMMARY_READER_PASSWORD=$(openssl rand -hex 16)"
echo "OCTO_MARKETPLACE_DB_PASSWORD=$(openssl rand -hex 16)"
# Admin 初始密码(请妥善保存,首次启动后不可通过此变量轮换)
echo "OCTO_ADMIN_PWD=$(openssl rand -hex 16)"
# 可选:Webhook 密钥
echo "OCTO_WEBHOOK_SECRET_KEY=$(openssl rand -hex 32)"
echo "# === End of auto-generated secrets ==="
echo "# 记得设置: LLM_API_KEY, OCTO_DOMAIN, OCTO_EXTERNAL_IP, TZ" >&2
echo "# 如需启用 speech/docs/search 模块,请参考文档生成对应密钥。" >&2
Speech 模块附加密钥生成
# Speech (取消 COMPOSE_PROFILES 中注释 speech 前执行)
echo "SPEECH_ADMIN_PASSWORD=$(openssl rand -hex 16)"
echo "SPEECH_ADMIN_JWT_SECRET=$(openssl rand -hex 32)"
echo "SPEECH_DB_PASSWORD=$(openssl rand -hex 16)"
# VOICE_QWEN_KEY / VOICE_LITELLM_KEY / SPEECH_API_KEY 需从对应服务获取
Docs 模块附加密钥生成
# Docs (取消 COMPOSE_PROFILES 中注释 docs 前执行)
echo "OCTO_DOCS_DB_PASSWORD=$(openssl rand -hex 16)"
echo "OCTO_DOCS_COLLAB_SECRET=$(openssl rand -hex 32)"
echo "OCTO_DOCS_ATTACHMENT_SECRET=$(openssl rand -hex 32)"
echo "OCTO_DOCS_NOTIFY_TOKEN=$(openssl rand -hex 32)"
# 以下三个 URL 需根据实际部署填写:
# OCTO_DOCS_COLLAB_WS_URL=ws://:/docs-ws/
# OCTO_DOCS_WEB_ORIGIN=http://:
# OCTO_DOCS_S3_ENDPOINT=http://:
# OCTO_DOCS_CORS_ORIGINS=http://:
附录 A:最小可用 .env 示例
# --- 域名(本地开发) ---
OCTO_DOMAIN=localhost
OCTO_EXTERNAL_IP=127.0.0.1
# --- 时区 ---
TZ=Asia/Shanghai
# --- 必填密码(替换为 gen-env-secrets.sh 输出) ---
MYSQL_ROOT_PASSWORD=
MINIO_ROOT_PASSWORD=
OCTO_MINIO_APP_PASSWORD=
OCTO_MASTER_KEY=
OCTO_NOTIFY_INTERNAL_TOKEN=
OCTO_WUKONGIM_MANAGER_TOKEN=
OCTO_MATTER_DB_PASSWORD=
OCTO_SUMMARY_DB_PASSWORD=
OCTO_SUMMARY_READER_PASSWORD=
OCTO_MARKETPLACE_DB_PASSWORD=
# --- LLM(空着也能启动,但无法使用 AI 功能) ---
LLM_API_KEY=
# --- 其余全部使用默认值 ---
附录 B:变量速查表(按字母排序)
仅列出 `.env` 中可设置的变量,compose 内部硬编码变量见 §17。
| 变量名 |
🔴 |
默认值 |
章节 |
| COMPOSE_PROFILES |
|
(空) |
§10 |
| DM_THREAD_ON |
|
true |
§9 |
| LLM_API_KEY |
🔴 |
(空) |
§7 |
| LLM_API_URL |
|
https://api.example.com/v1 |
§7 |
| LLM_MODEL |
|
claude-sonnet-4-6 |
§7 |
| MINIO_ROOT_PASSWORD |
🔴 |
CHG_ME! |
§2.2 |
| MINIO_ROOT_USER |
|
octoadmin |
§15 |
| MINIO_SERVER_URL |
|
组合值 |
§4.2 |
| MINIO_BROWSER_REDIRECT_URL |
|
(空) |
§15 |
| MYSQL_DATABASE |
|
octo |
§5.1 |
| MYSQL_ROOT_PASSWORD |
🔴 |
CHANGE_ME_MYSQL_PASSWORD |
§2.1 |
| OCTO_ADMIN_BIND |
|
127.0.0.1 |
§4.1 |
| OCTO_ADMIN_PORT |
|
28082 |
§4.1 |
| OCTO_ADMIN_PWD |
🔴 |
(空) |
§8 |
| OCTO_DOMAIN |
|
localhost |
§3.1 |
| OCTO_DOCS_ATTACHMENT_SECRET |
🔴 |
(空) |
§12 |
| OCTO_DOCS_COLLAB_SECRET |
🔴 |
(空) |
§12 |
| OCTO_DOCS_COLLAB_WS_URL |
|
(空) |
§12 |
| OCTO_DOCS_CORS_ORIGINS |
|
(空) |
§12 |
| OCTO_DOCS_DB_PASSWORD |
🔴 |
(空) |
§12 |
| OCTO_DOCS_IMAGE |
|
mininglamposs/octo-docs-backend:0.4.0 |
§16 |
| OCTO_DOCS_NOTIFY_TOKEN |
🔴 |
(空) |
§12 |
| OCTO_DOCS_S3_ENDPOINT |
|
(空) |
§12 |
| OCTO_DOCS_WEB_ORIGIN |
|
(空) |
§12 |
| OCTO_EXTERNAL_IP |
|
127.0.0.1 |
§3.2 |
| OCTO_HTTP_PORT |
|
28080 |
§4.1 |
| OCTO_HTTPS_PORT |
|
28443 |
§4.1 |
| OCTO_MARKETPLACE_DB_PASSWORD |
🔴 |
CHANGE_ME_marketplace_db_pass |
§5.2 |
| OCTO_MASTER_KEY |
🔴 |
CHANGE_ME_32_BYTES_octo_master_ |
§2.4 |
| OCTO_MATTER_BIND |
|
127.0.0.1 |
§4.1 |
| OCTO_MATTER_DB_PASSWORD |
🔴 |
matter |
§5.2 |
| OCTO_MATTER_PORT |
|
28086 |
§4.1 |
| OCTO_MINIO_API_BIND |
|
127.0.0.1 |
§4.1 |
| OCTO_MINIO_API_PORT |
|
29000 |
§4.1 |
| OCTO_MINIO_APP_PASSWORD |
🔴 |
CHANGE_ME_MINIO_APP_PASSWORD |
§2.3 |
| OCTO_MINIO_APP_USER |
|
octo-app |
§15 |
| OCTO_MINIO_CONSOLE_BIND |
|
127.0.0.1 |
§4.1 |
| OCTO_MINIO_CONSOLE_PORT |
|
29001 |
§4.1 |
| OCTO_MINIO_IMAGE |
|
minio/minio:RELEASE.2025-04-22T22-12-26Z |
§16 |
| OCTO_MYSQL_BIND |
|
127.0.0.1 |
§4.1 |
| OCTO_MYSQL_PORT |
|
23306 |
§4.1 |
| OCTO_NETWORK_SUBNET |
|
172.28.0.0/24 |
§3.3 |
| OCTO_NGINX_BIND |
|
0.0.0.0 |
§4.1 |
| OCTO_NOTIFY_INTERNAL_TOKEN |
🔴 |
CHANGE_ME_notify_internal_token |
§2.5 |
| OCTO_PREFLIGHT_IMAGE |
|
busybox:1.36 |
§16 |
| OCTO_REDIS_BIND |
|
127.0.0.1 |
§4.1 |
| OCTO_REDIS_PORT |
|
26379 |
§4.1 |
| OCTO_SEARCH_BACKEND |
|
disabled |
§9 |
| OCTO_SEARCH_BACKFILL_BATCH |
|
1000 |
§13.6 |
| OCTO_SEARCH_BACKFILL_RATE |
|
5000 |
§13.6 |
| OCTO_SEARCH_CURSOR_HMAC |
🔴 |
(空) |
§13.3 |
| OCTO_SEARCH_ES_INDEX |
|
octo-message |
§13.4 |
| OCTO_SEARCH_INDEXER_IMAGE |
|
mininglamposs/octo-search-indexer:latest |
§16 |
| OCTO_SEARCH_KAFKA_ADVERTISED_HOST |
|
localhost |
§13.2 |
| OCTO_SEARCH_KAFKA_BIND |
|
127.0.0.1 |
§13.1 |
| OCTO_SEARCH_KAFKA_BROKERS |
|
search-kafka:9092 |
§13.3 |
| OCTO_SEARCH_KAFKA_PORT |
|
29092 |
§13.1 |
| OCTO_SEARCH_KAFKA_TOPIC |
|
octo.message.v1 |
§13.4 |
| OCTO_SEARCH_OPENSEARCH_BIND |
|
127.0.0.1 |
§13.1 |
| OCTO_SEARCH_OPENSEARCH_DISABLE_SECURITY |
|
true |
§13.2 |
| OCTO_SEARCH_OPENSEARCH_IMAGE |
|
octo-search-opensearch-ik:2.17.0 |
§16 |
| OCTO_SEARCH_OPENSEARCH_JAVA_OPTS |
|
-Xms512m -Xmx512m |
§13.2 |
| OCTO_SEARCH_OPENSEARCH_PORT |
|
29200 |
§13.1 |
| OCTO_SEARCH_OS_ADDRS |
|
http://search-opensearch:9200 |
§13.3 |
| OCTO_SEARCH_PRODUCER_ON |
|
false |
§9 |
| OCTO_SEARCH_STANDALONE_PRODUCER_LAG_SECONDS |
|
600 |
§13.5 |
| OCTO_SEARCH_STANDALONE_PRODUCER_ON |
|
false |
§13.5 |
| OCTO_SERVER_BIND |
|
127.0.0.1 |
§4.1 |
| OCTO_SERVER_PORT |
|
28081 |
§4.1 |
| OCTO_SPEECH_ADMIN_BIND |
|
127.0.0.1 |
§11 |
| OCTO_SPEECH_ADMIN_PORT |
|
28088 |
§11 |
| OCTO_SUMMARY_API_BIND |
|
127.0.0.1 |
§4.1 |
| OCTO_SUMMARY_API_PORT |
|
28087 |
§4.1 |
| OCTO_SUMMARY_API_URL |
|
http://summary-api:8080 |
§5 后 |
| OCTO_SUMMARY_DB_PASSWORD |
🔴 |
summary |
§5.2 |
| OCTO_SUMMARY_READER_PASSWORD |
🔴 |
summary_reader |
§5.2 |
| OCTO_WEBHOOK_SECRET_KEY |
🔴 |
(空) |
§6 |
| OCTO_WEB_BIND |
|
127.0.0.1 |
§4.1 |
| OCTO_WEB_PORT |
|
28083 |
§4.1 |
| OCTO_WK_API_BIND |
|
127.0.0.1 |
§4.1 |
| OCTO_WK_API_PORT |
|
25001 |
§4.1 |
| OCTO_WK_MONITOR_BIND |
|
127.0.0.1 |
§4.1 |
| OCTO_WK_MONITOR_PORT |
|
25300 |
§4.1 |
| OCTO_WK_TCP_ADDR |
|
(注释) |
§14 |
| OCTO_WK_TCP_BIND |
|
127.0.0.1 |
§4.1 |
| OCTO_WK_TCP_PORT |
|
25100 |
§4.1 |
| OCTO_WK_WS_ADDR |
|
(注释) |
§14 |
| OCTO_WK_WS_BIND |
|
127.0.0.1 |
§4.1 |
| OCTO_WK_WS_PORT |
|
25200 |
§4.1 |
| OCTO_WK_WSS_ADDR |
|
(注释) |
§14 |
| OCTO_WUKONGIM_MANAGER_TOKEN |
🔴 |
CHANGE_ME_wukongim_manager_token |
§2.6 |
| SPEECH_ADMIN_PASSWORD |
🔴 |
(空) |
§11 |
| SPEECH_ADMIN_USERNAME |
|
admin |
§11 |
| SPEECH_ADMIN_JWT_SECRET |
🔴 |
(空) |
§11 |
| SPEECH_API_KEY |
🔴 |
(空) |
§11 |
| SPEECH_DB_PASSWORD |
🔴 |
(空) |
§11 |
| SPEECH_SERVICE_URL |
|
http://octo-speech:8780 |
§11 |
| TS_EXTERNAL_BASEURL |
|
组合值 |
§4.2 |
| TS_MINIO_DOWNLOADURL |
|
组合值 |
§4.2 |
| TZ |
|
UTC |
§3.4 |
| VOICE_ENGINE |
|
qwen |
§11 |
| VOICE_QWEN_KEY |
🔴 |
(空) |
§11 |
| VOICE_QWEN_MODELS |
|
qwen3.5-omni-plus |
§11 |
| VOICE_QWEN_URL |
|
(空) |
§11 |
| WK_MODE |
|
release |
§14 |