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
关键更改摘要:
部分 | 之前 | 之后 |
---|---|---|
服务名称 | marzban | pasarguard |
Docker 镜像 | gozargah/marzban:latest | pasarguard/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 安装。自定义配置可能需要额外步骤。