4.8 KiB
4.8 KiB
VoceChat 部署指南
概述
VoceChat 是轻量级的私有聊天服务器,支持文字聊天、语音/视频通话、文件传输等功能。
本文档将 VoceChat 部署在 NAS 上,LiveKit 部署在 VPS 上,通过公网 WSS 连接。
架构
浏览器 ←→ VoceChat (NAS:3009) -- 聊天、管理、生成 LiveKit token
浏览器 ←→ LiveKit (VPS) -- 语音、视频、屏幕共享
前置条件
- NAS 或 Linux 服务器
- Docker + Docker Compose
- Rust 工具链(编译服务端,可选)
快速部署
1. 准备目录
mkdir -p /vol1/docker/coldbreeze/server-rust/deploy
cd /vol1/docker/coldbreeze/server-rust
2. 编译服务端(可选,如有预编译二进制可跳过)
# 需要安装 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
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
# 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 客户端
# 从本地构建目录上传
scp -r build/ user@nas:/vol1/docker/coldbreeze/web-client/
6. 启动服务
cd deploy
docker compose up -d
7. 初始化
浏览器访问 http://<NAS_IP>: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
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. 启动
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 完全一致。
生成方法:
docker run --rm livekit/livekit-server generate-keys
数据持久化
VoceChat 数据存储在 Docker volume vocechat_data 中,包含:
- SQLite 数据库
- 用户头像
- 上传的文件
- 消息数据库
备份方法:
docker run --rm -v deploy_vocechat_data:/data -v /backup:/backup alpine tar czf /backup/vocechat-backup.tar.gz -C /data .
常用命令
# 查看日志
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 一致