feat(web): 移除 Docker 与反代部署,改为 Linux 业务服务并自带管理端托管

需求变更:Web 端只保留业务需求,反向代理交由另外的服务处理,
本项目仅提供 IIS / nginx 反代说明文档,不部署反代。

主要改动:
- web-server: 新增管理端静态托管(ADMIN_DIR、SPA 深链接回退),
  反代因此只需一条全匹配转发规则;新增 adminDir 配置项
- deploy/install.sh: 删除 nginx 安装与站点配置逻辑,改为原生 Linux
  服务部署(systemd → OpenRC → SysVinit → 后台进程四级降级),
  打印反代交接指引
- deploy/ctl.sh: 启停/状态/日志脚本
- deploy/proxy/: 新增反代说明文档(README.md、nginx.conf.example、
  web.config.example),标注上传上限与超时必须同步调整
- 删除 deploy/nginx/、web-server/admin/nginx.conf、Dockerfile、
  docker-compose.yml、.dockerignore
- scripts/package-release.sh: 锚定排除规则 + 产物完整性校验
- 文档同步:README.txt、DSH.md、project.yaml、tasks/008、tasks/010
This commit is contained in:
2026-09-15 01:25:19 +08:00
parent 653d9d168c
commit 8c76b0a599
17 changed files with 581 additions and 244 deletions
+42 -21
View File
@@ -9,18 +9,29 @@ OpenDance Studio —— Web 管理服务端 v0.1.0 使用说明
连接信息通过 .env 注入。
----------------------------------------------------------------
一、部署到 Linux 服务器(原生站点,不使用 Docker)
一、部署到 Linux 服务器(业务服务,不含反向代理)
----------------------------------------------------------------
部署形态:一个 nginx 站点同时提供管理端页面与 API。
Node 进程由 systemd 托管,只监听 127.0.0.1,外部只能经 nginx 访问。
职责边界
本端**只提供业务服务**:NestJS API + 管理端页面。
**反向代理由另外的服务/团队负责**,本项目不安装、不配置任何反代软件,
只在 deploy/proxy/ 下提供 IIS 与 nginx 的配置说明文档。
部署形态
Node 业务服务由系统服务托管,同时提供:
/ 管理端页面(本服务自带,含 SPA 深链接回退)
/api/ REST API
/health 健康检查
/static/ 上传文件
/contracts/ 契约快照
因为静态页面也由本服务提供,反向代理**只需一条全匹配转发规则**。
前置要求
- Linux 服务器,有 root 权限(不需要 sudo,直接以 root 执行即可)
- Node.js 22 或更高版本
- nginx(未安装时脚本会跳过站点配置并给出提示)
- 进程管理:systemd / OpenRC / SysVinit 均可;**三者都没有也能装**
(自动降级为 nohup 后台进程 + PID 文件 + crontab @reboot 开机自启)
- 反向代理:由另外的服务提供,本项目不要求、也不安装
- 一个可连通的现有 MySQL / MariaDB 实例,并已创建数据库与账号:
CREATE DATABASE IF NOT EXISTS dpendance
@@ -40,24 +51,29 @@ Node 进程由 systemd 托管,只监听 127.0.0.1,外部只能经 nginx 访
sudo bash deploy/install.sh
脚本会依次:
校验环境与 .env → 创建服务用户与目录 → 安装运行期依赖 →
执行 TypeORM 迁移 → 注册并启动 systemd 服务 → 等待健康检查 →
配置 nginx 站点并重载
校验环境与 .env → 创建服务用户与目录 → 复制程序文件 →
安装运行期依赖 → 执行 TypeORM 迁移 →
注册并启动系统服务(systemd / OpenRC / SysVinit / 后台进程)→ 等待健康检查
部署完成后(<host> 为服务器 IP)
管理端首页: http://<host>/
API 前缀: http://<host>/api
健康检查: http://<host>/health
契约快照: http://<host>/contracts/
部署完成后(直接访问后端端口,<host> 为服务器 IP)
管理端首页: http://<host>:3000/
API 前缀: http://<host>:3000/api
健康检查: http://<host>:3000/health
契约快照: http://<host>:3000/contracts/
对外访问
由反向代理把请求转发到 http://<后端地址>:3000 即可。
配置样例与说明:
deploy/proxy/nginx.conf.example nginx 站点配置
deploy/proxy/web.config.example IIS(ARR + URL Rewrite)配置
deploy/proxy/README.md 完整说明、自检清单与常见故障
可覆盖的安装参数
APP_DIR=/opt/opendance 程序目录
SERVICE_USER=opendance 运行服务的系统用户
STORAGE_DIR=/var/lib/opendance/storage 上传文件目录
SERVER_NAME=example.com nginx server_name
SKIP_NGINX=1 只装 API 服务,不配置 nginx
例:sudo SERVER_NAME=dance.example.com bash deploy/install.sh
例:APP_DIR=/srv/opendance bash deploy/install.sh
升级
解压新版本后重新执行 sudo bash deploy/install.sh 即可(会覆盖程序文件,
@@ -85,8 +101,7 @@ Node 进程由 systemd 托管,只监听 127.0.0.1,外部只能经 nginx 访
无 init 系统(降级模式):
bash /opt/opendance/deploy/ctl.sh status | restart | logs
nginx 配置校验:
nginx -t && (systemctl reload nginx || rc-service nginx reload || nginx -s reload)
反代配置:不在本机,无需在此维护
----------------------------------------------------------------
二、本地开发
@@ -131,9 +146,14 @@ Node 进程由 systemd 托管,只监听 127.0.0.1,外部只能经 nginx 访
DB_LOGGING 是否打印 SQL(默认 false)
PORT API 监听端口(默认 3000)
HOST API 监听地址(原生部署用 127.0.0.1,仅由 nginx 反代访问)
HOST 监听地址。反代与后端同机用 127.0.0.1(推荐);
反代在别的机器用 0.0.0.0,并用防火墙限制来源
ADMIN_DIR 管理端静态站点目录(默认 ../admin,即 /opt/opendance/admin)
STORAGE_DIR 上传文件存储目录(原生部署默认 /var/lib/opendance/storage)
UPLOAD_MAX_BYTES 单文件上限,默认 536870912(512 MiB)
UPLOAD_MAX_BYTES 单文件上限,默认 536870912(512 MiB)。
★ 反向代理层的同名限制必须不小于此值,否则大模型上传
会在代理层被拒(nginx client_max_body_size /
IIS requestLimits),详见 deploy/proxy/README.md
ASSIMP_BIN 可选:Assimp 可执行文件,FBX/glTF 动作预处理需要
CONTRACTS_DIR 可选:契约目录,设置后 /health 反映实时契约版本
(原生部署默认指向 /opt/opendance/contracts)
@@ -177,7 +197,8 @@ Node 进程由 systemd 托管,只监听 127.0.0.1,外部只能经 nginx 访
contracts/ 跨端契约(权威,改接口先改这里)
web-server/ NestJS 服务端源码
web-server/admin/ React 管理端
deploy/ Linux 原生站点部署(nginx + systemd,不含 MySQL)
deploy/ 业务服务部署(系统服务,不含 MySQL、不含反向代理)
deploy/proxy/ 反向代理配置说明(nginx / IIS,仅供参考不部署)
THIRD_PARTY.md 第三方开源项目声明
----------------------------------------------------------------
@@ -186,7 +207,7 @@ Node 进程由 systemd 托管,只监听 127.0.0.1,外部只能经 nginx 访
1. .env 已被 .gitignore 忽略,禁止提交;仓库中只保留 .env.example。
2. 数据库账号使用最小权限,不授予 GRANT OPTION / FILE / SUPER。
3. 本版本未内置管理端登录认证,请部署在内网,或在 nginx 层加 Basic Auth / SSO。
3. 本版本未内置管理端登录认证,请部署在内网,或在反向代理层加 Basic Auth / SSO。
4. 上传的模型与动作必须填写来源五元组并通过审核后才对客户端可见。
5. 未使用 SMPL 拓扑,统一 MediaPipe 33 点,规避非商用许可限制。