docs: 部署方法固化进仓库(一键部署脚本 + 完整运维文档)
之前部署用的 SSH 助手放在系统临时目录里,重启就丢了,下一位接手时根本拿不到。 现在把它搬进仓库并补齐文档: 新增 - scripts/ssh-helper.js:SSH 执行与 SFTP 上传。Windows 自带 OpenSSH 但没有 sshpass/plink,无法非交互传密码,所以用 ssh2 直接实现协议层。 凭据全部走环境变量(SSH_HOST/SSH_PORT/SSH_USER/SSH_PASS),脚本里不含任何密钥; ssh2 是 devDependencies,未安装时提示安装而不是裸崩 - scripts/deploy.js:一键部署 —— 打包 → 上传 → 远程执行 update.sh → 轮询确认控制台返回 200,任一步失败都明确报错。可选 DEPLOY_APP / DEPLOY_PORT - npm scripts:deploy、ssh 文档 - TODO.md 新增「部署方法」章节:一键部署与手动部署两种步骤、辅助脚本说明、 update.sh 的行为、pm2 与日志的常用运维命令(含回滚)、服务器上关键文件清单、 新增环境变量时的三件事(.env 真实值 + .env.example 占位符 + 确认 gitignore) - README「部署到服务器」开头加一键更新说明,并指向 TODO.md 的完整章节 - 顺带提醒旧版 Fabric 模组源码在临时目录里会被清理,接手后建议先备份 测试 368 全绿;一键部署已实跑验证(4/4 校验通过,控制台 200 OK)。
这个提交包含在:
@@ -249,6 +249,32 @@ V2 的接口级配额很小(末影龙只有 **1 次/分钟**),因此 V2
|
||||
|
||||
本项目已在 Debian 12 上以 pm2 常驻运行验证过,关键点:
|
||||
|
||||
### 0. 一键更新(已装好之后日常用这个)
|
||||
|
||||
```powershell
|
||||
# Windows PowerShell —— 凭据走环境变量,脚本里不写死密码
|
||||
$env:SSH_HOST='103.236.99.177'; $env:SSH_PORT='33851'
|
||||
$env:SSH_USER='root'; $env:SSH_PASS='<服务器密码>'
|
||||
npm run deploy
|
||||
```
|
||||
|
||||
```bash
|
||||
# Linux / macOS
|
||||
SSH_HOST=... SSH_PORT=... SSH_USER=... SSH_PASS='<密码>' npm run deploy
|
||||
```
|
||||
|
||||
`scripts/deploy.js` 会依次做:打包 → 上传 → 远程执行 `update.sh` →
|
||||
轮询确认控制台返回 200,任一步失败都会明确报错。
|
||||
需要单条远程命令时用 `node scripts/ssh-helper.js exec "<命令>"`。
|
||||
|
||||
两个脚本用 `ssh2` 实现(Windows 自带 OpenSSH 但没有 sshpass,
|
||||
无法非交互传密码);`ssh2` 是 devDependencies,未安装时脚本会提示而不是裸崩。
|
||||
|
||||
打包和更新都会**排除并保留**服务器上的 `.env`、`data/`、`node_modules/`、`runtime/`,
|
||||
不会用你本机的空配置覆盖线上真实数据。
|
||||
|
||||
更多运维命令(回滚、日志路径、服务器上各文件的作用)见 `TODO.md` 的「部署方法」一节。
|
||||
|
||||
### 1. Node.js 版本要求 ≥ 22
|
||||
|
||||
`mineflayer 4.39` 的 `engines` 声明为 `>=22`,用 Node 18 会在运行时出问题。
|
||||
|
||||
在新工单中引用
屏蔽一个用户