โซลูชันป้องกันการเซ็นเซอร์ GUI แบบรวมที่ขับเคลื่อนโดย Xray
อังกฤษ / فارسی / 简体中文 / Русский
Marzban (คำภาษาเปอร์เซียสำหรับ "ผู้พิทักษ์ชายแดน" - อ่านว่า /mærz'ban/) เป็นเครื่องมือการจัดการพร็อกซีที่ให้อินเทอร์เฟซผู้ใช้ที่เรียบง่ายและใช้งานง่ายสำหรับการจัดการบัญชีพร็อกซีหลายร้อยบัญชีที่ขับเคลื่อนโดย Xray-core และสร้างโดยใช้ Python และ Reactjs
Marzban ใช้งานง่าย มีคุณสมบัติหลากหลายและเชื่อถือได้ ช่วยให้คุณสร้างพร็อกซีที่แตกต่างกันสำหรับผู้ใช้ของคุณโดยไม่ต้องมีการกำหนดค่าที่ซับซ้อน การใช้ UI เว็บในตัวทำให้คุณสามารถตรวจสอบ แก้ไข และจำกัดผู้ใช้ได้
รันคำสั่งต่อไปนี้
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 บนเครื่องของคุณ
คุณสามารถติดตั้งได้โดยใช้ 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 | ชื่อผู้ใช้ของ Superuser |
SUDO_รหัสผ่าน | รหัสผ่านของ Superuser |
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 (ค่าเริ่มต้น: clash/default.yml ) |
สมัครสมาชิก_PAGE_TEMPLATE | เทมเพลตที่ใช้สำหรับสร้างหน้าข้อมูลการสมัครสมาชิก (ค่าเริ่มต้น: subscription/index.html ) |
HOME_PAGE_TEMPLATE | เทมเพลตหน้าล่อ (ค่าเริ่มต้น: home/index.html ) |
TELEGRAM_API_TOKEN | โทเค็น Telegram bot API (รับโทเค็นจาก @botfather) |
โทรเลข_ADMIN_ID | ID โทรเลขตัวเลขของผู้ดูแลระบบ (ใช้ @userinfobot เพื่อค้นหา ID ของคุณ) |
TELEGRAM_PROXY_URL | เรียกใช้ Telegram Bot ผ่านพรอกซี |
JWT_ACCESS_TOKEN_EXPIRE_MINUTES | เวลาหมดอายุสำหรับโทเค็นการเข้าถึงเป็นนาที 0 ถือว่าไม่มีที่สิ้นสุด (ค่าเริ่มต้น: 1440 ) |
เอกสาร | เอกสาร API ควรมีอยู่ใน /docs และ /redoc หรือไม่ (ค่าเริ่มต้น: False ) |
ดีบัก | โหมดแก้ไขข้อบกพร่องสำหรับการพัฒนา (ค่าเริ่มต้น: False ) |
เว็บฮุค_ADDRESS | ที่อยู่ Webhook ที่จะส่งการแจ้งเตือนไป การแจ้งเตือน Webhook จะถูกส่งหากมีการตั้งค่านี้ |
เว็บฮุค_ความลับ | Webhook Secret จะถูกส่งไปพร้อมกับคำขอแต่ละรายการเป็น x-webhook-secret ในส่วนหัว (ค่าเริ่มต้น: None ) |
NUMBER_OF_RECURRENT_NOTIFICATIONS | กี่ครั้งที่จะลองอีกครั้งหากตรวจพบข้อผิดพลาดในการส่งการแจ้งเตือน (ค่าเริ่มต้น: 3 ) |
RECURRENT_NOTIFICATIONS_TIMEOUT | หมดเวลาระหว่างการลองใหม่แต่ละครั้งหากตรวจพบข้อผิดพลาดในการส่งการแจ้งเตือนในไม่กี่วินาที (ค่าเริ่มต้น: 180 ) |
NOTIFY_REACHED_USAGE_PERCENT | เปอร์เซ็นต์การใช้งานที่จะส่งการแจ้งเตือน (ค่าเริ่มต้น: 80 ) |
แจ้งเตือน_DAYS_LEFT | เมื่อใดจะส่งการแจ้งเตือนเกี่ยวกับการหมดอายุ (ค่าเริ่มต้น: 3 ) |
USERS_AUTODELETE_DAYS | การลบหมดอายุ (และอาจจำกัดผู้ใช้) หลังจากหลายวันนี้ (ค่าลบจะปิดใช้งานคุณลักษณะนี้ ค่าเริ่มต้น: -1 ) |
USER_AUTODELETE_INCLUDE_LIMITED_ACCOUNTS | สภาพอากาศที่จะรวมบัญชีแบบจำกัดไว้ในคุณลักษณะการลบอัตโนมัติ (ค่าเริ่มต้น: False ) |
USE_CUSTOM_JSON_DEFAULT | เปิดใช้งานการกำหนดค่า JSON แบบกำหนดเองสำหรับไคลเอนต์ที่รองรับทั้งหมด (ค่าเริ่มต้น: False ) |
USE_CUSTOM_JSON_FOR_V2รังสี | เปิดใช้งานการกำหนดค่า JSON แบบกำหนดเองสำหรับ V2rayNG เท่านั้น (ค่าเริ่มต้น: False ) |
USE_CUSTOM_JSON_FOR_STREISAND | เปิดใช้งานการกำหนดค่า JSON แบบกำหนดเองสำหรับ Streisand เท่านั้น (ค่าเริ่มต้น: False ) |
USE_CUSTOM_JSON_FOR_V2RAYN | เปิดใช้งานการกำหนดค่า JSON แบบกำหนดเองสำหรับ V2rayN เท่านั้น (ค่าเริ่มต้น: False ) |
Marzban จัดเตรียม REST API ที่ช่วยให้นักพัฒนาสามารถโต้ตอบกับบริการของ Marzban โดยทางโปรแกรม หากต้องการดูเอกสาร API ใน Swagger UI หรือ ReDoc ให้ตั้งค่าตัวแปรการกำหนดค่า DOCS=True
และไปที่ /docs
และ /redoc
เป็นความคิดที่ดีเสมอที่จะสำรองไฟล์ Marzban ของคุณเป็นประจำเพื่อป้องกันข้อมูลสูญหายในกรณีที่ระบบล้มเหลวหรือถูกลบโดยไม่ตั้งใจ นี่คือขั้นตอนในการสำรองข้อมูล Marzban:
/var/lib/marzban
(เวอร์ชัน Docker) คัดลอกไดเร็กทอรี /var/lib/marzban
ทั้งหมดไปยังตำแหน่งสำรองข้อมูลที่คุณเลือก เช่น ฮาร์ดไดรฟ์ภายนอกหรือที่เก็บข้อมูลบนคลาวด์/opt/marzban/
ด้วยการทำตามขั้นตอนเหล่านี้ คุณสามารถมั่นใจได้ว่าคุณมีการสำรองข้อมูลไฟล์และข้อมูล Marzban ทั้งหมดของคุณ เช่นเดียวกับตัวแปรการกำหนดค่าและการกำหนดค่า Xray ในกรณีที่คุณต้องการกู้คืนในอนาคต อย่าลืมอัปเดตข้อมูลสำรองของคุณเป็นประจำเพื่อให้ข้อมูลอัปเดตอยู่เสมอ
Marzban มาพร้อมกับบอท Telegram ในตัวที่สามารถจัดการการจัดการเซิร์ฟเวอร์ การสร้างและการลบผู้ใช้ และส่งการแจ้งเตือน บอทนี้สามารถเปิดใช้งานได้อย่างง่ายดายโดยทำตามขั้นตอนง่ายๆ ไม่กี่ขั้นตอน และให้วิธีที่สะดวกในการโต้ตอบกับ Marzban โดยไม่ต้องลงชื่อเข้าใช้เซิร์ฟเวอร์ทุกครั้ง
วิธีเปิดใช้งาน Telegram Bot:
TELEGRAM_API_TOKEN
เป็นโทเค็น API ของบอทของคุณTELEGRAM_ADMIN_ID
เป็น ID ตัวเลขของบัญชี Telegram ของคุณ คุณสามารถรับ ID ของคุณได้จาก @userinfobot Marzban มาพร้อมกับ CLI แบบรวมชื่อ marzban-cli
ซึ่งช่วยให้ผู้ดูแลระบบสามารถโต้ตอบกับมันได้โดยตรง
หากคุณได้ติดตั้ง Marzban โดยใช้สคริปต์ติดตั้งง่าย คุณสามารถเข้าถึงคำสั่ง cli ได้โดยการเรียกใช้
marzban cli [OPTIONS] COMMAND [ARGS]...
สำหรับข้อมูลเพิ่มเติม คุณสามารถอ่านเอกสารของ Marzban CLI
โครงการ Marzban เปิดตัว Marzban-node ซึ่งปฏิวัติการกระจายโครงสร้างพื้นฐาน ด้วย Marzban-node คุณสามารถกระจายโครงสร้างพื้นฐานของคุณไปยังสถานที่หลายแห่ง เพื่อปลดล็อกคุณประโยชน์ต่างๆ เช่น ความซ้ำซ้อน ความพร้อมใช้งานสูง ความสามารถในการขยายขนาด และความยืดหยุ่น Marzban-node ช่วยให้ผู้ใช้สามารถเชื่อมต่อกับเซิร์ฟเวอร์ที่แตกต่างกัน โดยเสนอความยืดหยุ่นในการเลือกและเชื่อมต่อกับเซิร์ฟเวอร์หลายเครื่อง แทนที่จะถูกจำกัดไว้เพียงเซิร์ฟเวอร์เดียว สำหรับข้อมูลโดยละเอียดเพิ่มเติมและคำแนะนำในการติดตั้ง โปรดดูเอกสารอย่างเป็นทางการของ Marzban-node
คุณสามารถตั้งค่าที่อยู่เว็บฮุคได้ และ 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 มีประโยชน์และต้องการสนับสนุนการพัฒนา คุณสามารถบริจาคเงินในเครือข่าย crypto แห่งใดแห่งหนึ่งต่อไปนี้:
TX8kJoDcowQPBFTYHAJR36GyoUKP1Xwzkb
0xFdc9ad32454FA4fc4733270FCc12ddBFb68b83F7
bc1qpys2nefgsjjgae3g3gqy9crsv3h3rm96tlkz0v
DJAocBAu8y6LwhDKUktLAyzV8xyoFeHH6R
EQAVf-7hAXHlF-jmrKE44oBwN7HGQFVBLAtrOsev5K4qR4P8
ขอบคุณสำหรับการสนับสนุนของคุณ!
ผลิตใน [ไม่ทราบ!] และเผยแพร่ภายใต้ AGPL-3.0
เรา ❤️ เป็นผู้มีส่วนร่วม! หากคุณต้องการมีส่วนร่วม โปรดตรวจสอบหลักเกณฑ์การบริจาคของเรา และส่งคำขอดึงข้อมูลหรือเปิดประเด็นได้ตามสบาย นอกจากนี้เรายังยินดีต้อนรับคุณเข้าร่วมกลุ่ม Telegram ของเราเพื่อรับการสนับสนุนหรือให้คำแนะนำ
ตรวจสอบปัญหาที่เปิดอยู่เพื่อช่วยความคืบหน้าของโครงการนี้
ขอขอบคุณผู้มีส่วนร่วมทุกคนที่ได้ช่วยปรับปรุง Marzban:
ทำด้วยหินที่มีส่วนร่วม