حل موحد مقاوم لرقابة واجهة المستخدم الرسومية مدعوم من Xray
الإنجليزية / فارسی / 简体中文 / Русский
Marzban (الكلمة الفارسية التي تعني "حرس الحدود" - تنطق /mærz'ban/) هي أداة لإدارة الوكيل توفر واجهة مستخدم بسيطة وسهلة الاستخدام لإدارة مئات حسابات الوكيل المدعومة بواسطة Xray-core والمبنية باستخدام Python و Reactjs.
Marzban سهل الاستخدام وغني بالميزات وموثوق به. يتيح لك إنشاء وكلاء مختلفين لمستخدميك دون أي تكوين معقد. باستخدام واجهة مستخدم الويب المضمنة، يمكنك مراقبة المستخدمين وتعديلهم وتقييدهم.
قم بتشغيل الأمر التالي
sudo bash -c " $( curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh ) " @ install
بمجرد اكتمال التثبيت:
Ctrl+C
/opt/marzban
/opt/marzban/.env
(راجع قسم التكوينات لرؤية المتغيرات)/var/lib/marzban
http://YOUR_SERVER_IP:8000/dashboard/
(استبدل YOUR_SERVER_IP بعنوان IP الفعلي لخادمك)بعد ذلك، تحتاج إلى إنشاء مسؤول Sudo لتسجيل الدخول إلى لوحة معلومات Marzban عن طريق الأمر التالي
marzban cli admin create --sudo
هذا كل شيء! يمكنك تسجيل الدخول إلى لوحة التحكم الخاصة بك باستخدام بيانات الاعتماد هذه
لرؤية رسالة المساعدة الخاصة بالبرنامج النصي Marzban، قم بتشغيل الأمر التالي
marzban --help
إذا كنت متشوقًا لتشغيل المشروع باستخدام الكود المصدري، فراجع القسم أدناه
قم بتثبيت الأشعة السينية على جهازك
يمكنك تثبيته باستخدام Xray-install
bash -c " $( curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh ) " @ install
انسخ هذا المشروع وقم بتثبيت التبعيات (تحتاج إلى Python >= 3.8)
git clone https://github.com/Gozargah/Marzban.git
cd Marzban
wget -qO- https://bootstrap.pypa.io/get-pip.py | python3 -
python3 -m pip install -r requirements.txt
وبدلاً من ذلك، للحصول على بيئة معزولة، يمكنك استخدام Python Virtualenv
ثم قم بتشغيل الأمر التالي لتشغيل البرامج النصية لترحيل قاعدة البيانات
alembic upgrade head
إذا كنت تريد استخدام marzban-cli
، فيجب عليك ربطه بملف في $PATH
، وجعله قابلاً للتنفيذ، وتثبيت الإكمال التلقائي:
sudo ln -s $( pwd ) /marzban-cli.py /usr/bin/marzban-cli
sudo chmod +x /usr/bin/marzban-cli
marzban-cli completion install
الآن حان الوقت للتكوين
أنشئ نسخة من الملف .env.example
، وألق نظرة عليه وقم بتحريره باستخدام محرر نصوص مثل nano
.
ربما ترغب في تعديل بيانات اعتماد المسؤول.
cp .env.example .env
nano .env
تحقق من قسم التكوينات لمزيد من المعلومات
في النهاية، قم بتشغيل التطبيق باستخدام الأمر أدناه
python3 main.py
للتشغيل باستخدام نظام Linux systemctl (انسخ ملف marzban.service إلى /var/lib/marzban/marzban.service
)
systemctl enable /var/lib/marzban/marzban.service
systemctl start marzban
للاستخدام مع nginx
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location ~* /(dashboard|api|docs|redoc|openapi.json) {
proxy_pass http://0.0.0.0:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# xray-core ws-path: /
# client ws-path: /marzban/me/2087
#
# All traffic is proxed through port 443, and send to the xray port(2087, 2088 etc.).
# The '/marzban' in location regex path can changed any characters by yourself.
#
# /${path}/${username}/${xray-port}
location ~* /marzban/.+/(.+)$ {
proxy_redirect off;
proxy_pass http://127.0.0.1:$1/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
أو
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name marzban.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location / {
proxy_pass http://0.0.0.0:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
افتراضيًا، سيتم تشغيل التطبيق على http://localhost:8000/dashboard
. يمكنك تكوينه باستخدام تغيير متغيرات البيئة UVICORN_HOST
و UVICORN_PORT
.
يمكنك ضبط الإعدادات أدناه باستخدام متغيرات البيئة أو وضعها في ملف
.env
.
عامل | وصف |
---|---|
SUDO_USERNAME | اسم المستخدم المتميز |
SUDO_PASSWORD | كلمة مرور المستخدم المتميز |
SQLALCHEMY_DATABASE_URL | عنوان URL لقاعدة البيانات (مستندات SQLAlchemy) |
UVICORN_HOST | ربط التطبيق بهذا المضيف (الافتراضي: 0.0.0.0 ) |
UVICORN_PORT | ربط التطبيق بهذا المنفذ (الافتراضي: 8000 ) |
UVICORN_UDS | ربط التطبيق بمقبس مجال UNIX |
UVICORN_SSL_CERTFILE | ملف شهادة SSL ليكون التطبيق على https |
UVICORN_SSL_KEYFILE | ملف مفتاح SSL ليكون التطبيق على https |
XRAY_JSON | مسار ملف تكوين json الخاص بـ Xray (الافتراضي: xray_config.json ) |
XRAY_EXECUTABLE_PATH | مسار Xray الثنائي (الافتراضي: /usr/local/bin/xray ) |
XRAY_ASSETS_PATH | مسار أصول Xray (الافتراضي: /usr/local/share/xray ) |
XRAY_SUBSCRIPTION_URL_PREFIX | بادئة عناوين URL الخاصة بالاشتراك |
XRAY_FALLBACKS_INBOUND_TAG | علامة الوارد التي تتضمن إجراءات احتياطية، وهي ضرورية في حالة استخدام الإجراءات الاحتياطية |
XRAY_EXCLUDE_INBOUND_TAGS | علامات الواردات التي لا ينبغي إدارتها وإدراجها في الروابط حسب التطبيق |
CUSTOM_TEMPLATES_DIRECTORY | دليل القوالب المخصصة (الافتراضي: app/templates ) |
CLASH_SUBSCRIPTION_TEMPLATE | القالب الذي سيتم استخدامه لإنشاء تكوينات الصدام (الافتراضي: clash/default.yml ) |
SUBSCRIPTION_PAGE_TEMPLATE | القالب المستخدم لإنشاء صفحة معلومات الاشتراك (الافتراضي: subscription/index.html ) |
HOME_PAGE_TEMPLATE | قالب صفحة الشرك (الافتراضي: home/index.html ) |
TELEGRAM_API_TOKEN | الرمز المميز لـ Telegram bot API (احصل على الرمز المميز منbotfather) |
TELEGRAM_ADMIN_ID | معرف Telegram الرقمي للمشرف (استخدم @userinfobot للعثور على المعرف الخاص بك) |
TELEGRAM_PROXY_URL | قم بتشغيل Telegram Bot عبر الوكيل |
JWT_ACCESS_TOKEN_EXPIRE_MINUTES | انتهاء صلاحية رموز الوصول بالدقائق، 0 يعتبر لانهائيًا (الافتراضي: 1440 ) |
المستندات | ما إذا كان يجب أن تكون مستندات واجهة برمجة التطبيقات (API) متاحة على /docs و /redoc أم لا (الافتراضي: False ) |
تصحيح | وضع التصحيح للتطوير (الافتراضي: False ) |
WEBHOOK_ADDRESS | عنوان Webhook لإرسال الإشعارات إليه. سيتم إرسال إشعارات Webhook إذا تم تعيين هذه القيمة. |
WEBHOOK_SECRET | سيتم إرسال سر Webhook مع كل طلب كـ x-webhook-secret في الرأس (الافتراضي: None ) |
NUMBER_OF_RECURRENT_NOTIFICATIONS | كم مرة يجب إعادة المحاولة إذا تم اكتشاف خطأ في إرسال الإشعار (الافتراضي: 3 ) |
RECURRENT_NOTIFICATIONS_TIMEOUT | المهلة بين كل إعادة محاولة إذا تم اكتشاف خطأ في إرسال إشعار بالثواني (الافتراضي: 180 ) |
NOTIFY_REACHED_USAGE_PERCENT | عند أي نسبة استخدام لإرسال إشعار التحذير (الافتراضي: 80 ) |
NOTIFY_DAYS_LEFT | متى يتم إرسال إشعار تحذير بشأن انتهاء الصلاحية (الافتراضي: 3 ) |
USERS_AUTODELETE_DAYS | حذف المستخدمين منتهية الصلاحية (والمستخدمين المحدودين اختياريًا) بعد هذه الأيام العديدة (القيم السالبة تعطل هذه الميزة، الافتراضي: -1 ) |
USER_AUTODELETE_INCLUDE_LIMITED_ACCOUNTS | الطقس لتضمين حسابات محدودة في ميزة الحذف التلقائي (الافتراضي: False ) |
USE_CUSTOM_JSON_DEFAULT | تمكين تكوين JSON المخصص لجميع العملاء المدعومين (الافتراضي: False ) |
USE_CUSTOM_JSON_FOR_V2RAYNG | تمكين تكوين JSON المخصص فقط لـ V2rayNG (الافتراضي: False ) |
USE_CUSTOM_JSON_FOR_STREISAND | تمكين تكوين JSON المخصص لـ Streisand فقط (الافتراضي: False ) |
USE_CUSTOM_JSON_FOR_V2RAYN | تمكين تكوين JSON المخصص فقط لـ V2rayN (الافتراضي: False ) |
توفر Marzban واجهة REST API التي تمكن المطورين من التفاعل مع خدمات Marzban برمجيًا. لعرض وثائق واجهة برمجة التطبيقات في Swagger UI أو ReDoc، قم بتعيين متغير التكوين DOCS=True
وانتقل إلى /docs
و /redoc
.
من الجيد دائمًا عمل نسخة احتياطية لملفات Marzban الخاصة بك بانتظام لمنع فقدان البيانات في حالة فشل النظام أو الحذف غير المقصود. فيما يلي خطوات عمل نسخة احتياطية من Marzban:
/var/lib/marzban
(إصدارات Docker). انسخ الدليل /var/lib/marzban
بالكامل إلى موقع النسخ الاحتياطي الذي تختاره، مثل محرك أقراص ثابت خارجي أو وحدة تخزين سحابية./opt/marzban/
.باتباع هذه الخطوات، يمكنك التأكد من أن لديك نسخة احتياطية لجميع ملفات وبيانات Marzban، بالإضافة إلى متغيرات التكوين وتكوين Xray، في حالة احتياجك إلى استعادتها في المستقبل. تذكر تحديث النسخ الاحتياطية بانتظام لإبقائها محدثة.
يأتي Marzban مع روبوت Telegram متكامل يمكنه التعامل مع إدارة الخادم وإنشاء المستخدم وإزالته وإرسال الإشعارات. يمكن تمكين هذا الروبوت بسهولة باتباع بعض الخطوات البسيطة، وهو يوفر طريقة ملائمة للتفاعل مع Marzban دون الحاجة إلى تسجيل الدخول إلى الخادم في كل مرة.
لتمكين بوت تيليجرام:
TELEGRAM_API_TOKEN
على رمز API المميز لروبوتكTELEGRAM_ADMIN_ID
على المعرف الرقمي لحساب Telegram الخاص بك، ويمكنك الحصول على المعرف الخاص بك من @userinfobot يأتي Marzban مزودًا بـ CLI متكامل يسمى marzban-cli
والذي يسمح للمسؤولين بالتفاعل المباشر معه.
إذا قمت بتثبيت Marzban باستخدام برنامج التثبيت السهل، فيمكنك الوصول إلى أوامر cli عن طريق التشغيل
marzban cli [OPTIONS] COMMAND [ARGS]...
لمزيد من المعلومات، يمكنك قراءة وثائق Marzban CLI.
يقدم مشروع مرزبان عقدة مرزبان، التي أحدثت ثورة في توزيع البنية التحتية. باستخدام Marzban-node، يمكنك توزيع البنية التحتية الخاصة بك عبر مواقع متعددة، وفتح المزايا مثل التكرار والتوافر العالي وقابلية التوسع والمرونة. تعمل عقدة Marzban على تمكين المستخدمين من الاتصال بخوادم مختلفة، مما يوفر لهم المرونة في الاختيار والاتصال بخوادم متعددة بدلاً من الاقتصار على خادم واحد فقط. للحصول على معلومات أكثر تفصيلاً وتعليمات التثبيت، يرجى الرجوع إلى الوثائق الرسمية لعقدة Marzban
يمكنك تعيين عنوان webhook وسيقوم Marzban بإرسال الإشعارات إلى هذا العنوان.
سيتم إرسال الطلبات كطلب نشر إلى العنوان المقدم من WEBHOOK_ADDRESS
مع WEBHOOK_SECRET
كـ x-webhook-secret
في الرؤوس.
نموذج طلب مرسل من Marzban:
Headers:
Host: 0.0.0.0:9000
User-Agent: python-requests/2.28.1
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
x-webhook-secret: something-very-very-secret
Content-Length: 107
Content-Type: application/json
Body:
{"username": "marzban_test_user", "action": "user_updated", "enqueued_at": 1680506457.636369, "tries": 0}
أنواع الإجراءات المختلفة هي: user_created
و user_updated
و user_deleted
و user_limited
و user_expired
و user_disabled
و user_enabled
إذا وجدت Marzban مفيدًا وترغب في دعم تطويره، فيمكنك التبرع في إحدى شبكات التشفير التالية:
TX8kJoDcowQPBFTYHAJR36GyoUKP1Xwzkb
0xFdc9ad32454FA4fc4733270FCc12ddBFb68b83F7
bc1qpys2nefgsjjgae3g3gqy9crsv3h3rm96tlkz0v
DJAocBAu8y6LwhDKUktLAyzV8xyoFeHH6R
EQAVf-7hAXHlF-jmrKE44oBwN7HGQFVBLAtrOsev5K4qR4P8
شكرا لدعمكم!
صنع في [غير معروف!] وتم نشره تحت AGPL-3.0.
نحن ❤️ المساهمين! إذا كنت ترغب في المساهمة، يرجى مراجعة إرشادات المساهمة الخاصة بنا ولا تتردد في إرسال طلب سحب أو فتح مشكلة. نرحب بك أيضًا للانضمام إلى مجموعة Telegram الخاصة بنا للحصول على الدعم أو المساهمة في التوجيه.
التحقق من القضايا المفتوحة للمساعدة في تقدم هذا المشروع.
شكرًا لجميع المساهمين الذين ساعدوا في تحسين مرزبان:
مصنوعة من contrib.rocks