бэкап моих конфигов. надеюсь хотя бы одному человеку пригодится. причем это просто бэкап без инструкций как развернуть, так что извините. всё что можно настроено через сокеты.
Сервер в РФ. haproxy распределяет трафик на 443 порту по SNI на панели, крутящиеся на этом сервере. Далее трафик через vnext идет на нужную exit-node.
На сервере крутится сразу несколько панелей, так что конфиг haproxy на две панели (удалить из конфига лишнее должно быть не сложно, если надо)
!!! в конфиге нгинкса стоит перезапись путей панели, чтобы прятать ее за длинный путь на веб-сервере. Сделано для 0.8.4, на релизе версии один работать не будет.
набор темплейтов для раздачи через подписку. маршрутизация настроена по принципу "приватные адреса и адреса РФ идут прямо, остальное в прокси" приватные адреса и адреса РФ настроено ресолвить через системный прокси, чтобы всякие локальные и корпоративные ресурсы нормально работали.
Бэкапы конфигов серверов с xHTTP
Модифицированный шаблон (оригинал вроде бы - https://github.com/x0sina/marzban-sub) Оставлены только клиенты happ, v2rayng, v2rayn, streisand, v2raytun (потому что поддерживают xHTTP). Убран фон. На Windows по-умолчанию предлагает Happ for desktop
конфиги с сервера в Европе
файл выдачи конфигурации через подписку для 0.8.4, в котором добавлена поддержка v2raytun (без нее не выдается роутинг, даже если настроен) в docker-compose.yml марзбана нужно добавить в volumes:
- ./subscription.py:/code/app/routers/subscription.py
Отличия от оригинального subscription.py от в 0.8.4 только в наличии вот такого блока
elif USE_CUSTOM_JSON_DEFAULT and re.match(r'^v2raytun/android', user_agent):
conf = generate_subscription(user=user, config_format="v2ray-json", as_base64=True, reverse=False)
return Response(content=conf, media_type="application/json", headers=response_headers)
elif USE_CUSTOM_JSON_DEFAULT and re.match(r'^v2raytun/ios', user_agent):
conf = generate_subscription(user=user, config_format="v2ray-json", as_base64=False, reverse=False)
return Response(content=conf, media_type="application/json", headers=response_headers)
чтобы роутинг раздавался должен быть выставлен в True параметр USE_CUSTOM_JSON_DEFAULT в .env если вдруг нужно чтобы выдавало всегда, можно заменить в subscription.py строку
elif USE_CUSTOM_JSON_DEFAULT and re.match(r'^v2raytun/android', user_agent):
...
elif USE_CUSTOM_JSON_DEFAULT and re.match(r'^v2raytun/ios', user_agent):
на
elif re.match(r'^v2raytun/android', user_agent):
...
elif re.match(r'^v2raytun/ios', user_agent):
29.08.2025 добавлен еще блок для Happ for Windows:
elif (USE_CUSTOM_JSON_DEFAULT or USE_CUSTOM_JSON_FOR_HAPP) and re.match(r'^Happ/(\d+\.\d+\.\d+)/Windows', user_agent):
conf = generate_subscription(user=user, config_format="v2ray-json", as_base64=False, reverse=False)
return Response(content=conf, media_type="application/json", headers=response_headers)