فهرست مقاله

در این آموزش قدم به قدم یاد می‌گیرید پنل مرزبان (Marzban) را روی یک سرور مجازی اوبونتو نصب کنید، برای آن دامنه و SSL بگذارید، اینباندهای مختلف بسازید، کاربر تعریف کنید و لینک اشتراک را به مشتری بدهید. آموزش از سطح مبتدی شروع می‌شود و تا بخش‌های پیشرفته مثل نود و انتقال از 3x-ui پیش می‌رود.

همه مقادیر این آموزش نمونه هستند: دامنه example.com، آی‌پی 1.2.3.4 و نام کاربری و رمز فرضی. مقادیر واقعی سرور خودتان را جایگزین کنید.

مرزبان چیست و چه فرقی با 3x-ui دارد؟

مرزبان یک پنل تحت وب و متن‌باز برای مدیریت هسته Xray است. با آن می‌توانید کاربر بسازید، برای هر کاربر حجم و تاریخ انقضا تعیین کنید و یک لینک اشتراک (Subscription) به او بدهید که همه پروتکل‌ها را یکجا دارد.

ویژگیمرزبان3x-ui
ساختارکاربرمحور: هر کاربر یک لینک اشتراک برای همه اینباندهااینباندمحور: کاربر داخل هر اینباند جدا تعریف می‌شود
نصبداکر (Docker)سرویس مستقیم روی سیستم
چند سرورپشتیبانی داخلی از نود (Node)محدودتر
تنظیم اینباندویرایش فایل xray_config.json یا ویرایشگر پنلفرم گرافیکی کامل
APIAPI کامل برای ربات و فروشگاهAPI محدودتر

اگر می‌خواهید تعداد زیادی کاربر را با یک لینک ساده مدیریت کنید یا چند سرور داشته باشید، مرزبان انتخاب بهتری است. اگر یک سرور ساده با تنظیم گرافیکی می‌خواهید، آموزش نصب پنل 3x-ui را ببینید.

۱. انتخاب سرور مجازی (VPS)

  • سیستم‌عامل: اوبونتو 22.04 یا 24.04 (دبیان 11 و 12 هم کار می‌کند).
  • منابع: حداقل 1 هسته و 1 گیگابایت رم؛ برای بیش از 100 کاربر همزمان 2 هسته و 2 گیگ.
  • دیسک: 20 گیگابایت کافی است.
  • ترافیک و پهنای باند: مهم‌ترین معیار؛ ترافیک ماهانه را با تعداد کاربرانتان بسنجید.
  • لوکیشن: دیتاسنتری که پینگ و کیفیت مسیر خوبی به کاربرانتان دارد.
  • دسترسی root و آی‌پی ثابت.

۲. ورود به سرور با SSH

در ویندوز 10 و 11 از PowerShell، و در لینوکس و مک از ترمینال استفاده کنید:

ssh root@1.2.3.4

اگر پورت SSH عوض شده است:

ssh -p 2222 root@1.2.3.4

بار اول عبارت yes را تایپ کنید و بعد رمز سرور را وارد کنید (موقع تایپ رمز چیزی نمایش داده نمی‌شود). برنامه‌هایی مثل PuTTY یا Termius هم همین کار را انجام می‌دهند.

۳. به‌روزرسانی سرور

apt update && apt upgrade -y
apt install -y curl socat git

اگر با کاربر غیر root وارد شده‌اید، قبل از دستورها sudo بگذارید.

۴. نصب مرزبان

دستور رسمی نصب:

sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install

این اسکریپت داکر را (اگر نصب نباشد) نصب می‌کند، فایل‌ها را در /opt/marzban و داده‌ها را در /var/lib/marzban می‌گذارد و پنل را اجرا می‌کند. وقتی لاگ‌ها نمایش داده شد و پیغام اجرای Uvicorn را دیدید، با Ctrl+C از لاگ خارج شوید؛ پنل در پس‌زمینه روشن می‌ماند.

