Files
alibaba/docs/superpowers/plans/2026-08-25-server-reinstall-backup.md
T
2026-08-27 16:12:37 +08:00

6.0 KiB

服务器重装备份方案(alibb 项目)

2026-08-25。服务器 219.157.255.213(kt-W580G20)需要重装系统。 范围:只备 alibb(后端 + 前端 + alibaba 库 + 站点配置);服务器上其他业务(1Panel 全家桶、邮件、小红书等)与本备份无关。 备份落盘:本机 D:\alibb-server\backups\alibb-backup-20260825\(D 盘重装不受影响)。

一、备份内容(已完成 ✅)

服务器端打包于 ~/alibb-backup-20260825,已 scp 拉回本机 D:\alibb-server\backups\,SHA256 全部校验通过。

文件 大小 内容
alibaba-db.sql 25M alibaba 库全量 dump(--single-transaction --no-tablespaces):chat_messages 61872 行、customers 14794 行、inquiries 13570 行、users、_prisma_migrations
alibb-server-code.tgz 998K ~/alibb-server 代码(backend+frontend),docker-compose.yml 内含生产密钥(JWT_SECRET/INGEST_TOKEN/ADMIN_PASSWORD)
alibb-secrets.txt 296B 生产密钥明文
alibb-site.conf 750B OpenResty 站点 conf:listen 23010、/api → http://backend:8080、SPA fallback、client_max_body_size 50m
alibb-frontend-dist.tgz 811K 1Panel 站点目录(前端 dist;可由代码重 build,备作保险)
alibb-backend-inspect.json 11K 容器完整配置快照(env/网络/挂载)
RESTORE-NOTES.md — 恢复要点:MySQL 授权重建、网络别名、密钥清单

dump 完整性:文件尾 -- Dump completed on 2026-08-25 14:14:01,5 张 CREATE TABLE 齐全。

二、关键事实(重装前记牢)

  1. 密钥全部沿用备包里的值 → 重装后扩展的 serverUrl + INGEST_TOKEN 不用改,老数据 JWT 也不失效。
  2. mysqldump 不含用户授权 → 重装后必须手工执行(见 RESTORE-NOTES.md):
    CREATE USER 'alibaba'@'%' IDENTIFIED BY 'wecbni5zRRnZrMMh';
    GRANT ALL PRIVILEGES ON `alibaba`.* TO 'alibaba'@'%' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    
  3. backend 加入 external 网络 1panel-network(1Panel 装好后自动存在),容器别名 alibb-backend/backend——OpenResty 反代按容器名 backend 寻址,别名丢了 /api 就 502。
  4. 端口映射是 127.0.0.1:8090:8080(宿主 8090,比 7 月部署文档写的 8080 新,以备包为准)。
  5. 1Panel 的 MySQL root 密码重装后会变(装 1Panel 时新设),与业务无关;业务只依赖上面的 alibaba 账号。

三、恢复步骤(新系统从零)

1. 基础环境

# Ubuntu 24.04 + Docker(官方脚本)+ 1Panel(官方安装脚本,装时设新的面板/MySQL root 密码)
# 1Panel 应用商店装:OpenResty、MySQL 8.x
# 云安全组放行:23010/tcp(以及 1Panel 面板端口)

2. 恢复代码

# 本机推备包上去(Windows OpenSSH)
/c/Windows/System32/OpenSSH/scp.exe -i 'C:\Users\30997\.ssh\alibb_deploy' -r 'D:\alibb-server\backups\alibb-backup-20260825' kt@219.157.255.213:~/
ssh 上去:
tar xzf ~/alibb-backup-20260825/alibb-server-code.tgz -C ~   # → ~/alibb-server,compose 已是生产值,勿再跑 sed

3. 恢复数据库

# 建库 + 授权 + 导入(注意库名 alibaba 与用户名 alibaba 同名)
sudo docker exec -i 1Panel-mysql-<新后缀> mysql -uroot -p'<新root密码>' <<'SQL'
CREATE DATABASE alibaba CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'alibaba'@'%' IDENTIFIED BY 'wecbni5zRRnZrMMh';
GRANT ALL PRIVILEGES ON `alibaba`.* TO 'alibaba'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
SQL
sudo docker exec -i 1Panel-mysql-<新后缀> mysql -uroot -p'<新root密码>' alibaba < ~/alibb-backup-20260825/alibaba-db.sql

4. 起后端

cd ~/alibb-server/backend
sudo docker compose build backend && sudo docker compose up -d   # migrate 自动跑(应显示全部 already applied)

注意:compose 里 networks 声明 1panel-network external——1Panel 装好后已存在,无需改。

5. 站点 + 前端

  • 1Panel 面板建网站「alibb」:域名/IP 219.157.255.213,端口 23010,根目录默认站点 index
  • 直接用备份 conf:把 alibb-site.conf 内容对到 /opt/1panel/apps/openresty/openresty/conf/conf.d/alibb.conf(经面板配伪静态+反代等价),面板里重载 OpenResty
  • 前端二选一:解包 alibb-frontend-dist.tgz 复制进站点目录;或 ~/alibb-server/frontend 里 docker node build 后复制(同 7 月文档 Step 4)

6. 验证

curl http://219.157.255.213:23010/           # 200
curl http://219.157.255.213:23010/api/health # {"ok":true}

浏览器登录 admin / ADMIN_PASSWORD(alibb-secrets.txt),确认询盘/客户/聊天记录数量与备份时一致(询盘 13570 / 客户 14794 / 消息 61872)。

7. 扩展侧

无需改配置(serverUrl http://219.157.255.213:23010 + 原 token 均不变)。Chrome 里点一次「测试连接」确认,再恢复日常抓取。

四、重装前 Checklist

  • 服务器备包完成并拉回本机,SHA256 校验通过
  • MySQL 授权语句已记录(RESTORE-NOTES.md)
  • 再拷一份 D:\alibb-server\backups\ 到外接硬盘或网盘(D 盘虽不动,双保险,防重装误格全盘)
  • 重装窗口内停止扩展抓取(推送会失败;若误抓,数据在本地,恢复后可重推;被风控的会话除外)
  • 本机 d:\alibb-server\backend 有未提交改动(schema.prisma / ingest.service.ts / 新 migration)——与本次备份无关,但建议提交或至少保留现状
  • 重装方式无要求:恢复完全依赖本机 D 盘备份,服务器彻底重置也可接受(其他业务数据是否保留与 alibb 无关)

五、风险与说明

  • 备份截止 2026-08-25 14:14。之后新增的询盘/抓取数据不在 dump 里;重装前若又抓了数据,可重新导一次(命令见下)。
  • 服务器备包副本留在 kt@219.157.255.213:~/alibb-backup-20260825/,若重装保留 /home 可顺带幸存(不依赖)。
  • 增量重导命令:
    ssh … 'sudo docker exec -e MYSQL_PWD=wecbni5zRRnZrMMh 1Panel-mysql-sLiG mysqldump -ualibaba --single-transaction --no-tablespaces --routines --triggers --databases alibaba' > D:\alibb-server\backups\alibaba-db-final.sql