feat: prepare sellable source delivery edition

This commit is contained in:
liumangmang
2026-04-16 23:28:26 +08:00
parent f606d20000
commit 37dc4d8216
93 changed files with 7649 additions and 3096 deletions

173
README.md
View File

@@ -1,15 +1,19 @@
# SSH 管理器
基于 Web 的 SSH 连接管理工具,支持终端与 SFTP 文件传输。技术栈Vue 3、Spring BootJDK 8、JSch、xterm.js。
## 功能
- **认证**本地用户登录JWT
- **连接管理**SSH 连接的增删改查(密码或私钥)
- **Web 终端**:通过 WebSocket + xterm.js 实现实时 SSH 终端
- **SFTP**:文件浏览,支持上传、下载、删除、创建目录
## 环境要求
# SSH 管理器
基于 Web 的 SSH / SFTP 工作区项目,适合源码交付、私有部署和二次开发。技术栈Vue 3、Spring BootJDK 8、JSch、xterm.js。
## 功能
- **认证**本地用户登录JWT
- **账户安全**:默认管理员登录后会提示修改密码
- **连接管理**SSH 连接的增删改查(密码或私钥)
- **Moba 工作区**:统一入口 `/moba`,支持多工作区实例、多标签和终端/SFTP 分屏
- **Web 终端**:通过 WebSocket + xterm.js 实现实时 SSH 终端
- **SFTP**:文件浏览、搜索、隐藏文件切换、上传/下载、远程传输、删除、创建目录
- **批量能力**:批量命令执行、操作日志、传输历史
- **交付辅助**:首次启动引导、关于与交付信息、诊断摘要、备份恢复
## 环境要求
- JDK 8+
- Node.js 18+
@@ -36,19 +40,123 @@ npm install
npm run dev
```
前端运行在 http://localhost:5173API 与 WebSocket 会代理到后端)
前端运行在 http://localhost:5173API 与 WebSocket 会代理到后端)
默认登录后进入 `/moba` 工作区。历史路径 `/connections``/terminal` 会跳转到 `/moba`;带连接 ID 的旧深链接 `/terminal/:id``/sftp/:id` 会先打开对应工作区,再进入 `/moba`
`/moba` 中,点击左侧连接会创建新的工作区实例;同一连接可重复打开多个实例。
## 交付形态
当前仓库支持两种交付方向:
- 源码仓库版:适合会自己部署、要二开的买家
- Windows 安装版:适合普通买家,安装后双击快捷方式即可使用
## 源码交付建议
如果你按源码版本售卖,建议交付时至少包含:
- 当前仓库源码
- `README.md` 或独立部署文档
- Docker 启动方式
- 默认账号与修改密码说明
- 环境变量说明
- 备份导入导出示例
- 售后排查时用到的诊断摘要入口说明
源码版当前不依赖授权码,买家拿到后可自行部署、二开和迁移环境。
## Windows 安装版
Windows 成品版仍然是本地 Web 应用,但可封装为安装包:
- 安装程序:`Setup.exe`
- 安装目录:`C:\Program Files\SSH Manager\`
- 数据目录:`%LOCALAPPDATA%\SSHManager\data`
- 日志目录:`%LOCALAPPDATA%\SSHManager\logs`
安装后双击快捷方式会:
- 自动检测程序是否已启动
- 首次生成本地密钥
- 后台启动内置 jar
- 自动打开浏览器到 `http://127.0.0.1:48080`
## 启动方式
### Windows 本地验证
- 先准备 Java 8+
- 构建后可直接运行:
- `scripts/windows/start-local.bat`
- 本地打包验证:
- `scripts/release/build-local-package.bat`
脚本会自动:
- 创建 `runtime/``data/`
- 首次生成本地密钥
- 启动后端 jar
### Windows 安装版构建
先准备:
- Node.js 18+
- Maven 3.6+
- Inno Setup
- 一个已解压的 Windows JRE 目录,并设置环境变量 `SSH_MANAGER_WINDOWS_JRE_DIR`
- 发布版本号取自 `backend/pom.xml``<version>`
建议先执行预检:
```bat
scripts\release\check-windows-release.bat
```
执行:
```bat
scripts\release\build-windows-installer.bat
```
脚本会自动:
- 构建前端
-`embed-frontend-dist` profile 打包后端
- 组装 `release/windows-app/`
- 如检测到 `ISCC.exe`,生成 `release/windows-installer/SSHManager-Setup-*.exe`
- 自动带上安装器图标和买家 / 售后说明文档
### Docker 版
- Windows 一键启动验证:
- `scripts/windows/start-docker.bat`
- 停止:
- `scripts/windows/stop-docker.bat`
更完整的交付说明见:
- `docs/delivery-guide.md`
### 生产构建
```bash
#
cd backend && mvn package
#
cd frontend && npm run build
```
`frontend/dist` 目录内容复制到后端的静态资源目录,或单独部署前端。
### 生产构建
```bash
#
cd frontend && npm run build
#
cd backend && mvn -Pembed-frontend-dist package
```
## 验证建议
- 前端改动后至少运行:
```bash
cd frontend
npm run build
```
- Moba 工作区相关回归项见:
- `docs/moba-regression-checklist.md`
## 项目结构
@@ -76,12 +184,19 @@ ssh-manager/
- `sshmanager.encryption-key`:用于加密连接密码的 Base64 32 字节密钥
- `sshmanager.jwt-secret`JWT 签名密钥
- `spring.datasource.url`H2 数据库路径(默认:`./data/sshmanager`
- `spring.datasource.url`H2 数据库路径(默认:`${DATA_DIR:/app/data}/sshmanager`
### 环境变量
- `SSHMANAGER_ENCRYPTION_KEY`:覆盖加密密钥
- `SSHMANAGER_JWT_SECRET`:覆盖 JWT 密钥
### 环境变量
- `SSHMANAGER_ENCRYPTION_KEY`:覆盖加密密钥
- `SSHMANAGER_JWT_SECRET`:覆盖 JWT 密钥
- `DATA_DIR`:数据目录(默认 `/app/data`Docker 下应保持卷挂载)
### Docker 持久化说明
- 默认通过 `make up` / `make restart` 运行,数据存放在 `app-data` 命名卷。
- `make down` 仅停止并移除容器,不删除卷数据。
- 不要使用 `docker compose ... down -v`,该命令会删除卷并导致数据丢失。
## 安全说明