مسیرکاربرد
/opt/marzban/.envتنظیمات اصلی پنل
/opt/marzban/docker-compose.ymlتنظیمات داکر
/var/lib/marzban/xray_config.jsonتنظیمات هسته و اینباندها
/var/lib/marzban/db.sqlite3دیتابیس کاربران

۵. ساخت ادمین

marzban cli admin create --sudo

نام کاربری (مثلاً admin) و رمز قوی بخواهید. گزینه --sudo یعنی این ادمین دسترسی کامل دارد. ادمین‌های معمولی (بدون sudo) فقط کاربران خودشان را می‌بینند و برای نمایندگی فروش مناسب‌اند.

۶. تنظیمات فایل .env

nano /opt/marzban/.env

مهم‌ترین متغیرها:

UVICORN_HOST = "0.0.0.0"
UVICORN_PORT = 8000

UVICORN_SSL_CERTFILE = "/var/lib/marzban/certs/fullchain.pem"
UVICORN_SSL_KEYFILE = "/var/lib/marzban/certs/key.pem"

XRAY_SUBSCRIPTION_URL_PREFIX = "https://panel.example.com:8000"
XRAY_JSON = "/var/lib/marzban/xray_config.json"
  • UVICORN_PORT: پورت پنل. پیش‌فرض 8000 است و می‌توانید عدد دیگری مثل 2053 بگذارید.
  • UVICORN_SSL_CERTFILE و UVICORN_SSL_KEYFILE: مسیر گواهی SSL؛ با پر کردن این دو، پنل روی HTTPS بالا می‌آید.
  • XRAY_SUBSCRIPTION_URL_PREFIX: آدرسی که اول لینک‌های اشتراک قرار می‌گیرد؛ باید دامنه و پورت پنل باشد.

با Ctrl+O و Enter ذخیره و با Ctrl+X خارج شوید و پنل را ری‌استارت کنید:

marzban restart

۷. گرفتن SSL برای دامنه

اول در DNS دامنه یک رکورد A بسازید که panel.example.com را به 1.2.3.4 وصل کند (اگر از کلودفلر استفاده می‌کنید، برای گرفتن گواهی، پروکسی یا ابر نارنجی را خاموش کنید). سپس با acme.sh گواهی بگیرید:

curl https://get.acme.sh | sh -s email=you@example.com
mkdir -p /var/lib/marzban/certs

~/.acme.sh/acme.sh --set-default-ca --server letsencrypt
~/.acme.sh/acme.sh --issue --standalone -d panel.example.com \
  --key-file /var/lib/marzban/certs/key.pem \
  --fullchain-file /var/lib/marzban/certs/fullchain.pem

حالت standalone به پورت 80 آزاد نیاز دارد. acme.sh گواهی را خودکار تمدید می‌کند. بعد از گرفتن گواهی، مسیرها را در .env بگذارید و marzban restart بزنید.

۸. ورود به داشبورد

در مرورگر باز کنید:

https://panel.example.com:8000/dashboard/

بدون SSL، پنل فقط از روی خود سرور در دسترس است. برای آزمایش موقت می‌توانید با تونل SSH وصل شوید:

ssh -L 8000:localhost:8000 root@1.2.3.4

و بعد http://localhost:8000/dashboard/ را باز کنید. با نام کاربری و رمزی که در مرحله ۵ ساختید وارد شوید.

۹. تنظیمات هسته و اینباندها (xray_config.json)

از داشبورد روی آیکون تنظیمات (Core Settings) بزنید یا فایل را مستقیم ویرایش کنید:

nano /var/lib/marzban/xray_config.json

ساختار کلی فایل این است و اینباندها داخل inbounds قرار می‌گیرند. هر اینباند یک tag یکتا دارد که مرزبان با آن اینباند را می‌شناسد:

{
  "log": {"loglevel": "warning"},
  "inbounds": [],
  "outbounds": [
    {"protocol": "freedom", "tag": "DIRECT"},
    {"protocol": "blackhole", "tag": "BLOCK"}
  ],
  "routing": {
    "rules": [
      {"ip": ["geoip:private"], "outboundTag": "BLOCK", "type": "field"}
    ]
  }
}

