Marzban к PasarGuard
Это руководство предназначено для версий Marzban `beta-3' и ниже.
Это руководство поможет вам перенести данные, настройки и учётные записи пользователей из Marzban в PasarGuard, не теряя ничего.
Объясняются два метода миграции. Вы можете выбрать тот, который вам более удобен.
Сохраняет все существующие настройки и файлы. Не требует нового сервера. Но немного сложнее и включает в себя больше команд.
Проще и быстрее, с меньшим количеством команд. Но требуется новый сервер, и после миграции некоторые параметры необходимо настроить вручную.
Предварительные условия
⚠️ Важно: Всегда создавайте полную резервную копию своих данных перед началом процесса миграции.
- Убедитесь, что у вас есть root-доступ к вашему серверу.
- Создайте резервную копию текущей установки Marzban.
- Убедитесь, что установлены Docker и Docker Compose.
Этапы миграции: Текущая установка
1. Остановите службы Marzban
Сначала остановите все запущенные контейнеры Marzban:
Команды остановки служб
cd /opt/marzban
docker compose down2. Переименование основного каталога
Удалите каталоги PasarGuard, если они уже существуют:
Команда удаления каталогов
rm -r /opt/pasarguard /var/lib/pasarguard /var/lib/mysql/pasarguardИзмените имя основного каталога Marzban на PasarGuard:
Команда переименования каталога
sudo mv /opt/marzban /opt/pasarguard3. Переименование каталога данных
Также измените имя каталога данных:
Команда переименования каталога данных
sudo mv /var/lib/marzban /var/lib/pasarguard4. Переименование каталога MySQL (если используется)
Если вы используете MySQL или MariaDB и у вас есть выделенный каталог для базы данных Marzban:
Команда переименования каталога MySQL
sudo mv /var/lib/mysql/marzban /var/lib/mysql/pasarguardЕсли вы столкнулись с ошибкой «Такого файла или каталога нет», это может быть связано с тем, что каталог MySQL отличается. Вместо этого используйте эту команду:
mkdir -p /var/lib/mysql/pasarguard
mv /var/lib/pasarguard/mysql/* /var/lib/mysql/pasarguard
rm -r /var/lib/pasarguard/mysql5. Обновите переменные среды
Перейдите в новую директорию PasarGuard и обновите файл окружения:
cd /opt/pasarguardОбновите все пути, указанные в файле .env, простой командой:
sudo sed -i 's|/var/lib/marzban|/var/lib/pasarguard|g' .envЕсли вы используете старую версию (0.8.4 или ниже), вам также нужно изменить SQL-драйвер:
Откройте файл .env:
nano .envОбновление драйвера SQLite
❌ Старый
SQLALCHEMY_DATABASE_URL = "sqlite:////var/lib/marzban/db.sqlite3"✅ Новый
SQLALCHEMY_DATABASE_URL = "sqlite+aiosqlite:////var/lib/pasarguard/db.sqlite3"Обновление драйвера MySQL
Для MariaDB выполните ту же процедуру, что и для MySQL.
⚠️ Внимание: в этом примере
MYSQL_ROOT_PASSWORDследует заменить его значением из вашего файла.env.
❌ Старый
SQLALCHEMY_DATABASE_URL = "mysql+pymysql://root:MYSQL_ROOT_PASSWORD@127.0.0.1/marzban"✅ Новый
SQLALCHEMY_DATABASE_URL = "mysql+asyncmy://root:MYSQL_ROOT_PASSWORD@127.0.0.1/pasarguard"Другие изменения
Если вы используете V2RAY_SUBSCRIPTION_TEMPLATE в файле .env или настроили TLS Inbound, вам следует обновить их. В противном случае вы можете пропустить этот шаг.
Команда переименования каталога v2ray в xray
Измените каталог v2ray на xray с помощью этой команды:
mv /var/lib/pasarguard/templates/v2ray /var/lib/pasarguard/templates/xrayОбновление каталогов сертификатов xray-config
Обновите каталоги сертификатов с marzban на pasarguard в файле xray_config.json:
nano /var/lib/pasarguard/xray_config.jsonПосле изменений ваш файл .env и xray_config.json должны выглядеть примерно так:
Обновить шаблон подписки Xray в .env
❌ Старый
V2RAY_SUBSCRIPTION_TEMPLATE = "v2ray/default.json"✅ Новый
XRAY_SUBSCRIPTION_TEMPLATE = "xray/default.json"Обновите каталоги сертификатов в xray_config.json
❌ Старый
"certificates": [
{
"certificateFile": "/var/lib/marzban/certs/example.com/fullchain.pem",
"keyFile": "/var/lib/marzban/certs/example.com/key.pem"
}
],✅ Новый
"certificates": [
{
"certificateFile": "/var/lib/pasarguard/certs/example.com/fullchain.pem",
"keyFile": "/var/lib/pasarguard/certs/example.com/key.pem"
}
],6. Обновите файл Docker Compose
Обновите файл docker-compose.yml для отражения новых путей. Вам нужно вручную отредактировать этот файл:
sudo nano docker-compose.ymlИзменения Docker Compose
Вот сравнение, показывающее необходимые изменения для каждой базы данных:
Сводка ключевых изменений:
| Секция | До | После |
|---|---|---|
| Имя сервиса | marzban | pasarguard |
| Docker образ | gozargah/marzban:latest | pasarguard/panel:latest |
| Том приложения | /var/lib/marzban:/var/lib/marzban | /var/lib/pasarguard:/var/lib/pasarguard |
| База данных MySQL | marzban | pasarguard |
| Том MySQL | /var/lib/mysql/marzban:/var/lib/mysql | /var/lib/mysql/pasarguard:/var/lib/mysql |
7. Измените базу данных Marzban MySQL на PasarGuard (если используется)
Если вы используете базу данных SQLite, пропустите этот шаг.
Если вы используете базу данных MySQL или MariaDB, экспортируйте базу данных Marzban с помощью следующих команд, чтобы впоследствии её можно было импортировать как базу данных PasarGuard.
⚠️ Внимание: Все следующие команды миграции базы данных следует выполнять, находясь в каталоге
/opt/pasarguard/.
Запустите MySQL или MariaDB
Сначала запустите службу MySQL или MariaDB, в зависимости от того, какую службу вы используете.
cd /opt/pasarguard && docker compose up -d mysqlcd /opt/pasarguard && docker compose up -d mariadbЭкспорт базы данных
Экспортируйте базу данных Marzban. Вам будет предложено ввести пароль базы данных — используйте значение MYSQL_ROOT_PASSWORD из файла .env.
docker compose exec mysql mysqldump -u root -p -h 127.0.0.1 --databases marzban > "/opt/pasarguard/marzban.sql"docker compose exec mariadb mariadb-dump -u root -p -h 127.0.0.1 --databases marzban > "/opt/pasarguard/marzban.sql"Если вы столкнулись с ошибкой «Отказано в доступе», попробуйте использовать пользователя marzban со значением MYSQL_PASSWORD из вашего .env Файл:
docker compose exec mysql mysqldump -u marzban -p -h 127.0.0.1 --databases marzban > "/opt/pasarguard/marzban.sql"docker compose exec mariadb mariadb-dump -u marzban -p -h 127.0.0.1 --databases marzban > "/opt/pasarguard/marzban.sql"Изменение информации о базе данных
Этот шаг крайне важен для создания базы данных pasarguard в MySQL. Следующая команда заменит «marzban» на «pasarguard» в двух важных строках:
sed -i '/^CREATE DATABASE/s/marzban/pasarguard/;/^USE/s/marzban/pasarguard/' /opt/pasarguard/marzban.sqlИмпорт базы данных PasarGuard
Чтобы импортировать новую базу данных, замените MYSQL_ROOT_PASSWORD на его значение из файла .env и выполните следующую команду:
docker compose exec -T mysql mysql -u root -p"MYSQL_ROOT_PASSWORD" -h 127.0.0.1 < "/opt/pasarguard/marzban.sql"docker compose exec -T mariadb mariadb -u root -p"MYSQL_ROOT_PASSWORD" -h 127.0.0.1 < "/opt/pasarguard/marzban.sql"Этот процесс может занять некоторое время.
Если вы не видите никаких результатов, это хороший знак.
Чтобы убедиться, что импорт базы данных прошёл успешно, перечислите базы данных MySQL — среди них вы должны увидеть pasarguard.
Замените MYSQL_ROOT_PASSWORD значением из файла .env и выполните команду.
docker compose exec mysql mysql -u root -p"MYSQL_ROOT_PASSWORD" -e "SHOW DATABASES;"docker compose exec mariadb mariadb -u root -p"MYSQL_ROOT_PASSWORD" -e "SHOW DATABASES;"Если при выполнении команды импорта базы данных возникнут ошибки, это означает, что что-то пошло не так — проверьте учётные данные базы данных и повторите попытку.
Удаление базы данных Marzban
Поскольку база данных Marzban нам больше не нужна, мы можем её удалить.
Вам будет предложено ввести пароль базы данных — используйте значение MYSQL_ROOT_PASSWORD из файла .env.
⚠️ Внимание: Следующие команды удалят базу данных Marzban. Убедитесь, что у вас есть полная резервная копия данных и вы готовы восстановить её в случае возникновения проблем.
rm /opt/pasarguard/marzban.sql
docker compose exec mysql mysql -u root -p -e "DROP DATABASE marzban;"rm /opt/pasarguard/marzban.sql
docker compose exec mariadb mariadb -u root -p -e "DROP DATABASE marzban;"8. Установите скрипт управления PasarGuard
Установите скрипт управления PasarGuard для более удобного управления:
Команда установки скрипта
curl -sL https://github.com/PasarGuard/scripts/raw/main/pasarguard.sh | sudo bash -s -- @ install-scriptЭтот скрипт предоставляет полезные команды для управления вашей установкой PasarGuard.
9. Запустите PasarGuard
Теперь запустите PasarGuard с новой конфигурацией:
Команда запуска
pasarguard restart10. Проверьте миграцию
Проверьте, что все сервисы работают правильно:
Команды проверки
pasarguard statusОткройте URL вашей панели, чтобы убедиться, что все работает корректно.
Этапы миграции: новая установка
💬 Примечание:
При этом методе миграции ваши предыдущие настройки в файле .env не будут перенесены в PasarGuard, и вам потребуется настроить их вручную.
Вы можете просмотреть все настраиваемые переменные в файле .env или обратиться к документации по настройке панели для получения подробной информации.
Некоторые параметры, такие как Telegram-бот, префикс URL-адреса подписки и другие, теперь настраиваются непосредственно в настройках панели управления.
1. Установка PasarGuard
Сначала установите PasarGuard на новый сервер, используя команды, соответствующие вашей текущей базе данных, как описано в Документации по установке Panel. Внимательно ознакомьтесь с инструкциями.
2. SSL-сертификация
Для безопасного доступа к панели управления необходимо включить SSL на PasarGuard.
Загрузите файлы SSL-сертификатов на сервер и поместите их в каталог /var/lib/pasarguard/certs/.
Если у вас ещё нет SSL-сертификата, вы можете его получить — см. Документ по активации SSL.
Когда SSL-сертификат будет готов, включите его в файле .env с помощью переменных UVICORN_SSL.
pasarguard edit-env3. Загрузка базы данных
Теперь вам нужно загрузить базу данных на сервер. Процедура зависит от используемой вами базы данных.
Импорт базы данных SQLite
- Просто поместите файл
db.sqlite3из Marzban в каталог/var/lib/pasarguard/— и всё.
Импорт базы данных MySQL или MariaDB
Если вы используете базу данных MySQL или MariaDB, вам необходимо импортировать её с помощью приложения phpMyAdmin. Внимательно выполните следующие действия:
- Отредактируйте файл базы данных:
Вам необходимо отредактировать файл базы данных MySQL или MariaDB.
Откройте файл marzban.sql из резервной копии Marzban в текстовом редакторе.
Замените marzban на pasarguard в этих двух строках, как показано на рисунке, и сохраните файл.
Если в вашем файле нет этих двух строк, перейдите к следующему шагу.
❌ До

✅ После

- Откройте phpMyAdmin:
Вы можете получить доступ к phpMyAdmin в браузере по адресу: http://YOUR_SERVER_IP:8010.
Войдите в систему, используя учетную запись пользователя root и значение MYSQL_ROOT_PASSWORD из файла .env.
- Удалить таблицы:
Удалить существующие таблицы, как показано на рисунке:
- Импорт базы данных:
Теперь перейдите на вкладку «Импорт» в phpMyAdmin. Выберите файл marzban.sql в разделе «Выбрать файл» и нажмите кнопку «Импорт».
4. Перезапустите PasarGuard
И наконец, перезапустите PasarGuard:
pasarguard restartУстранение неполадок
Распространенные проблемы
💡 Совет: Большинство проблем можно решить, проверив права доступа к файлам и конфигурацию путей.
1. Отказано в доступе (Permission Denied): Убедитесь, что вы запускаете команды с соответствующими правами (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После миграции
После успешной миграции:
- 📡 Узлы PasarGuard: Установка и подключение узлов PasarGuard. Сам PasarGuard не использует Xray-Core.
- 📊 Обновите мониторинг: Если у вас есть инструменты мониторинга, подключите их к новым путям.
- 💾 Обновите резервные копии: Убедитесь, что ваши скрипты резервного копирования обновлены для резервного копирования из новых директорий.
- 🧪 Протестируйте все функции: Тщательно протестируйте все функции панели, чтобы убедиться, что все работает правильно.
Поддержка
🔗 Ссылки
- Группа обсуждений: Telegram
- Проблемы: Если вы столкнулись с проблемами во время миграции, создайте issue.
📝 Примечание: Это руководство предполагает стандартную установку Marzban. Пользовательские конфигурации могут потребовать дополнительных шагов.