PasarGuard
Миграция

Marzban к PasarGuard

Это руководство предназначено для версий Marzban `beta-3' и ниже.

Это руководство поможет вам перенести данные, настройки и учётные записи пользователей из Marzban в PasarGuard, не теряя ничего.

Объясняются два метода миграции. Вы можете выбрать тот, который вам более удобен.

Сохраняет все существующие настройки и файлы. Не требует нового сервера. Но немного сложнее и включает в себя больше команд.

Проще и быстрее, с меньшим количеством команд. Но требуется новый сервер, и после миграции некоторые параметры необходимо настроить вручную.

Предварительные условия

⚠️ Важно: Всегда создавайте полную резервную копию своих данных перед началом процесса миграции.

  • Убедитесь, что у вас есть root-доступ к вашему серверу.
  • Создайте резервную копию текущей установки Marzban.
  • Убедитесь, что установлены Docker и Docker Compose.

Этапы миграции: Текущая установка

1. Остановите службы Marzban

Сначала остановите все запущенные контейнеры Marzban:

Команды остановки служб

cd /opt/marzban
docker compose down

2. Переименование основного каталога

Удалите каталоги PasarGuard, если они уже существуют:

Команда удаления каталогов

rm -r /opt/pasarguard /var/lib/pasarguard /var/lib/mysql/pasarguard

Измените имя основного каталога Marzban на PasarGuard:

Команда переименования каталога

sudo mv /opt/marzban /opt/pasarguard

3. Переименование каталога данных

Также измените имя каталога данных:

Команда переименования каталога данных

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

4. Переименование каталога 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/mysql

5. Обновите переменные среды

Перейдите в новую директорию 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

Вот сравнение, показывающее необходимые изменения для каждой базы данных:

Сводка ключевых изменений:

СекцияДоПосле
Имя сервисаmarzbanpasarguard
Docker образgozargah/marzban:latestpasarguard/panel:latest
Том приложения/var/lib/marzban:/var/lib/marzban/var/lib/pasarguard:/var/lib/pasarguard
База данных MySQLmarzbanpasarguard
Том 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 mysql
cd /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 restart

10. Проверьте миграцию

Проверьте, что все сервисы работают правильно:

Команды проверки

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-env

3. Загрузка базы данных

Теперь вам нужно загрузить базу данных на сервер. Процедура зависит от используемой вами базы данных.

Импорт базы данных SQLite

  • Просто поместите файл db.sqlite3 из Marzban в каталог /var/lib/pasarguard/ — и всё.

Импорт базы данных MySQL или MariaDB

Если вы используете базу данных MySQL или MariaDB, вам необходимо импортировать её с помощью приложения phpMyAdmin. Внимательно выполните следующие действия:

  • Отредактируйте файл базы данных:

Вам необходимо отредактировать файл базы данных MySQL или MariaDB. Откройте файл marzban.sql из резервной копии Marzban в текстовом редакторе. Замените marzban на pasarguard в этих двух строках, как показано на рисунке, и сохраните файл.

Если в вашем файле нет этих двух строк, перейдите к следующему шагу.

❌ До

Edit MySQL Database 1

✅ После

Edit MySQL Database 2
  • Откройте phpMyAdmin:

Вы можете получить доступ к phpMyAdmin в браузере по адресу: http://YOUR_SERVER_IP:8010. Войдите в систему, используя учетную запись пользователя root и значение MYSQL_ROOT_PASSWORD из файла .env.

  • Удалить таблицы:

Удалить существующие таблицы, как показано на рисунке:

Drop MySQL Tables
  • Импорт базы данных:

Теперь перейдите на вкладку «Импорт» в 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. Пользовательские конфигурации могут потребовать дополнительных шагов.

On this page

Предварительные условияЭтапы миграции: Текущая установка1. Остановите службы MarzbanКоманды остановки служб2. Переименование основного каталогаКоманда удаления каталоговКоманда переименования каталога3. Переименование каталога данныхКоманда переименования каталога данных4. Переименование каталога MySQL (если используется)Команда переименования каталога MySQL5. Обновите переменные средыДругие измененияКоманда переименования каталога v2ray в xrayОбновление каталогов сертификатов xray-config6. Обновите файл Docker ComposeИзменения Docker ComposeСводка ключевых изменений:7. Измените базу данных Marzban MySQL на PasarGuard (если используется)Запустите MySQL или MariaDBЭкспорт базы данныхИзменение информации о базе данныхИмпорт базы данных PasarGuardУдаление базы данных Marzban8. Установите скрипт управления PasarGuardКоманда установки скрипта9. Запустите PasarGuardКоманда запуска10. Проверьте миграциюКоманды проверкиЭтапы миграции: новая установка1. Установка PasarGuard2. SSL-сертификация3. Загрузка базы данныхИмпорт базы данных SQLiteИмпорт базы данных MySQL или MariaDB4. Перезапустите PasarGuardУстранение неполадокРаспространенные проблемыОткатПосле миграцииПоддержка