# VoceChat 部署指南 ## 概述 VoceChat 是轻量级的私有聊天服务器,支持文字聊天、语音/视频通话、文件传输等功能。 本文档将 VoceChat 部署在 NAS 上,LiveKit 部署在 VPS 上,通过公网 WSS 连接。 ## 架构 ``` 浏览器 ←→ VoceChat (NAS:3009) -- 聊天、管理、生成 LiveKit token 浏览器 ←→ LiveKit (VPS) -- 语音、视频、屏幕共享 ``` ## 前置条件 - NAS 或 Linux 服务器 - Docker + Docker Compose - Rust 工具链(编译服务端,可选) ## 快速部署 ### 1. 准备目录 ```bash mkdir -p /vol1/docker/coldbreeze/server-rust/deploy cd /vol1/docker/coldbreeze/server-rust ``` ### 2. 编译服务端(可选,如有预编译二进制可跳过) ```bash # 需要安装 Rust curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source ~/.cargo/env # 编译 cargo build --release cp target/release/vocechat-server . ``` ### 3. 创建 `deploy/docker-compose.yaml` ```yaml services: vocechat-server: build: context: .. dockerfile: deploy/Dockerfile container_name: coldbreeze-server restart: unless-stopped volumes: - vocechat_data:/home/vocechat-server/data - /vol1/docker/coldbreeze/web-client:/home/vocechat-server/data/wwwroot:ro ports: - "3009:3000" # Web 客户端 + API volumes: vocechat_data: ``` ### 4. 创建 `deploy/Dockerfile` ```dockerfile # Stage 1: Build FROM rust:1.82-bookworm AS builder WORKDIR /src COPY Cargo.toml Cargo.lock ./ COPY src ./src COPY crates ./crates COPY migrations ./migrations COPY cert ./cert RUN cargo build --release && strip target/release/vocechat-server # Stage 2: Runtime FROM debian:bookworm-slim RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates && rm -rf /var/lib/apt/lists/* COPY --from=builder /src/target/release/vocechat-server /home/vocechat-server/vocechat-server COPY config /home/vocechat-server/config EXPOSE 3000 WORKDIR /home/vocechat-server CMD ["./vocechat-server"] ``` ### 5. 准备 Web 客户端 ```bash # 从本地构建目录上传 scp -r build/ user@nas:/vol1/docker/coldbreeze/web-client/ ``` ### 6. 启动服务 ```bash cd deploy docker compose up -d ``` ### 7. 初始化 浏览器访问 `http://:3009`,完成管理员注册。 ## LiveKit 配置 在 VoceChat 管理后台 → 设置 → video(LiveKit): | 字段 | 值 | |------|-----| | Enable | ✅ | | LiveKit URL | `wss://livekit.binbim.top` | | API Key | 与 VPS LiveKit 一致 | | API Secret | 与 VPS LiveKit 一致 | ## HTTPS 访问 如果需要通过 HTTPS 访问(如从公网),可以使用 Caddy 做反向代理: ### 1. 更新 `deploy/docker-compose.yaml` ```yaml services: vocechat-server: build: context: .. dockerfile: deploy/Dockerfile container_name: coldbreeze-server restart: unless-stopped volumes: - vocechat_data:/home/vocechat-server/data - /vol1/docker/coldbreeze/web-client:/home/vocechat-server/data/wwwroot:ro expose: - "3000" caddy: image: caddy:2-alpine container_name: coldbreeze-caddy restart: unless-stopped volumes: - ./Caddyfile:/etc/caddy/Caddyfile:ro - /vol1/docker/coldbreeze/certs:/certs:ro - caddy_data:/data ports: - "4443:4443" depends_on: - vocechat-server volumes: vocechat_data: caddy_data: ``` ### 2. 创建 `deploy/Caddyfile` ``` { auto_https off } :4443 { tls /certs/vocechat/cert.pem /certs/vocechat/key.pem reverse_proxy vocechat-server:3000 } ``` ### 3. 启动 ```bash docker compose up -d ``` ## 端口说明 | 端口 | 协议 | 用途 | |------|------|------| | 3009 | TCP | HTTP 访问(内网) | | 4443 | TCP/UDP | HTTPS 访问(公网) | ## LiveKit API Key/Secret VoceChat 和 LiveKit 使用相同的 API Key/Secret 进行 JWT 签名验证。 在 VoceChat 管理后台配置的值必须与 VPS 上 `livekit.yaml` 中的 `keys` 完全一致。 生成方法: ```bash docker run --rm livekit/livekit-server generate-keys ``` ## 数据持久化 VoceChat 数据存储在 Docker volume `vocechat_data` 中,包含: - SQLite 数据库 - 用户头像 - 上传的文件 - 消息数据库 备份方法: ```bash docker run --rm -v deploy_vocechat_data:/data -v /backup:/backup alpine tar czf /backup/vocechat-backup.tar.gz -C /data . ``` ## 常用命令 ```bash # 查看日志 docker compose logs -f vocechat-server # 重启 docker compose restart vocechat-server # 更新 Web 客户端后重启 docker compose restart vocechat-server ``` ## 注意事项 - Web 客户端需要单独构建(pnpm 构建) - 建议在本机临时目录构建 Web 客户端,避免网络盘问题 - 构建时需要设置 `REACT_APP_RELEASE=true` 以启用 HTTPS 兼容模式 - LiveKit API Key/Secret 必须与 VPS LiveKit 一致