Xray로 구동되는 통합 GUI 검열 방지 솔루션
영어 / Пارسی / 简体中文 / Русский
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/
로 이동하여 Marzban 대시보드에 액세스할 수 있습니다(YOUR_SERVER_IP를 서버의 실제 IP 주소로 바꾸십시오).다음으로 다음 명령을 사용하여 Marzban 대시보드에 로그인하기 위한 sudo 관리자를 생성해야 합니다.
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 | 수퍼유저의 사용자 이름 |
SUDO_PASSWORD | 수퍼유저의 비밀번호 |
SQLALCHEMY_DATABASE_URL | 데이터베이스 URL(SQLAlchemy의 문서) |
UVICORN_HOST | 이 호스트에 애플리케이션 바인딩(기본값: 0.0.0.0 ) |
UVICORN_PORT | 이 포트에 애플리케이션 바인딩(기본값: 8000 ) |
UVICORN_UDS | UNIX 도메인 소켓에 애플리케이션 바인딩 |
UVICORN_SSL_CERTFILE | https에 애플리케이션을 적용할 SSL 인증서 파일 |
UVICORN_SSL_KEYFILE | https에 애플리케이션을 적용할 SSL 키 파일 |
XRAY_JSON | Xray의 json 구성 파일 경로(기본값: 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 ) |
텔레그램_API_TOKEN | 텔레그램 봇 API 토큰(@botfather로부터 토큰 받기) |
TELEGRAM_ADMIN_ID | 관리자의 숫자 텔레그램 ID(ID를 찾으려면 @userinfobot을 사용하세요) |
TELEGRAM_PROXY_URL | 프록시를 통해 Telegram Bot 실행 |
JWT_ACCESS_TOKEN_EXPIRE_MINUTES | 액세스 토큰의 만료 시간(분), 0 무한으로 간주됨(기본값: 1440 ) |
문서 | API 문서를 /docs 및 /redoc 에서 사용할 수 있는지 여부(기본값: False ) |
디버그 | 개발용 디버그 모드 (기본값: False ) |
WEBHOOK_ADDRESS | 알림을 보낼 웹훅 주소입니다. 이 값이 설정된 경우 웹훅 알림이 전송됩니다. |
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 | V2rayNG에 대해서만 사용자 정의 JSON 구성 활성화(기본값: False ) |
USE_CUSTOM_JSON_FOR_STREISAND | Streisand에 대해서만 사용자 정의 JSON 구성 활성화(기본값: False ) |
USE_CUSTOM_JSON_FOR_V2RAYN | V2rayN에 대해서만 사용자 정의 JSON 구성 활성화(기본값: False ) |
Marzban은 개발자가 프로그래밍 방식으로 Marzban 서비스와 상호 작용할 수 있도록 하는 REST API를 제공합니다. Swagger UI 또는 ReDoc에서 API 문서를 보려면 구성 변수 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
텔레그램 계정의 숫자 ID로 설정하면 @userinfobot에서 ID를 얻을 수 있습니다. Marzban에는 관리자가 직접 상호 작용할 수 있는 marzban-cli
라는 통합 CLI가 함께 제공됩니다.
쉬운 설치 스크립트를 사용하여 Marzban을 설치한 경우 다음을 실행하여 cli 명령에 액세스할 수 있습니다.
marzban cli [OPTIONS] COMMAND [ARGS]...
자세한 내용은 Marzban CLI 설명서를 참조하세요.
Marzban 프로젝트는 인프라 분산에 혁명을 일으키는 Marzban 노드를 도입합니다. Marzban-node를 사용하면 인프라를 여러 위치에 분산하여 중복성, 고가용성, 확장성, 유연성과 같은 이점을 누릴 수 있습니다. Marzban-node는 사용자가 다른 서버에 연결할 수 있도록 하여 하나의 서버에만 제한되지 않고 여러 서버를 선택하고 연결할 수 있는 유연성을 제공합니다. 자세한 내용 및 설치 방법은 Marzban-node 공식 문서를 참고하세요.
웹훅 주소를 설정하면 Marzban이 해당 주소로 알림을 보냅니다.
요청은 헤더의 x-webhook-secret
인 WEBHOOK_SECRET
과 함께 WEBHOOK_ADDRESS
에서 제공한 주소로 게시물 요청으로 전송됩니다.
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 그룹에 참여하는 것을 환영합니다.
이 프로젝트의 진행에 도움이 되는 공개 이슈를 확인하세요.
Marzban 개선에 도움을 주신 모든 기여자에게 감사드립니다:
contrib.rocks로 제작