# wangluo.asia 服务器迁移手册

场景:阿里云 → 阿里云,不同地域(IP 会变,需改 DNS)
日期:2026-08-23

## 迁移范围

| 迁移 | 不迁移 |
|---|---|
| caddy、xray、cloudflared、alist、aria2、upload-server、acme.sh、fail2ban | aegis / aliyun assist / hbrclient(新机自装)、8445 管理面板(已弃用) |

## 0. 新机准备(阿里云控制台)

- 创建 ECS,x86_64,推荐 Alibaba Cloud Linux 3 或 Anolis 8
- 安全组入方向放行:22、80、443(8445 不再需要)
- 记录新机公网 IP

## 1. 旧机打包

```bash
# 必须先停服务(sqlite / session 文件运行中拷会损坏)
systemctl stop alist aria2 cloudflared xray caddy

tar czf /root/migration.tar.gz \
  /etc/caddy /etc/aria2 /etc/cloudflared \
  /etc/fail2ban/jail.local /etc/fail2ban/jail.d \
  /usr/local/bin/upload-server.py \
  /usr/local/etc/xray \
  /var/www \
  /var/lib/aria2 \
  /opt/alist/data \
  /root/.cloudflared \
  /root/.acme.sh \
  /root/data \
  /etc/systemd/system/caddy.service \
  /etc/systemd/system/alist.service \
  /etc/systemd/system/aria2.service \
  /etc/systemd/system/cloudflared.service \
  /etc/systemd/system/xray.service \
  /etc/systemd/system/upload-server.service \
  2>/dev/null

scp /root/migration.tar.gz root@<新机IP>:/root/
```

## 2. 新机安装

```bash
dnf update -y && dnf install -y aria2 fail2ban python3

# caddy(dnf 源,或官网二进制均可)
dnf install -y 'dnf-command(copr)'
dnf copr enable @caddy/caddy -y && dnf install -y caddy

# xray(官方安装脚本)
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install

# alist(官方脚本,装到 /opt/alist)
curl -fsSL "https://alist.nn.ci/v3.sh" | bash

# cloudflared(官方 release 二进制)
curl -L -o /usr/local/bin/cloudflared \
  https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64
chmod +x /usr/local/bin/cloudflared

# 解包(路径与旧机一致,unit 文件放回 /etc/systemd/system)
tar xzf /root/migration.tar.gz -C /
systemctl daemon-reload
systemctl enable --now caddy alist aria2 xray cloudflared upload-server
```

## 3. Caddyfile 微调(新机上)

删除已弃用的面板段(反代的 20520 服务已不存在):

```bash
vim /etc/caddy/Caddyfile   # 删掉 panel.wangluo.asia:8445 {...} 整段
systemctl reload caddy
```

## 4. DNS 变更(域名服务商)

1. 先把以下记录的 TTL 降到 300 并等待生效
2. 改 A 记录:
   - `xray.wangluo.asia` → 新IP
   - `dl.wangluo.asia` → 新IP
   - `pan.wangluo.asia` → 新IP
   - `panel.wangluo.asia` → **删除记录**(面板已弃用)
3. `ssh.wangluo.asia` 走 Cloudflare 隧道,**与 IP 无关,不用改**

## 5. 切换顺序(减少中断)

1. 旧机:`systemctl stop cloudflared`(ssh 隧道短暂中断)
2. 新机:`systemctl restart cloudflared`(隧道随即恢复)
3. 改 DNS A 记录(见上)
4. 验证(见下),观察 24-48h
5. 旧机:`systemctl disable --now caddy alist aria2 xray cloudflared upload-server`
6. 旧机保留 7 天再释放

## 6. 验证

```bash
# 改 DNS 前先验证新机(不依赖 DNS):
curl -I --resolve xray.wangluo.asia:443:<新机IP> https://xray.wangluo.asia/
curl -I --resolve dl.wangluo.asia:443:<新机IP> https://dl.wangluo.asia/
curl -I --resolve pan.wangluo.asia:443:<新机IP> https://pan.wangluo.asia/
# 上传页:
curl -I --resolve dl.wangluo.asia:443:<新机IP> https://dl.wangluo.asia/upload/

# 隧道:
ssh 通过 ssh.wangluo.asia 登录(应落到新机)

# 代理:
xray 客户端连一次,确认 UUID 未变仍可用
```

## 注意事项

- alist 的 `data.db`、aria2 的 session 文件**拷贝前必须停服务**
- xray 的 UUID 保留 → 客户端配置零改动
- caddy 的 TLS 证书在新 IP 上会自动重新签发,无需手动处理
- `ssh.wangluo.asia` 隧道凭据在两台机同时跑会冲突,**先停旧机再启新机**
- 新机如需阿里云备份,在控制台重新绑定 hbrclient 实例
- 域名注册/解析如果也在阿里云,新机同账号内改解析即可