ساخت کلید برای VLESS Reality

docker exec marzban-marzban-1 xray x25519

خروجی یک Private key و یک Public key است. Private key داخل کانفیگ می‌رود و مرزبان Public key را خودش در لینک کاربر می‌گذارد. یک shortId هم بسازید:

openssl rand -hex 8

نمونه اینباندها

"inbounds": [
  {
    "tag": "VLESS TCP REALITY",
    "listen": "0.0.0.0",
    "port": 443,
    "protocol": "vless",
    "settings": {"clients": [], "decryption": "none"},
    "streamSettings": {
      "network": "tcp",
      "security": "reality",
      "realitySettings": {
        "show": false,
        "dest": "www.microsoft.com:443",
        "xver": 0,
        "serverNames": ["www.microsoft.com"],
        "privateKey": "PRIVATE_KEY_EXAMPLE",
        "shortIds": ["a1b2c3d4e5f60718"]
      }
    },
    "sniffing": {"enabled": true, "destOverride": ["http", "tls", "quic"]}
  },
  {
    "tag": "VLESS WS",
    "listen": "0.0.0.0",
    "port": 2083,
    "protocol": "vless",
    "settings": {"clients": [], "decryption": "none"},
    "streamSettings": {
      "network": "ws",
      "wsSettings": {"path": "/vlws"},
      "security": "tls",
      "tlsSettings": {"certificates": [{
        "certificateFile": "/var/lib/marzban/certs/fullchain.pem",
        "keyFile": "/var/lib/marzban/certs/key.pem"}]}
    }
  },
  {
    "tag": "VMESS WS",
    "listen": "0.0.0.0",
    "port": 8080,
    "protocol": "vmess",
    "settings": {"clients": []},
    "streamSettings": {"network": "ws", "wsSettings": {"path": "/vmws"}, "security": "none"}
  },
  {
    "tag": "TROJAN TCP TLS",
    "listen": "0.0.0.0",
    "port": 8443,
    "protocol": "trojan",
    "settings": {"clients": []},
    "streamSettings": {
      "network": "tcp",
      "security": "tls",
      "tlsSettings": {"certificates": [{
        "certificateFile": "/var/lib/marzban/certs/fullchain.pem",
        "keyFile": "/var/lib/marzban/certs/key.pem"}]}
    }
  },
  {
    "tag": "SHADOWSOCKS TCP",
    "listen": "0.0.0.0",
    "port": 1080,
    "protocol": "shadowsocks",
    "settings": {"clients": [], "network": "tcp,udp"}
  }
]

نکته‌ها:

  • آرایه clients را خالی بگذارید؛ مرزبان کاربران را خودش اضافه می‌کند.
  • هیچ دو اینباندی نباید پورت یکسان داشته باشند و پورت پنل را هم برای اینباند استفاده نکنید.
  • برای Reality، dest و serverNames باید یک سایت خارجی معتبر با TLS 1.3 باشد.
  • بعد از ذخیره در پنل، هسته خودکار ری‌استارت می‌شود؛ اگر فایل را دستی ویرایش کردید، marzban restart بزنید.
  • اگر روی سرور فایروال فعال دارید، پورت‌های اینباندها و پنل را باز کنید.

۱۰. تنظیمات هاست (Host Settings)

در داشبورد از منوی بالا Host Settings را باز کنید. برای هر اینباند مشخص می‌کنید لینک کاربر با چه آدرسی ساخته شود:

  • Remark: نامی که در برنامه کاربر نمایش داده می‌شود؛ متغیرهایی مثل {USERNAME} و {DATA_LEFT} و {DAYS_LEFT} هم قابل استفاده است.
  • Address: آی‌پی یا دامنه سرور، مثلاً panel.example.com یا 1.2.3.4. مقدار {SERVER_IP} آی‌پی سرور را خودکار می‌گذارد.
  • Port، SNI، Host: در صورت نیاز (مثلاً پشت CDN) جدا تنظیم می‌شوند.

برای یک اینباند می‌توانید چند هاست بسازید تا کاربر چند کانفیگ با آدرس‌های مختلف بگیرد.

