文档中心 / H5 客户端部署

H5 客户端部署

Siyouge Mini 本身不使用 Go。它是一套独立的轻量聊天室:前端工程为 siyouge-mini-web(Vue 3 + Vite),服务端源码包为 siyouge-mini-server,后端完全基于 Java 8、Spring Boot 2.6.7、Netty 与 MySQL。私有阁主线版本基于 Node.js 服务端与多端原生客户端,与 Mini 的运行和部署无关。本页迁移并整理了旧版 Mini 部署说明。

获取项目

bash
解压 H5 源码包到项目目录

源码包内容:

  • siyouge-mini-web/:H5 前端工程(Vue 3 + Vite)
  • siyouge-mini-server/:Java 8 服务端源码

前端构建

前端工程当前说明使用 Node.js 20.12.2 与 npm 10.5.0。进入项目并安装依赖:

bash
cd siyouge-mini-web
npm install

修改根目录 .env:

dotenv
VITE_HTTP_URL=https://mini-api.example.com
VITE_WS_URL=wss://mini-ws.example.com

本地开发与生产构建:

bash
npm run dev
npm run build

构建产物位于 dist/。可以把其中内容部署到 Nginx、Caddy、对象存储静态站点或源码包自带 Dockerfile 构建的镜像。若前端使用 history 路由,Web 服务器需要把未知路径回退到 index.html。

数据库准备

创建 MySQL 数据库和独立账号,字符集使用 utf8mb4:

sql
CREATE DATABASE siyouge CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'siyouge'@'%' IDENTIFIED BY 'replace-with-a-strong-password';
GRANT ALL PRIVILEGES ON siyouge.* TO 'siyouge'@'%';
FLUSH PRIVILEGES;

生产环境应限制账号来源地址,不要直接照搬 %;示例只用于说明所需权限。

服务端运行

服务端要求 Java 8。工程包含 Maven Wrapper,优先使用它来避免本机 Maven 版本差异。

修改 siyouge-mini-server/src/main/resources/application.yml 中的数据库地址、用户名和密码,并检查 HTTP、WebSocket 端口及其他环境配置。不要将生产口令泄露给他人。

Windows:

powershell
cd siyouge-mini-server
.\mvnw.cmd spring-boot:run

Linux/macOS:

bash
cd siyouge-mini-server
./mvnw spring-boot:run

打包并运行 JAR:

bash
./mvnw clean package -DskipTests
java -jar target/*.jar

旧版部署默认涉及 9200(HTTP)与 9100(WebSocket)两个端口;请以当前 application.yml 的实际配置为准,并让前端 .env 与其一致。

Docker Compose

源码包两个工程都包含容器部署相关文件,服务端还提供 deploy/compose。部署前先阅读并修改 Compose 目录中的环境变量、数据库口令、端口、卷和镜像标签:

bash
cd siyouge-mini-server/deploy/compose
docker compose config
docker compose up -d
docker compose logs -f

不要把第三方教程中的旧镜像名或 latest 标签当作长期稳定接口。生产环境应固定经过验证的版本或镜像摘要,并保留数据库卷。

反向代理

推荐通过同一 HTTPS 站点提供前端,再分别代理 HTTP 与 WebSocket 服务。WebSocket location 必须使用 HTTP/1.1 并传递 Upgrade 头:

nginx
location /api/ {
    proxy_pass http://127.0.0.1:9200/;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

location /socket/ {
    proxy_pass http://127.0.0.1:9100/;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

代理路径是否需要保留或移除前缀取决于当前 Mini 路由配置。上线前在浏览器网络面板确认 HTTP 状态码和 WebSocket 101 Switching Protocols。

验收清单

1. 前端刷新任意页面不会返回 404。

2. 注册、登录和历史消息能够正常读写 MySQL。

3. WebSocket 成功升级并能双向收发消息。

4. 容器或进程重启后数据库数据仍然存在。

5. HTTPS 页面只连接 HTTPS/WSS,不出现 mixed content。