PasarGuard
迁移

Marzban 到 PasarGuard

此指南适用于 Marzban 版本 beta-3 及以下。

此指南将帮助您将数据、设置和用户账户从 Marzban 迁移到 PasarGuard,而不会丢失任何内容。

先决条件

⚠️ 重要: 在开始迁移过程之前,请始终备份您的完整数据。

  • 确保您对服务器具有 root 访问权限。
  • 备份您当前的 Marzban 安装。
  • 检查是否安装了 Docker 和 Docker Compose。

迁移步骤

1. 停止 Marzban 服务

首先,停止所有正在运行的 Marzban 容器:

停止服务命令

cd /opt/marzban
docker compose down

2. 重命名主目录

将 Marzban 主目录名称更改为 PasarGuard:

目录重命名命令

sudo mv /opt/marzban /opt/pasarguard

3. 重命名数据目录

同时更改数据目录名称:

数据目录重命名命令

sudo mv /var/lib/marzban /var/lib/pasarguard

4. 重命名 MySQL 目录(如果使用)

如果您使用 MySQL 并且有 Marzban 数据库的专用目录:

MySQL 目录重命名命令

sudo mv /var/lib/mysql/marzban /var/lib/mysql/pasarguard

5. 更新环境变量

转到新的 PasarGuard 目录并更新环境文件:

cd /opt/pasarguard

使用简单命令更新 .env 文件中引用的所有路径:

sudo sed -i 's|/var/lib/marzban|/var/lib/pasarguard|g' .env

如果您使用的是旧版本(0.8.4 或更低),还需要更改 SQL 驱动程序:

SQLite 驱动程序更新

❌ 旧版本

SQLALCHEMY_DATABASE_URL = "sqlite:///db.sqlite3"

✅ 新版本

SQLALCHEMY_DATABASE_URL = "sqlite+aiosqlite:///db.sqlite3"

MySQL 驱动程序更新

❌ 旧版本

SQLALCHEMY_DATABASE_URL = "mysql+pymysql://root:DB_PASSWORD@127.0.0.1/pasarguard"

✅ 新版本

SQLALCHEMY_DATABASE_URL = "mysql+asyncmy://root:DB_PASSWORD@127.0.0.1/pasarguard"

6. 更新 Docker Compose 文件

更新 docker-compose.yml 文件以反映新路径。您需要手动编辑此文件:

sudo nano docker-compose.yml

Docker Compose 更改

以下是显示必要更改的比较:

❌ 之前 (Marzban)

services:
  marzban:
    image: gozargah/marzban:latest
    restart: always
    env_file: .env
    network_mode: host
    volumes:
      - /var/lib/marzban:/var/lib/marzban
    depends_on:
      - mysql

  mysql:
    image: mysql:lts
    restart: always
    env_file: .env
    network_mode: host
    command: --bind-address=127.0.0.1 --mysqlx-bind-address=127.0.0.1 --disable-log-bin
    environment:
      MYSQL_DATABASE: marzban
    volumes:
      - /var/lib/mysql/marzban:/var/lib/mysql

✅ 之后 (PasarGuard)

services:
  pasarguard:
    image: pasarguard/panel:latest
    restart: always
    env_file: .env
    network_mode: host
    volumes:
      - /var/lib/pasarguard:/var/lib/pasarguard
    depends_on:
      - mysql

  mysql:
    image: mysql:lts
    restart: always
    env_file: .env
    network_mode: host
    command: --bind-address=127.0.0.1 --mysqlx-bind-address=127.0.0.1 --disable-log-bin
    environment:
      MYSQL_DATABASE: marzban
    volumes:
      - /var/lib/mysql/pasarguard:/var/lib/mysql

关键更改摘要:

部分之前之后
服务名称marzbanpasarguard
Docker 镜像gozargah/marzban:latestpasarguard/panel:latest
应用卷/var/lib/marzban:/var/lib/marzban/var/lib/pasarguard:/var/lib/pasarguard
MySQL 卷/var/lib/mysql/marzban:/var/lib/mysql/var/lib/mysql/pasarguard:/var/lib/mysql

7. 更新文件权限

确保您对新目录具有必要的权限:

权限更新命令

sudo chown -R $USER:$USER /opt/pasarguard
sudo chmod -R 755 /opt/pasarguard

8. 安装 PasarGuard 管理脚本

安装 PasarGuard 管理脚本以便于管理:

脚本安装命令

sudo bash -c "$(curl -sL https://github.com/PasarGuard/scripts/raw/main/pasarguard.sh)" @ install-script

此脚本为管理您的 PasarGuard 安装提供有用的命令。

9. 启动 PasarGuard

现在使用新配置启动 PasarGuard:

启动命令

pasarguard up

10. 验证迁移

检查所有服务是否正常运行:

验证命令

pasarguard status

打开您的面板 URL 以确保一切正常工作。

故障排除

常见问题

💡 提示: 大多数问题可以通过检查文件权限和路径配置来解决。

1. 权限被拒绝 确保您使用适当的权限运行命令(需要时使用 sudo)。

2. 数据库连接问题 如果您使用 MySQL,请检查数据库路径和登录信息是否正确更新。

3. 端口冲突 确保没有其他服务使用相同的端口。

4. 缺少环境变量 再次检查 .env 文件中的所有环境变量是否正确更新。

回滚

⚠️ 紧急回滚: 如果您遇到严重问题并需要恢复到以前版本

# 停止 PasarGuard
cd /opt/pasarguard
docker compose down

# 恢复原始目录
sudo mv /opt/pasarguard /opt/marzban
sudo mv /var/lib/pasarguard /var/lib/marzban
sudo mv /var/lib/mysql/pasarguard /var/lib/mysql/marzban  # 如果使用

# 从备份恢复原始 docker-compose.yml 和 .env 文件
# 然后启动 Marzban
marzban up

迁移后

成功迁移后:

  • 📊 更新监控: 如果您有监控工具,请将它们连接到新路径。
  • 💾 更新备份: 确保您的备份脚本已更新为从新目录进行备份。
  • 🧪 测试所有功能: 彻底测试所有面板功能以确保一切正常工作。

支持

🔗 链接

  • 讨论组: Telegram
  • 问题: 如果您在迁移过程中遇到任何问题,请创建 issue。

📝 注意: 此指南假设标准 Marzban 安装。自定义配置可能需要额外步骤。