۱۱. ساخت کاربر

روی Create User بزنید:

  1. Username: فقط حروف کوچک انگلیسی، عدد و زیرخط.
  2. Data Limit: حجم به گیگابایت؛ خالی یعنی نامحدود.
  3. Expiry Date: تاریخ انقضا؛ خالی یعنی بدون انقضا.
  4. Periodic Usage Reset (Reset Strategy): ریست خودکار حجم؛ no_reset، روزانه، هفتگی، ماهانه یا سالانه. برای سرویس‌های ماهانه با حجم ثابت، Monthly مناسب است.
  5. On Hold: وضعیت در انتظار؛ زمان اشتراک از اولین اتصال کاربر شروع می‌شود. مدت (مثلاً 30 روز) و در صورت نیاز یک مهلت برای شروع خودکار تعیین می‌کنید.
  6. Protocols: پروتکل‌ها یا اینباندهایی که کاربر به آنها دسترسی دارد.
  7. Note: یادداشت مثل شماره تماس مشتری.

با زدن Create User کاربر ساخته می‌شود. وضعیت‌های کاربر: active (فعال)، on_hold (در انتظار)، limited (حجم تمام شده)، expired (منقضی) و disabled (غیرفعال).

۱۲. لینک اشتراک و کیو آر کد

کنار هر کاربر سه آیکون هست:

  • کپی لینک اشتراک: لینکی مثل https://panel.example.com:8000/sub/TOKEN. با وارد کردن این لینک در برنامه، همه کانفیگ‌ها اضافه می‌شوند و با تغییر تنظیمات سرور خودکار به‌روز می‌شوند. بهترین روش تحویل به مشتری همین است.
  • کپی کانفیگ‌ها: لینک تک‌تک کانفیگ‌ها (vless و vmess و trojan و ss).
  • کیو آر کد: برای اسکن مستقیم با گوشی.

کاربر با باز کردن لینک اشتراک در مرورگر، حجم باقی‌مانده و تاریخ انقضای خودش را می‌بیند.

۱۳. برنامه‌های کاربر

سیستم‌عاملبرنامه پیشنهادی
اندرویدv2rayNG، Hiddify، NekoBox
آیفون و آیپدStreisand، V2Box، FoXray
ویندوزv2rayN، Hiddify
مکV2Box، Hiddify

در همه این برنامه‌ها گزینه افزودن اشتراک (Subscription) یا اسکن کیو آر وجود دارد. بعد از افزودن، گزینه Update Subscription را بزنید.

۱۴. افزودن نود (به‌صورت خلاصه)

نود یعنی یک سرور دوم که فقط هسته Xray را اجرا می‌کند و از پنل اصلی کنترل می‌شود؛ کاربران همان لینک اشتراک را دارند و کانفیگ سرور دوم هم به آن اضافه می‌شود.

  1. روی سرور دوم نصب نود:
sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban-node.sh)" @ install
  1. در پنل اصلی از Node Settings روی Add New Node بزنید و گواهی نمایش داده شده را کپی کنید.
  2. گواهی را روی سرور نود در فایل /var/lib/marzban-node/ssl_client_cert.pem بگذارید و نود را ری‌استارت کنید.
  3. در پنل نام و آی‌پی نود (مثلاً 1.2.3.5) را وارد کنید و ذخیره بزنید؛ وضعیت باید Connected شود.

۱۵. دستورهای مدیریتی مرزبان

marzban status      # وضعیت پنل
marzban restart     # ری‌استارت
marzban logs        # نمایش لاگ زنده
marzban update      # به‌روزرسانی به آخرین نسخه
marzban backup      # تهیه بکاپ
marzban down        # خاموش کردن
marzban up          # روشن کردن
marzban cli user list   # فهرست کاربران

برای بکاپ دستی هم کافی است پوشه‌های داده را فشرده کنید:

tar czf marzban-backup.tar.gz /opt/marzban /var/lib/marzban

فایل بکاپ را حتماً روی سیستم دیگری هم نگه دارید (مثلاً با scp).

