首页 产品 为什么选 OCTO 解决方案 文档 关于
文档中心 / 部署运维 / 环境变量配置参考
← 返回文档中心

环境变量配置参考

OCTO 文档中心 · 部署运维

  • 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,除非先添加密码:
  1. 在 redis 服务 `command:` 中添加 `--requirepass `
  2. 在 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