ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Chatto Docker Compose部署教程:Chatto、NATS、LiveKit与Caddy一站式配置

Chatto Docker Compose部署教程:Chatto、NATS、LiveKit与Caddy一站式配置 Chatto Docker Compose部署教程Chatto、NATS、LiveKit与Caddy一站式配置【免费下载链接】chattoA fully-featured team and group chat application that you can easily selfhost.项目地址: https://gitcode.com/gh_mirrors/chatt/chatto本教程带你用 Docker Compose 一站式部署 Chatto 自托管聊天服务一个 compose 文件同时拉起 Chatto 应用服务器、NATS 消息持久化、LiveKit 语音视频通话和 Caddy 自动 HTTPS 反向代理全程无需手动拼接配置。部署前的架构认识 Chatto 官方仓库自带一套完整的 Docker Compose 示例位于 examples/dockercompose/ 目录。这套示例由四个容器服务组成服务镜像职责Chattoghcr.io/chattocorp/chatto:latest聊天应用服务器内嵌 Web 前端监听 4000 端口NATSnats:latest消息代理 JetStream 持久化作为唯一数据存储LiveKitlivekit/livekit-server:latestWebRTC 媒体服务器支撑语音和视频通话Caddycaddy:latest自动申请 HTTPS 证书、反向代理与负载均衡这里特意把 NATS 独立成容器运行好处是重启或替换 Chatto 容器时不会动到数据也方便以后水平扩容 Chatto 副本。示例中的 nats-server.conf 设置了sync_interval: always确保每条 JetStream 写入都同步落盘后再确认防止主机异常断电丢失已确认的消息。部署前准备域名与端口检查 ✅在运行任何命令之前请先确认以下前置条件详见 README.md服务器已安装 Docker 和 Docker Composev2拥有指向服务器的域名例如chat.example.com额外一个子域名指向同一台服务器用于 LiveKit 通话信令例如livekit.chat.example.com防火墙放行以下入站端口端口协议指向用途80 / 443TCPCaddyHTTPS 服务、HTTP 跳转与证书申请7881TCPlivekit:7881UDP 不通时的 WebRTC 媒体回退7882UDPlivekit:7882直连 WebRTC 媒体流3478UDPlivekit:3478LiveKit 内置 TURN/STUN 中继⚠️ 注意NATS 的 4222 端口不要对外暴露Chatto 与 NATS 只在 Compose 内部网络通信。一键生成配置文件init-env.sh 快速上手 官方推荐使用 init-env.sh 脚本生成全部配置它会自动生成强随机密钥并保证.env与 LiveKit 配置中的密钥严格一致git clone https://gitcode.com/gh_mirrors/chatt/chatto cd chatto/examples/dockercompose ./init-env.sh chat.example.com adminexample.com脚本执行后会生成三个产物.env— Chatto 全部环境变量PUBLIC_URL、Cookie 签名密钥、NATS 令牌、LiveKit API 密钥等livekit.generated.yaml— LiveKit 服务器配置端口、TURN、webhook 回调地址backups/— 本地备份目录权限自动设为 700生成后只需修改.env中真正属于你的值通常只改这几项PUBLIC_URL— 你的 Chatto 域名CHATTO_OWNERS_EMAILS— 需要成为服务器所有者的邮箱逗号分隔CHATTO_SMTP_*— SMTP 发信配置直接邮箱注册、验证和找回密码都依赖它核心文件解析一个 compose.yml 编排全部服务 compose.yml 是整套部署的核心关键片段如下services: chatto: image: ghcr.io/chattocorp/chatto:latest env_file: .env depends_on: - nats expose: - 4000 # 仅容器内可达由 Caddy 代理 volumes: - ${CHATTO_BACKUP_DIR:-./backups}:/backups caddy: image: caddy:latest ports: - 80:80 - 443:443所有服务都使用restart: unless-stopped策略宿主机重启后会自动恢复。Caddyfile 则负责两件事通过 Docker 内部 DNS 自动发现所有 Chatto 副本并做轮询负载均衡以及把livekit.子域名反向代理到livekit:7880的 WebSocket 信令端口。注意 Caddy 只承载 HTTP 流量WebRTC 媒体流直接走宿主机端口不需要 L4 配置。如果你已有 nginx、Apache 或 Traefik 等代理也可以移除 Caddy 服务只需保证两条路由Chatto 域名指向chatto:4000LiveKit 域名指向livekit:7880。启动部署并验证服务 # 启动全部服务 docker compose up -d # 查看容器状态 docker compose ps # 验证两个 HTTPS 端点 curl --fail --silent --show-error --output /dev/null https://chat.example.com curl --fail --silent --show-error --output /dev/null https://livekit.chat.example.comCaddy 会自动完成 ACME 证书申请。随后打开浏览器访问https://chat.example.com第一次访问会进入引导向导创建服务器名称和初始所有者账号。完成后就能看到 Chatto 的聊天界面了验证通话链路时建议从两台不同网络设备的浏览器分别加入一次语音通话以实际压测 TCP 7881 和 UDP 3478、7882 端口是否通畅。日常运维备份、扩容与更新 ️加密备份推荐开启--include-keys密钥会一并加密进归档docker compose run --rm chatto backup --encrypt --include-keys备份会写入挂载到容器/backups的backups/目录记得把归档复制到另一台主机并单独保管 passphrase 和.env文件。水平扩容 ChattoCaddy 自动发现新副本并分摊流量docker compose up -d --scale chatto5升级到新版本镜像docker compose pull docker compose up -d数据都保存在 Docker 卷中nats_data存放消息与 KV 数据caddy_data存放 TLS 证书。查看某个服务的日志也很简单docker compose logs -f chatto常见问题排查 现象解决方法Chatto 无法连接 NATS检查.env中NATS_TOKEN与CHATTO_NATS_CLIENT_TOKEN是否一致备份写不进去/backups确认宿主机备份目录可被PUID/PGID对应的用户写入注册时提示邮件未配置填写CHATTO_SMTP_*各项或改用CHATTO_EMAIL_TRANSPORTjmapCaddy 拿不到证书确认域名 DNS 已指向服务器且 80/443 端口已开放通话不通核对 LiveKit 密钥与 webhook 一致CHATTO_LIVEKIT_URL必须使用公网wss://livekit.子域名不能写 Docker 内部主机名LiveKit 启动报could not resolve external IP放行容器的出站 UDPSTUN 发现或设置rtc.use_external_ip: false并指定rtc.node_ip部分用户通话失败若网络完全封锁 UDP需要额外部署 TURN/TLS 中继服务更多排障细节可参考 examples/dockercompose/README.md。延伸阅读 完整示例说明README.md服务编排compose.yml代理配置Caddyfile配置生成脚本init-env.shNATS 持久化配置nats-server.confLiveKit 配置样例livekit.yaml部署完成后你还可以关闭不需要的功能比如不需要语音通话时直接移除livekit服务按需裁剪出最适合自己的轻量 Chatto 部署方案。【免费下载链接】chattoA fully-featured team and group chat application that you can easily selfhost.项目地址: https://gitcode.com/gh_mirrors/chatt/chatto创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表