۱۶. انتقال از 3x-ui به مرزبان

  1. از دیتابیس 3x-ui بکاپ بگیرید: فایل /etc/x-ui/x-ui.db را کپی کنید.
  2. فهرست کاربران را دربیاورید: نام، حجم باقی‌مانده و تاریخ انقضای هر کاربر. چون ساختار دو پنل فرق دارد، ساده‌ترین روش ساختن دوباره کاربران در مرزبان با همین مشخصات است (دستی یا با API مرزبان برای تعداد زیاد).
  3. 3x-ui را حذف کنید تا پورت‌ها آزاد شوند:
x-ui uninstall
  1. مرزبان را نصب کنید و گواهی SSL قبلی را (اگر هنوز معتبر است) در /var/lib/marzban/certs بگذارید.
  2. اینباندها را بسازید و کاربران را تعریف کنید.
  3. لینک اشتراک جدید هر کاربر را برایش بفرستید؛ لینک‌های قدیمی 3x-ui دیگر کار نمی‌کنند. پروتکل Hysteria2 در مرزبان پشتیبانی نمی‌شود و کاربران آن باید کانفیگ دیگری بگیرند.

۱۷. رفع مشکلات رایج

مشکلراه‌حل
داشبورد باز نمی‌شودmarzban status و marzban logs را بررسی کنید؛ پورت UVICORN_PORT را چک کنید و بدون SSL از تونل SSH استفاده کنید.
خطای SSL یا اتصال ناامنمسیر گواهی در .env را چک کنید و مطمئن شوید دامنه به آی‌پی سرور اشاره می‌کند.
گرفتن گواهی شکست می‌خوردپورت 80 باید آزاد باشد و پروکسی کلودفلر خاموش باشد.
هسته Xray بالا نمی‌آیدمعمولاً خطای JSON یا پورت تکراری است؛ پیام خطا را در marzban logs ببینید.
کاربر وصل نمی‌شودHost Settings را چک کنید (آدرس درست)، ساعت سرور و گوشی باید درست باشد، و وضعیت کاربر active باشد.
Reality وصل نمی‌شوددوباره کلید x25519 بسازید و یک dest دیگر امتحان کنید.
لینک اشتراک آدرس اشتباه داردمقدار XRAY_SUBSCRIPTION_URL_PREFIX را درست کنید و ری‌استارت بزنید.
رمز ادمین فراموش شدهmarzban cli admin update یا ساخت ادمین جدید با marzban cli admin create --sudo.

سوالات متداول

آیا مرزبان رایگان است؟

بله، مرزبان متن‌باز و رایگان است و فقط هزینه سرور و دامنه را می‌پردازید.

بدون دامنه هم می‌شود مرزبان نصب کرد؟

بله. پروتکل VLESS Reality به دامنه نیاز ندارد. اما برای باز کردن امن پنل از بیرون و پروتکل‌های TLS، دامنه و SSL لازم است.

مرزبان بهتر است یا 3x-ui؟

برای مدیریت تعداد زیاد کاربر، لینک اشتراک واحد و چند سرور، مرزبان. برای یک سرور ساده با تنظیم گرافیکی، 3x-ui.

حالت On Hold چه کاربردی دارد؟

زمان اشتراک از اولین اتصال کاربر شروع می‌شود؛ مناسب وقتی که اکانت را از قبل می‌سازید و بعداً تحویل می‌دهید.

چطور حجم کاربر را هر ماه خودکار صفر کنم؟

در فرم کاربر، Periodic Usage Reset را روی Monthly بگذارید.

با چه دستوری مرزبان را آپدیت کنم؟

با marzban update. قبل از آن حتماً بکاپ بگیرید.

لینک‌های کاربران بعد از انتقال از 3x-ui کار می‌کنند؟

خیر، باید لینک اشتراک جدید مرزبان را برای کاربران بفرستید.


این آموزش توسط نوید حق بیان برای Sir GSM نوشته شده است. آموزش‌های بیشتر را در sirgsm.ir دنبال کنید.