flag92 flag92
部署教程

在 Cloudflare + 自有 VPS 上跑 Chatwoot + Dify

用 Cloudflare 做 DNS / WAF / 隧道,VPS 跑核心服务,全套从零到上线大约 90 分钟。

Cloudflare + VPS (Hetzner / DigitalOcean / Vultr) 90 分钟

准备清单#

  • 一台 4C8G VPS(Ubuntu 24.04)
  • 域名托管在 Cloudflare(如 support.yourdomain.comdify.yourdomain.com
  • LLM 提供商的 API Key(OpenAI / Anthropic / 通义等)

步骤 1:装 Docker & Compose#

curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER

步骤 2:用 Cloudflare Tunnel 暴露服务#

不直接开放公网 80/443,所有流量经 Cloudflare Tunnel:

docker run -d --name cloudflared --network host \
  cloudflare/cloudflared:latest tunnel --no-autoupdate run --token <YOUR_TOKEN>

在 Cloudflare Zero Trust 控制台为 support.yourdomain.comdify.yourdomain.com 分别加 public hostname,指向 http://localhost:3000http://localhost:5001

步骤 3:拉起 Dify#

git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
# 编辑 .env:CONSOLE_WEB_URL、APP_API_URL 改成 https://dify.yourdomain.com
docker compose up -d

打开 https://dify.yourdomain.com,注册管理员,配置模型,创建一个「聊天助手」应用,上传知识库,发布并复制 API Key。

步骤 4:拉起 Chatwoot#

git clone https://github.com/chatwoot/chatwoot.git
cd chatwoot
cp .env.example .env
# 编辑 .env:FRONTEND_URL=https://support.yourdomain.com
docker compose -f docker-compose.production.yaml run --rm rails bundle exec rails db:chatwoot_prepare
docker compose -f docker-compose.production.yaml up -d

打开 https://support.yourdomain.com,注册账号、创建账户与 Inbox。

步骤 5:把 Dify 配成 Chatwoot 的 Agent Bot#

在 Chatwoot:Settings → Agent Bots → 新建:

  • Outgoing URL:https://dify.yourdomain.com/v1/chat-messages
  • 头部添加:Authorization: Bearer app-xxxxxxxx

然后在目标 Inbox 选择这个 Bot 作为兜底。

步骤 6:验证#

发一条消息到网页 Widget,Bot 自动回复,确认日志中能看到 Dify 调用记录。

常见坑#

  • Chatwoot 邮件发不出:SMTP 走 Postmark / SES,注意 MAILER_SENDER_EMAIL 与发件域名一致
  • 中文 Embedding 慢:切换到 bge-m3 或者用 SiliconFlow 的免费额度
  • Cloudflare Tunnel 502:检查容器是否监听 0.0.0.0,而不是 127.0.0.1

站内搜索

按 ⌘ K 随时唤起