پاسارگارد
مهاجرت

Marzban به پاسارگارد

این راهنما برای نسخه‌های beta-3 و پایین‌تر Marzban هست.

این راهنما بهتون کمک می‌کنه تا اطلاعات، تنظیمات و اکانت‌های کاربریتون رو از Marzban به پاسارگارد منتقل کنید، بدون اینکه چیزی از دست بره.

دو روش مهاجرت توضیح داده می‌شه. شما می‌تونید هر کدوم که باهاش راحت‌تر هستید رو انتخاب کنید.

همه تنظیمات و فایل‌های فعلی شما حفظ می‌شن. نیازی به سرور جدید نیست، ولی کمی پیچیده‌تره و دستورات بیشتری داره.

این روش راحت‌تر و سریع‌تره، با دستورات کمتر. ولی به سرور جدید نیاز داره و بعضی تنظیمات رو باید بعد از مهاجرت به‌صورت دستی انجام بدید.

پیش‌نیازها

⚠️ مهم: همیشه قبل از شروع فرآیند مهاجرت، یه بک‌آپ کامل از اطلاعاتتون داشته باشید.

  • مطمئن بشید که به سرورتون دسترسی root دارید.
  • یه بک‌آپ از نصب فعلی Marzban داشته باشید.
  • چک کنید که Docker و Docker Compose نصب باشن.

مراحل مهاجرت: نصب فعلی

1. سرویس‌های Marzban رو متوقف کنید

اول از همه، همه کانتینرهای در حال اجرای Marzban رو متوقف کنید:

دستورات توقف سرویس

cd /opt/marzban
docker compose down

2. اسم پوشه اصلی رو عوض کنید

اگه پوشه‌های پاسارگارد از قبل وجود دارن، اونها رو حذف کنید:

دستور حذف پوشه‌ها

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"

سایر تغییرات

اگر در فایل .env خود از V2RAY_SUBSCRIPTION_TEMPLATE استفاده می‌کنید یا یک TLS Inbound تنظیم شده دارید، باید اون‌ها رو به‌روز کنید؛ در غیر این صورت می‌تونید این مرحله رو رد کنید.

دستور تغییر نام پوشه v2ray به xray

پوشه v2ray رو با این دستور به xray تغییر بدید:

mv /var/lib/pasarguard/templates/v2ray /var/lib/pasarguard/templates/xray

به‌روزرسانی پوشه‌های گواهی xray-config

اگر یک TLS Inbound دارید، باید xray_config.json رو ویرایش کنید و پوشه‌های گواهی را از marzban به pasarguard تغییر بدید:

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
ایمیج Dockergozargah/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. تغییر دیتابیس MySQL مرزبان به پاسارگارد (در صورت استفاده)

اگر از دیتابیس SQLite استفاده می‌کنید، این مرحله رو رد کنید.

اما اگر از MySQL یا MariaDB استفاده می‌کنید، باید از دیتابیس مرزبان خروجی بگیرید تا بعداً به عنوان دیتابیس پاسارگارد وارد بشه.

⚠️ توجه: تمام دستورات زیر برای مهاجرت دیتابیس باید در حالی اجرا شوند که در مسیر /opt/pasarguard/ هستید.

اجرای MySQL یا MariaDB

ابتدا سرویس MySQL یا MariaDB را بسته به اینکه کدام را استفاده می‌کنید، اجرا کنید.

cd /opt/pasarguard && docker compose up -d mysql
cd /opt/pasarguard && docker compose up -d mariadb

گرفتن خروجی از دیتابیس

در این مرحله ازتون پسورد دیتابیس خواسته میشه. همون مقدار 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"

اگر با خطای "Access Denied" روبه‌رو شدید، به جای یوزر root از یوزر 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" توی دو خط مهم (CREATE DATABASE و USE) تغییر داده میشه:

sed -i '/^CREATE DATABASE/s/marzban/pasarguard/;/^USE/s/marzban/pasarguard/' /opt/pasarguard/marzban.sql

وارد کردن دیتابیس پاسارگارد

برای وارد کردن دیتابیس جدید، مقدار 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 نیاز نداریم، می‌تونیم حذفش کنیم. برای حذف دیتابیس 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. اسکریپت مدیریت پاسارگارد رو نصب کنید

اسکریپت مدیریت پاسارگارد رو برای مدیریت راحت‌تر نصب کنید:

دستور نصب اسکریپت

curl -sL https://github.com/PasarGuard/scripts/raw/main/pasarguard.sh | sudo bash -s -- @ install-script

این اسکریپت دستورات کاربردی برای مدیریت نصب پاسارگارد بهتون میده.

9. پاسارگارد رو راه‌اندازی کنید

حالا پاسارگارد رو با تنظیمات جدید راه‌اندازی کنید:

دستور راه‌اندازی

pasarguard restart

10. مهاجرت رو بررسی کنید

چک کنید که همه سرویس‌ها درست کار می‌کنن:

دستورات بررسی

pasarguard status

آدرس پنلتون رو باز کنید تا مطمئن شید همه چی اوکیه.

مراحل مهاجرت: نصب جدید

💬 توجه:

در این روش مهاجرت، تنظیمات قبلی شما در فایل .env به پاسارگارد منتقل نمی‌شن و باید خودتون اونها رو به صورت دستی پیکربندی کنید.

می‌تونید تمام متغیرهای قابل تنظیم داخل فایل .env رو بررسی کنید، یا برای جزئیات بیشتر به مستندات پیکربندی پنل مراجعه کنید.

برخی از تنظیمات مثل ربات تلگرام، پیشوند URL لینک اشتراک و بقیه موارد، حالا مستقیماً از تنظیمات داشبورد قابل مدیریت هستند.

