Tiledesk 配置参数详解
Tiledesk 全部微服务的环境变量配置清单:server、chatbot、chat21 系列、backend-llm、基础设施(MongoDB/RabbitMQ/Redis/Qdrant)以及 JWT 密钥一致性规则。
Tiledesk 配置参数详解
一、配置体系总览
Tiledesk 的配置全部通过 环境变量 注入,不使用传统配置文件(YAML/JSON)。每个微服务独立读取自己的环境变量集合。
1.1 配置层级
┌──────────────────────────────────────────────────┐
│ 全局共享变量(所有服务通用) │
│ - MONGODB_URI / JWT_SECRET_KEY / LOG_LEVEL 等 │
├──────────────────────────────────────────────────┤
│ 服务专有变量(每个服务独立读取) │
│ - tiledesk-server / chatbot / chat21-server ... │
├──────────────────────────────────────────────────┤
│ 前端编译时变量(Angular environment.prod.ts) │
│ - serverUrl / wsUrl / chatUrl │
└──────────────────────────────────────────────────┘
1.2 变量格式约定
- 布尔值:
true/false(小写字符串) - 端口号:纯数字字符串,如
"3000" - URI:完整连接串,如
mongodb://user:pass@host:27017/dbname - 密钥:任意字符串,生产环境必须替换默认值
1.3 默认值清单(官方 Compose 部署)
下表列出 Tiledesk Community Edition 部署时的默认凭据和密钥,生产部署必须全部替换:
| 变量 | 默认值 | 严重程度 |
|---|---|---|
| JWT_SECRET_KEY | tokenKey | 🔴 密钥 |
| CHAT21_JWT_SECRET | tokenKey | 🔴 密钥 |
| APPS_ACCESS_TOKEN_SECRET | nodeauthsecret | 🔴 密钥 |
| CHAT21_ADMIN_TOKEN | 硬编码 JWT 串 | 🔴 密钥 |
| 默认管理员密码 | superadmin | 🔴 账户 |
| GPTKEY | CHANGEIT | 🟡 需替换为真实 key |
二、全局共享变量
2.1 日志
| 变量 | 默认值 | 说明 |
|---|---|---|
LOG_LEVEL | info | 日志级别:debug / info / warn / error。所有后端服务通用 |
2.2 MongoDB
所有涉及数据库的服务(server、chatbot、chat21-server、chat21-http、backend-llm)都需要 MongoDB 连接串。
| 变量 | 服务 | 默认值 | 说明 |
|---|---|---|---|
MONGODB_URI | tiledesk-server | mongodb://mongo/tiledesk | tiledesk 数据库 |
MONGODB_URI | chat21-server / chat21-http | mongodb://mongo/chat21 | chat21 数据库 |
MONGODB_URI | tiledesk-chatbot | mongodb://mongo/tiledesk | 同 server |
MONGODB_URL | backend-llm-train / qa | mongodb://mongo/tiledesk | LLM 后端专用(变量名多了个 L) |
⚠️ 两个数据库分离:
tiledesk存项目/坐席/会话/机器人配置,chat21存实时消息/会话。源码安装时可共用一个 MongoDB 实例,通过数据库名区分。
2.3 Redis 缓存
| 变量 | 服务 | 默认值 | 说明 |
|---|---|---|---|
CACHE_ENABLED | tiledesk-server / chatbot | true | 是否启用 Redis 缓存 |
CACHE_ENGINE | tiledesk-server | redis | 缓存引擎类型 |
CACHE_REDIS_HOST | tiledesk-server / chatbot | redis | Redis 主机地址 |
CACHE_REDIS_PORT | tiledesk-server / chatbot | 6379 | Redis 端口 |
REDIS_URL | backend-llm-train / qa | redis://redis:6379 | LLM 后端的 Redis 连接串(格式不同) |
2.4 RabbitMQ 消息队列
所有服务通过 AMQP/RabbitMQ 交换消息。关键连接串是 JWT 格式的 AMQP URL,包含预生成的凭据。
| 变量 | 服务 | 说明 |
|---|---|---|
AMQP_MANAGER_URL | tiledesk-server / chatbot / backend-llm | 主 AMQP 连接串,格式 amqp://ignored:<JWT>@rabbitmq:5672 |
RABBITMQ_URI | chat21-server / chat21-http | chat21 系列专用 AMQP 连接串 |
💡 AMQP URL 说明:Tiledesk 的 AMQP 连接串使用了 RabbitMQ JWT 认证插件,URL 格式为
amqp://ignored:<JWT_TOKEN>@host:5672。ignored是占位用户名,真正的凭据在 JWT payload 里。源码安装时可以用标准amqp://user:password@host:5672格式(关闭 RabbitMQ JWT 插件),但必须确保所有服务的用户名密码一致。
RabbitMQ 基础凭据(broker 自身):
| 变量 | 说明 |
|---|---|
RABBITMQ_ERLANG_COOKIE | Erlang cookie,集群节点间鉴权。单节点部署填任意长随机串 |
RABBITMQ_DEFAULT_USER | 初始管理员用户名 |
RABBITMQ_DEFAULT_PASS | 初始管理员密码 |
2.5 JWT 与鉴权
| 变量 | 服务 | 默认值 | 说明 |
|---|---|---|---|
JWT_SECRET_KEY | tiledesk-server / backend-llm | tokenKey | 主 JWT 签名密钥 |
JWT_KEY | chat21-server / chat21-http | tokenKey | chat21 系列 JWT 签名密钥(必须与 CHAT21_JWT_SECRET 一致) |
CHAT21_JWT_SECRET | tiledesk-server | tokenKey | server 签发 chat21 兼容 JWT 用 |
APPS_ACCESS_TOKEN_SECRET | tiledesk-server | nodeauthsecret | Apps 模块访问令牌密钥 |
CHAT21_APPID | tiledesk-server / chat21-server | tilechat | chat21 应用 ID,所有 chat21 组件必须一致 |
⚠️ 密钥一致性规则:
JWT_SECRET_KEY、CHAT21_JWT_SECRET、JWT_KEY三个变量在生产环境中必须全部设置为同一个值,否则 server 和 chat21 系列的 JWT 无法互相验证。
2.6 外部访问地址
统一配置 Widget、Dashboard、WebSocket 端点对外暴露的地址。
| 变量 | 默认值 | 说明 |
|---|---|---|
EXTERNAL_BASE_URL | http://localhost:8081 | 外部根地址,前端组件据此生成 API/WSS 全路径 |
EXTERNAL_MQTT_BASE_URL | ws://localhost:8081 | MQTT over WebSocket 地址,Widget 实时推送用 |
影响范围:dashboard、webwidget、ionic、cds 等前端组件启动时会读取这些值,硬编码嵌入到编译产物中。
三、tiledesk-server 主后端配置
server 是 Tiledesk 的核心 API 服务,端口 3000。除了上文的全局变量外,专有配置如下:
3.1 Chat21 集成
| 变量 | 默认值 | 说明 |
|---|---|---|
CHAT21_ENABLED | true | 是否启用 Chat21 实时聊天引擎 |
CHAT21_ENGINE | mqtt | 实时协议:mqtt(推荐)或 websocket |
CHAT21_URL | http://chat21httpserver:8004 | Chat21 HTTP API 地址 |
CHAT21_ADMIN_TOKEN | 硬编码 JWT | server 调用 chat21-server 的管理员令牌 |
ALLOW_REOPEN_CHAT | true | 是否允许访客重新打开已关闭会话 |
3.2 AI / LLM 配置
| 变量 | 默认值 | 说明 |
|---|---|---|
GPTKEY | CHANGEIT | OpenAI API Key。Community 版可保持 CHANGEIT,但 AI Bot 不可用 |
OPENAI_ENDPOINT | https://api.openai.com/v1 | OpenAI API 端点(可改 Ollama/vLLM 等) |
AI_MODELS | gpt-5:4;gpt-4o:4;... | 模型列表,格式 模型名:每百万 token 成本(用于计费参考) |
TILEBOT_ENDPOINT | http://chatbot:3000 | AI Bot 引擎地址 |
AI_ENDPOINT | — | 后端-LLM 服务地址(可选,用于直接问答) |
3.3 RAG / 向量存储
| 变量 | 默认值 | 说明 |
|---|---|---|
KB_ENDPOINT_TRAIN | http://backend-llm-train:8000/api | RAG 训练端点 |
KB_ENDPOINT_QA | http://backend-llm-qa:8000/api | RAG 问答端点 |
VECTOR_STORE_NAME | qdrant | 向量存储引擎 |
VECTOR_STORE_HOST | qdrant | 向量存储主机 |
VECTOR_STORE_PORT | 6333 | 向量存储端口 |
VECTOR_STORE_DEPLOYMENT | local | 部署模式 |
INDEX_TYPE | serverless | Qdrant collection 类型 |
INDEX_NAME | tiledesk-llm | 索引名 |
VECTOR_SIZE | 1536 | 向量维度(OpenAI text-embedding-3-small 是 1536) |
3.4 Email 通知
| 变量 | 默认值 | 说明 |
|---|---|---|
EMAIL_ENABLED | 空(不启用) | 是否启用邮件通知 |
EMAIL_HOST | — | SMTP 服务器主机 |
EMAIL_PORT | — | SMTP 端口(通常 465/587) |
EMAIL_SECURE | — | 是否 TLS:true |
EMAIL_USERNAME | — | SMTP 用户名 |
EMAIL_PASSWORD | — | SMTP 密码 |
EMAIL_FROM_ADDRESS | — | 发件人地址 |
EMAIL_BASEURL | http://localhost:8081/dashboard | Dashboard 基础 URL(邮件里嵌入链接用) |
3.5 多渠道集成
| 变量 | 说明 |
|---|---|
FB_APP_ID / FB_APP_SECRET | Facebook Messenger 集成 |
TELEGRAM_API_URL / TELEGRAM_FILE_URL | Telegram Bot API 前缀 |
META_GRAPH_URL | Facebook Graph API 版本,默认 https://graph.facebook.com/v20.0/ |
LICENSE_KEY | 企业版 License(Community 版不需要) |
3.6 其他
| 变量 | 默认值 | 说明 |
|---|---|---|
RESTHOOK_ENABLED | true | 是否启用 Webhook |
BOOT_LOADING | true | 是否在启动时加载 Bot Flow 定义 |
COMMUNITY_VERSION | true | Community 版本标识(影响 FEATURES_TOKEN 解析) |
QUOTES_ENABLED | false | 是否启用报价功能 |
WS_SERVER_PATH | 空 | WebSocket 服务器路径(通常让其自动推导) |
WIDGET_LOCATION | 自动推导 | Widget URL,前端嵌入用 |
四、chat21 实时消息组件
chat21 系列是 Tiledesk 的 MQTT 实时消息引擎,含三个独立服务。
4.1 chat21-server(MQTT Broker)
| 变量 | 默认值 | 说明 |
|---|---|---|
APP_ID | tilechat | 应用 ID,必须与 server 的 CHAT21_APPID 一致 |
WEBHOOK_ENABLED | true | 是否启用 Webhook 回调 |
WEBHOOK_EVENTS | message-sent,message-delivered,conversation-unarchived | 触发 webhook 的事件列表 |
WEBHOOK_ENDPOINTS | http://server:3000/chat21/requests,... | Webhook 回调目标地址(逗号分隔) |
MQTT_PORT | 3003(默认) | MQTT 监听端口 |
4.2 chat21-http-server(Chat HTTP API)
| 变量 | 默认值 | 说明 |
|---|---|---|
PUSH_ENABLED | true | 是否启用推送(MQTT 推送) |
CONTACTS_LOOKUP_ENDPOINT | http://server:3000/users_util | 用户画像查询地址 |
CHAT21HTTP_CACHE_ENABLED | false | 是否缓存 Chat HTTP 响应 |
PUSH_WH_CHAT21_API_ADMIN_TOKEN | 硬编码 JWT | chat21-http → chat21-server 的推送令牌 |
PUSH_WH_WEBHOOK_TOKEN | 硬编码串 | Webhook 共享密钥 |
4.3 chat21-web-widget / chat21-ionic(前端)
前端组件在编译时读取以下环境变量,运行时通过浏览器加载。
| 变量 | 默认值 | 说明 |
|---|---|---|
CHAT21_ENGINE | mqtt | 实时协议 |
MQTT_APPID | tilechat | MQTT 客户端 appID |
MQTT_ENDPOINT | ws://localhost:8081/mqws/ws | MQTT over WebSocket 端点 |
MQTT_APIENDPOINT | http://localhost:8081/chatapi/api | Chat HTTP API 端点 |
SERVER_BASE_URL | http://localhost:8081/api/ | Server REST API 根路径 |
AUTH_PERSISTENCE | LOCAL | 认证持久化方式:LOCAL / REMOTE |
PUSH_ENGINE | none | 推送引擎:none / firebase |
UPLOAD_ENGINE | native | 文件上传方式:native / s3 |
五、AI / LLM 后端配置
5.1 tiledesk-chatbot(Bot 引擎)
| 变量 | 默认值 | 说明 |
|---|---|---|
API_ENDPOINT | http://server:3000 | Server API 地址(Bot 回调 server) |
TILEBOT_ENDPOINT | http://chatbot:3000 | Bot 自身端点 |
AI_ENDPOINT | http://backend-llm-train:8000/api | LLM 后端地址 |
CACHE_ENABLED | true | 是否启用 Redis 缓存 |
FLOW_LOGS_ENABLED | true | 是否记录 Bot Flow 执行日志 |
TILEBOT_LOG | info | Bot 日志级别 |
5.2 backend-llm-train / backend-llm-qa(Python FastAPI)
两个实例共用同一份代码,通过 TILELLM_ROLE 区分职责。
| 变量 | 默认值 | 说明 |
|---|---|---|
TILELLM_ROLE | — | 必填:train 或 qa |
TIMEOUT | 240 | API 请求超时(秒) |
WORKERS | 3 | uvicorn worker 数量 |
GPTKEY | CHANGEIT | OpenAI API Key |
JOB_TOPIC_EXCHANGE_TRAIN | tiledesk-trainer | RabbitMQ topic exchange 名称 |
TRAIN_PREFETCH | 4 | RabbitMQ prefetch count |
TRAINER_LOG | info | 日志级别 |
六、Nginx 反代配置
统一入口 Nginx 承担路径路由和 WebSocket 升级。源码安装时需要手动配置(见 《Tiledesk Ubuntu 22.04 源码安装指南》 第六章)。关键 location 段:
| 路径 | 反代目标 | 说明 |
|---|---|---|
/api/ | server:3000/api/ | REST API |
/ws/ | RabbitMQ MQTT WebSocket | Dashboard 实时推送 |
/mqws/ws | RabbitMQ MQTT WebSocket | Widget 实时推送 |
/chatapi/ | chat21-http-server:8004/ | Chat HTTP API |
/dashboard/ | 静态文件 | 管理后台 UI |
/cds/ | 静态文件 | Bot Flow 设计器 |
/widget/ | 静态文件 | Web Widget |
/chat/ | 静态文件 | 完整聊天界面 |
⚠️ WebSocket 升级:Nginx 反代 WebSocket 时必须加
proxy_http_version 1.1+proxy_set_header Upgrade $http_upgrade+proxy_set_header Connection "upgrade",否则 MQTT over WS 无法握手。
七、FEATURES_TOKEN 功能开关
FEATURES_TOKEN 是一串以冒号分隔的开关码,前缀字母表示功能组类型:
| 前缀 | 含义 | 示例 |
|---|---|---|
T- | (Tiledesk)核心功能,Community 版已开启 | T-GPT(GPT 集成)、T-BAN(Ban 功能)、T-ACT(Activities) |
F- | (Feature)付费功能,需要企业 License | F-ANA(高级分析)、F-MTT(更多模板)、F-NOT(增强通知)、F-IPS(IPS 功能) |
PAY: | 付费功能前缀标记 | — |
当前 Community Edition 的 FEATURES_TOKEN 值为:
PAY:F-ANA:T-ACT:T-TRI:T-GRO:T-DEP:T-OPH:T-MTL:T-CAR:T-PSA:F-MTT:T-SUP:T-LBS:T-APP:T-DEV:F-NOT:T-IPS:F-ETK:F-RAS:F-PPB:F-PET:F-MTS:F-TIL:T-DGF:T-NAT:T-HPB:F-TOW:F-KNB:T-GPT:T-BAN:F-AST:F-MON:T-CNT:F-AUT:F-WUN:F-INT:T-DPA:T
💡 Community 版已通过 FEATURES_TOKEN 开启了几乎所有
T-核心功能位(约 30 个),但F-付费功能(F-ANA高级分析、F-MTT模板等)仍需企业版 License 才能生效。License Key 通过LICENSE_KEY环境变量注入 server。
八、Qdrant 向量存储
Qdrant 是独立部署的开源向量数据库,不需要额外配置变量——默认即可工作。可选配置:
| 项目 | 默认值 | 说明 |
|---|---|---|
| Storage Path | /var/lib/qdrant/storage(源码)或 ./qdrant_storage(Compose) | 数据持久化目录 |
| Listen Port | 6333(HTTP)/ 6334(gRPC) | — |
| Vector Size | 1536 | 必须与 VECTOR_SIZE 一致(由 server 配置) |
Qdrant 的 collection 会由 tiledesk-server 在首次创建知识库时自动建立,不需要手工创建。
九、配置调优建议
9.1 内存调优
Node.js 服务默认堆内存约 200-300MB,可通过 NODE_OPTIONS 调整:
# systemd 服务中增加环境变量
Environment=NODE_OPTIONS="--max-old-space-size=512"
| 服务 | 推荐堆内存 |
|---|---|
| tiledesk-server | 512 MB |
| chat21-server | 256 MB |
| chat21-http-server | 256 MB |
| tiledesk-chatbot | 512 MB(AI 推理缓存用) |
9.2 RabbitMQ 调优
# /etc/rabbitmq/rabbitmq.conf
default_vhost = /
default_user = rabbitmq
default_pass = <强密码>
loopback_users = none
# MQTT 插件配置
mqtt.tcp_listener.port = 1883
9.3 MongoDB 调优
生产环境建议在 MongoDB 开启 WiredTiger 压缩和合理的连接池:
// mongosh 中设置
db.adminCommand({setParameter: 1, maxInternalLoginCacheSize: 100})
9.4 Redis 调优
# /etc/redis/redis.conf
maxmemory 1gb
maxmemory-policy allkeys-lru
save 900 1
save 300 10
十、配置完整性检查清单
部署完成后执行以下检查,确保所有关键变量已正确配置:
# 1. 所有 JWT 密钥必须相同
echo "JWT一致性检查:"
grep JWT /opt/tiledesk/backend/*/.env 2>/dev/null
# 2. RabbitMQ 连接串必须所有服务一致
echo "AMQP一致性检查:"
grep -r AMQP_MANAGER_URL\|RABBITMQ_URI /opt/tiledesk/backend/*/.env 2>/dev/null
# 3. 外部地址
echo "外部地址配置:"
grep EXTERNAL_BASE_URL /opt/tiledesk/backend/server/.env 2>/dev/null
# 4. GPTKEY 是否已替换
echo "GPTKEY检查:"
grep -r GPTKEY /opt/tiledesk/backend/*/.env | grep CHANGEIT && \
echo "⚠️ 警告: GPTKEY 仍为 CHANGEIT,AI 功能不可用" || \
echo "✅ GPTKEY 已配置"
# 5. 默认管理员密码(需 Dashboard 内修改)
echo "默认管理员: admin@tiledesk.com / superadmin"
echo "⚠️ 请首次登录后立即修改!"