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 部署说明。
获取项目
解压 H5 源码包到项目目录
源码包内容:
siyouge-mini-web/:H5 前端工程(Vue 3 + Vite)siyouge-mini-server/:Java 8 服务端源码
前端构建
前端工程当前说明使用 Node.js 20.12.2 与 npm 10.5.0。进入项目并安装依赖:
cd siyouge-mini-web
npm install
修改根目录 .env:
VITE_HTTP_URL=https://mini-api.example.com
VITE_WS_URL=wss://mini-ws.example.com
本地开发与生产构建:
npm run dev
npm run build
构建产物位于 dist/。可以把其中内容部署到 Nginx、Caddy、对象存储静态站点或源码包自带 Dockerfile 构建的镜像。若前端使用 history 路由,Web 服务器需要把未知路径回退到 index.html。
数据库准备
创建 MySQL 数据库和独立账号,字符集使用 utf8mb4:
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:
cd siyouge-mini-server
.\mvnw.cmd spring-boot:run
Linux/macOS:
cd siyouge-mini-server
./mvnw spring-boot:run
打包并运行 JAR:
./mvnw clean package -DskipTests
java -jar target/*.jar
旧版部署默认涉及 9200(HTTP)与 9100(WebSocket)两个端口;请以当前 application.yml 的实际配置为准,并让前端 .env 与其一致。
Docker Compose
源码包两个工程都包含容器部署相关文件,服务端还提供 deploy/compose。部署前先阅读并修改 Compose 目录中的环境变量、数据库口令、端口、卷和镜像标签:
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 头:
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。