1. نصب پاسارگارد

ابتدا پاسارگارد رو روی سرور جدیدتون با توجه به دیتابیس فعلی‌تون نصب کنید، همون‌طور که در مستندات نصب پنل توضیح داده شده.
حتماً دستورالعمل‌ها و توضیحات رو با دقت مرور کنید.

2. گواهی SSL

برای دسترسی امن به داشبورد، باید SSL رو روی پاسارگارد فعال کنید.
فایل‌های گواهی 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 رو با pasarguard مثل تصویر جایگزین کنید، و فایل رو ذخیره کنید.

اگر این دو خط در فایل‌تون وجود ندارند، به مرحله بعدی برید.

❌ قبل

Edit MySQL Database 1

✅ بعد

Edit MySQL Database 2
  • ورود به phpMyAdmin:

شما می‌تونید به phpMyAdmin از طریق مرورگر روی آدرس http://YOUR_SERVER_IP:8010 دسترسی پیدا کنید. با کاربر root و مقدار MYSQL_ROOT_PASSWORD که در فایل .env هست وارد بشید.

  • حذف جدول‌ها:

جدول‌های موجود رو طبق تصویری که نشون داده شده حذف کنید:

Drop MySQL Tables
  • وارد کردن دیتابیس:

حالا به تب "Import" در phpMyAdmin برید. فایل marzban.sql خودتون رو در بخش "Choose File" انتخاب کنید و بعد روی دکمه Import کلیک کنید.

4. راه‌اندازی مجدد PasarGuard

در نهایت، PasarGuard رو ری‌استارت کنید:

pasarguard restart

عیب‌یابی

مشکلات رایج

💡 نکته: بیشتر مشکلات با بررسی دسترسی‌های فایل و تنظیمات مسیرها حل میشن.

1. اجازه دسترسی ندارید (Permission Denied): مطمئن شید که دستورات رو با دسترسی‌های مناسب (sudo در صورت نیاز) اجرا می‌کنید.

2. مشکلات اتصال به دیتابیس: اگه از MySQL استفاده می‌کنید، چک کنید که مسیرهای دیتابیس و اطلاعات ورود درست به‌روز شده باشن.

3. تداخل پورت‌ها: مطمئن شید که هیچ سرویس دیگه‌ای از همون پورت‌ها استفاده نمی‌کنه.

4. متغیرهای محیطی گم شده: دوباره چک کنید که همه متغیرهای محیطی تو فایل .env درست به‌روز شده باشن.

برگشت به نسخه قبل

⚠️ بازگشت اضطراری: اگه با مشکلات جدی مواجه شدید و نیاز به بازگشت به نسخه قبل دارید

# پاسارگارد رو متوقف کنید
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

بعد از مهاجرت

بعد از مهاجرت موفق:

  • 📡 نودهای پاسارگارد: نودهای پاسارگارد رو نصب و متصل کنید. خود پاسارگارد به‌تنهایی Xray-Core رو اجرا نمی‌کنه.
  • 📊 مانیتورینگ رو به‌روز کنید: اگه ابزارهای مانیتورینگ دارید، اون‌ها رو به مسیرهای جدید متصل کنید.
  • 💾 بک‌آپ‌ها رو به‌روز کنید: مطمئن شید که اسکریپت‌های بک‌آپتون برای بک‌آپ گرفتن از پوشه‌های جدید به‌روز شدن.
  • 🧪 همه قابلیت‌ها رو تست کنید: همه قابلیت‌های پنل رو کامل تست کنید تا مطمئن شید همه چی درست کار می‌کنه.

پشتیبانی

🔗 لینک‌ها

  • گروه بحث و گفتگو: Telegram
  • مشکلات: اگه تو طول مهاجرت به مشکلی برخوردید، یه issue بسازید.

📝 نکته: این راهنما فرض رو بر این میذاره که نصب Marzban استاندارد بوده. تنظیمات شخصی ممکنه نیاز به مراحل اضافی داشته باشن.

On this page

پیش‌نیازهامراحل مهاجرت: نصب فعلی1. سرویس‌های Marzban رو متوقف کنیددستورات توقف سرویس2. اسم پوشه اصلی رو عوض کنیددستور حذف پوشه‌هادستور تغییر نام پوشه3. اسم پوشه دیتا رو عوض کنیددستور تغییر نام پوشه دیتا4. اسم پوشه MySQL رو عوض کنید (اگه استفاده می‌کنید)دستور تغییر نام پوشه MySQL5. متغیرهای محیطی رو به‌روز کنیدسایر تغییراتدستور تغییر نام پوشه v2ray به xrayبه‌روزرسانی پوشه‌های گواهی xray-config6. فایل Docker Compose رو به‌روز کنیدتغییرات Docker Composeخلاصه تغییرات کلیدی:7. تغییر دیتابیس MySQL مرزبان به پاسارگارد (در صورت استفاده)اجرای MySQL یا MariaDBگرفتن خروجی از دیتابیسویرایش اطلاعات دیتابیسوارد کردن دیتابیس پاسارگاردحذف دیتابیس Marzban8. اسکریپت مدیریت پاسارگارد رو نصب کنیددستور نصب اسکریپت9. پاسارگارد رو راه‌اندازی کنیددستور راه‌اندازی10. مهاجرت رو بررسی کنیددستورات بررسیمراحل مهاجرت: نصب جدید1. نصب پاسارگارد2. گواهی SSL3. آپلود دیتابیسوارد کردن دیتابیس SQLiteوارد کردن دیتابیس MySQL یا MariaDB4. راه‌اندازی مجدد PasarGuardعیب‌یابیمشکلات رایجبرگشت به نسخه قبلبعد از مهاجرتپشتیبانی