Files
ColdBreeze-deploy-docs/vocechat-deploy.md
T

4.8 KiB
Raw Blame History

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 管理后台 → 设置 → videoLiveKit):

字段
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 一致