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)。
这个提交包含在:
lyizai
2026-09-28 20:45:08 +08:00
父节点 0cd65cf9be
当前提交 8d1b8d5122
共修改 6 个文件,包含 495 行新增和 7 行删除
+26
查看文件
@@ -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 会在运行时出问题。