Marzban به پاسارگارد
این راهنما برای نسخههای beta-3 و پایینتر Marzban هست.
این راهنما بهتون کمک میکنه تا اطلاعات، تنظیمات و اکانتهای کاربریتون رو از Marzban به پاسارگارد منتقل کنید، بدون اینکه چیزی از دست بره.
دو روش مهاجرت توضیح داده میشه. شما میتونید هر کدوم که باهاش راحتتر هستید رو انتخاب کنید.
همه تنظیمات و فایلهای فعلی شما حفظ میشن. نیازی به سرور جدید نیست، ولی کمی پیچیدهتره و دستورات بیشتری داره.
این روش راحتتر و سریعتره، با دستورات کمتر. ولی به سرور جدید نیاز داره و بعضی تنظیمات رو باید بعد از مهاجرت بهصورت دستی انجام بدید.
پیشنیازها
⚠️ مهم: همیشه قبل از شروع فرآیند مهاجرت، یه بکآپ کامل از اطلاعاتتون داشته باشید.
- مطمئن بشید که به سرورتون دسترسی root دارید.
- یه بکآپ از نصب فعلی Marzban داشته باشید.
- چک کنید که Docker و Docker Compose نصب باشن.
مراحل مهاجرت: نصب فعلی
1. سرویسهای Marzban رو متوقف کنید
اول از همه، همه کانتینرهای در حال اجرای Marzban رو متوقف کنید:
دستورات توقف سرویس
cd /opt/marzban
docker compose down2. اسم پوشه اصلی رو عوض کنید
اگه پوشههای پاسارگارد از قبل وجود دارن، اونها رو حذف کنید:
دستور حذف پوشهها
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"سایر تغییرات
اگر در فایل .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
اینجا یه مقایسه هست که تغییرات لازم رو برای هر دیتابیس نشون میده:
خلاصه تغییرات کلیدی:
| بخش | قبل | بعد |
|---|---|---|
| اسم سرویس | 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. تغییر دیتابیس MySQL مرزبان به پاسارگارد (در صورت استفاده)
اگر از دیتابیس SQLite استفاده میکنید، این مرحله رو رد کنید.
اما اگر از MySQL یا MariaDB استفاده میکنید، باید از دیتابیس مرزبان خروجی بگیرید تا بعداً به عنوان دیتابیس پاسارگارد وارد بشه.
⚠️ توجه: تمام دستورات زیر برای مهاجرت دیتابیس باید در حالی اجرا شوند که در مسیر
/opt/pasarguard/هستید.
اجرای MySQL یا MariaDB
ابتدا سرویس MySQL یا MariaDB را بسته به اینکه کدام را استفاده میکنید، اجرا کنید.
cd /opt/pasarguard && docker compose up -d mysqlcd /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 restart10. مهاجرت رو بررسی کنید
چک کنید که همه سرویسها درست کار میکنن:
دستورات بررسی
pasarguard statusآدرس پنلتون رو باز کنید تا مطمئن شید همه چی اوکیه.
مراحل مهاجرت: نصب جدید
💬 توجه:
در این روش مهاجرت، تنظیمات قبلی شما در فایل .env به پاسارگارد منتقل نمیشن و باید خودتون اونها رو به صورت دستی پیکربندی کنید.
میتونید تمام متغیرهای قابل تنظیم داخل فایل .env رو بررسی کنید، یا برای جزئیات بیشتر به مستندات پیکربندی پنل مراجعه کنید.
برخی از تنظیمات مثل ربات تلگرام، پیشوند URL لینک اشتراک و بقیه موارد، حالا مستقیماً از تنظیمات داشبورد قابل مدیریت هستند.
1. نصب پاسارگارد
ابتدا پاسارگارد رو روی سرور جدیدتون با توجه به دیتابیس فعلیتون نصب کنید، همونطور که در مستندات نصب پنل توضیح داده شده.
حتماً دستورالعملها و توضیحات رو با دقت مرور کنید.
2. گواهی SSL
برای دسترسی امن به داشبورد، باید SSL رو روی پاسارگارد فعال کنید.
فایلهای گواهی 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 رو با pasarguard مثل تصویر جایگزین کنید، و فایل رو ذخیره کنید.
اگر این دو خط در فایلتون وجود ندارند، به مرحله بعدی برید.
❌ قبل

✅ بعد

- ورود به phpMyAdmin:
شما میتونید به phpMyAdmin از طریق مرورگر روی آدرس http://YOUR_SERVER_IP:8010 دسترسی پیدا کنید.
با کاربر root و مقدار MYSQL_ROOT_PASSWORD که در فایل .env هست وارد بشید.
- حذف جدولها:
جدولهای موجود رو طبق تصویری که نشون داده شده حذف کنید:
- وارد کردن دیتابیس:
حالا به تب "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 استاندارد بوده. تنظیمات شخصی ممکنه نیاز به مراحل اضافی داشته باشن.