Перейти к содержанию

Marzban - Детальная инструкция [Marzban + Warp + Sub-Page + Telegram Bot]


DigneZzZ

Рекомендуемые сообщения

9 минут назад, DigneZzZ сказал:

завернуть только можно указав на самом клиенте правила роутинга

ок, понял.

М.б. есть какая то информация как это делать?

Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 94
  • Создана
  • Последний ответ

Топ авторов темы

1 час назад, sitonyou сказал:

ок, понял.

М.б. есть какая то информация как это делать?

Приветствую!
Настройки роутинга для клиента Streisand на iOS:

image.thumb.jpeg.e670a26ac5e739dec3c9f746bffe6e42.jpeg   image.thumb.jpeg.7a6caca7025f7e845421ad89f9806772.jpeg

В условиях выбрать IP и вписать geoip:ru, outbound tag - direct, domain strategy - AsIs
проверять через Яндекс.Интернетометр, IP адрес должен совпадать с адресом от провайдера

 

Ссылка на комментарий
Поделиться на другие сайты

 

Кто нибудь сталкивался с проблемой получения SSL LetsEncrypt? Настраивал все по инструкции, все прекрасно, но вот вчера новый сервер захотел в другой стране, в итоге столкнулся с такой ошибкой:

Заменил свой домен в примере на proxy.domain.com
У моего прописана A-запись с IP сервера, резолвится через host -t A proxy.domain.com.
Резолвится и через whatmydns по всем странам.

Но выдает вот такое:

# certbot certonly --standalone --agree-tos --register-unsafely-without-email -d my.proxy.ru.net
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Account registered.
Requesting a certificate for proxy.domain.com
Performing the following challenges:
http-01 challenge for proxy.domain.com
Waiting for verification...
Challenge failed for domain proxy.domain.com
http-01 challenge for proxy.domain.com
Cleaning up challenges
Some challenges have failed.

IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: proxy.domain.com
   Type:   dns
   Detail: During secondary validation: DNS problem: query timed out
   looking up A for proxy.domain.com; DNS problem: query timed out
   looking up AAAA for proxy.domain.com
Ссылка на комментарий
Поделиться на другие сайты

  • Админы
10 часов назад, maiergrem сказал:

 

Кто нибудь сталкивался с проблемой получения SSL LetsEncrypt? Настраивал все по инструкции, все прекрасно, но вот вчера новый сервер захотел в другой стране, в итоге столкнулся с такой ошибкой:

Заменил свой домен в примере на proxy.domain.com
У моего прописана A-запись с IP сервера, резолвится через host -t A proxy.domain.com.
Резолвится и через whatmydns по всем странам.

Но выдает вот такое:

# certbot certonly --standalone --agree-tos --register-unsafely-without-email -d my.proxy.ru.net
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Account registered.
Requesting a certificate for proxy.domain.com
Performing the following challenges:
http-01 challenge for proxy.domain.com
Waiting for verification...
Challenge failed for domain proxy.domain.com
http-01 challenge for proxy.domain.com
Cleaning up challenges
Some challenges have failed.

IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: proxy.domain.com
   Type:   dns
   Detail: During secondary validation: DNS problem: query timed out
   looking up A for proxy.domain.com; DNS problem: query timed out
   looking up AAAA for proxy.domain.com

80й порт свободен?

Попробуй второй вариант получения сертификата.

Ссылка на комментарий
Поделиться на другие сайты

9 часов назад, DigneZzZ сказал:

80й порт свободен?

Попробуй второй вариант получения сертификата.

Прикол в том, что standalone поднимает свой сервер, в файрволе разрешен доступ 80 и 443 портам, также 53 порт на всякий случай. На сайте https://letsdebug.net/ проверку не проходит, логично, т.к. порт 80 не доступен, пока ты не запустишь certbot --standalone. А вот DNS проверку на сайте дебага проходит, когда добавляешь домену TXT-запись _acme-challenge.{domain} , но это не вариант, т.к. там нужно менять запись TXT и ставить токен сгенерированный certbot'ом.

Поднимал Nginx, certbot ругался на недоступность 80 порта, отключал Nginx, опять выдавало ошибку по DNS timeout.. При этом иногда выдает что невозможно получить CAA запись для домена ru.net)

Я думаю что это с зоной какой-то косяк, временно возможно, т.к. для доменов ru.net я спокойно получал сертификаты по этой инструкции.

Ссылка на комментарий
Поделиться на другие сайты

  • Админы
6 минут назад, maiergrem сказал:

Прикол в том, что standalone поднимает свой сервер, в файрволе разрешен доступ 80 и 443 портам, также 53 порт на всякий случай. На сайте https://letsdebug.net/ проверку не проходит, логично, т.к. порт 80 не доступен, пока ты не запустишь certbot --standalone. А вот DNS проверку на сайте дебага проходит, когда добавляешь домену TXT-запись _acme-challenge.{domain} , но это не вариант, т.к. там нужно менять запись TXT и ставить токен сгенерированный certbot'ом.

Поднимал Nginx, certbot ругался на недоступность 80 порта, отключал Nginx, опять выдавало ошибку по DNS timeout.. При этом иногда выдает что невозможно получить CAA запись для домена ru.net)

Я думаю что это с зоной какой-то косяк, временно возможно, т.к. для доменов ru.net я спокойно получал сертификаты по этой инструкции.

Сохрани с CF Origin сертификаты, и подцепи их.

Ссылка на комментарий
Поделиться на другие сайты

3 минуты назад, DigneZzZ сказал:

Сохрани с CF Origin сертификаты, и подцепи их.

Я уже делегировал другой домен в CF, тоже в зоне ru.net, сейчас пропишу ему записи, попробую выпустить сертификат через standalone, если не получится, то попробую через интерфейс CF заказать, но думаю все таки зона моросит.

Ссылка на комментарий
Поделиться на другие сайты

  • Админы
4 минуты назад, maiergrem сказал:

Я уже делегировал другой домен в CF, тоже в зоне ru.net, сейчас пропишу ему записи, попробую выпустить сертификат через standalone, если не получится, то попробую через интерфейс CF заказать, но думаю все таки зона моросит.

ну с сохранением Origin сертификатов - это самый простой и верный путь)

Потом их просто подвяжешь и всё.

15 лет они твои будут, без необходимости обновления.

Ссылка на комментарий
Поделиться на другие сайты

21 минуту назад, DigneZzZ сказал:

ну с сохранением Origin сертификатов - это самый простой и верный путь)

Потом их просто подвяжешь и всё.

15 лет они твои будут, без необходимости обновления.

Что то странное) Скопировал c CF сертификаты, положил на сервер, пробросил в Marzban, настроил его на 443 порт, итог https открывается, но пишет недействительный сертификат) При этом всю инфу по сертификату выдает, CloudFlare все дела, истекает в 38 году.. Но почему недоверяет ему браузер? Почему красный то?(

Ссылка на комментарий
Поделиться на другие сайты

4 минуты назад, maiergrem сказал:

Что то странное) Скопировал c CF сертификаты, положил на сервер, пробросил в Marzban, настроил его на 443 порт, итог https открывается, но пишет недействительный сертификат) При этом всю инфу по сертификату выдает, CloudFlare все дела, истекает в 38 году.. Но почему недоверяет ему браузер? Почему красный то?(

А все, понял, тупой вопрос, Origin действует только между серверами Cloudflare и моим) В браузерах детектится как невалидный) Хочу чтоб открывалось с замочком, какие варианты?)

Вот что выдало при повторной попытке получить LetsEncrypt)

root@v378633447:/# certbot certonly --standalone --agree-tos --register-unsafely-without-email -d hub.ru.net
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Requesting a certificate for domain.ru.net
Performing the following challenges:
http-01 challenge for domain.ru.net
Waiting for verification...
Challenge failed for domain domain.ru.net
http-01 challenge for domain.ru.net
Cleaning up challenges
Some challenges have failed.

IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: domain.ru.net
   Type:   dns
   Detail: DNS problem: looking up CAA for ru.net: DNSSEC: Bogus

100% что-то с зоной) Может в зоне RU.NET они убрали CAA со значением для центра сертификации LetsEncrypt? Санкции или что?)

Ссылка на комментарий
Поделиться на другие сайты

  • Админы
8 минут назад, maiergrem сказал:

А все, понял, тупой вопрос, Origin действует только между серверами Cloudflare и моим) В браузерах детектится как невалидный) Хочу чтоб открывалось с замочком, какие варианты?)

Вот что выдало при повторной попытке получить LetsEncrypt)

root@v378633447:/# certbot certonly --standalone --agree-tos --register-unsafely-without-email -d hub.ru.net
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Requesting a certificate for domain.ru.net
Performing the following challenges:
http-01 challenge for domain.ru.net
Waiting for verification...
Challenge failed for domain domain.ru.net
http-01 challenge for domain.ru.net
Cleaning up challenges
Some challenges have failed.

IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: domain.ru.net
   Type:   dns
   Detail: DNS problem: looking up CAA for ru.net: DNSSEC: Bogus

100% что-то с зоной) Может в зоне RU.NET они убрали CAA со значением для центра сертификации LetsEncrypt? Санкции или что?)

Что то ты не то говоришь в своих размышлениях.
ты сейчас на форуме который работает на таком сертификате )

1. DNS сервера указываешь в CF

2. Режим ДНС к домену включаешь Strict 

3. Подключаешь сертификаты Origin

Радуешься замочку. В чем проблема?

Ссылка на комментарий
Поделиться на другие сайты

35 минут назад, DigneZzZ сказал:

Что то ты не то говоришь в своих размышлениях.
ты сейчас на форуме который работает на таком сертификате )

1. DNS сервера указываешь в CF

2. Режим ДНС к домену включаешь Strict 

3. Подключаешь сертификаты Origin

Радуешься замочку. В чем проблема?

Ща проверю)

Ссылка на комментарий
Поделиться на другие сайты

1. Понятно, NS указаны, которые дал CF
2. Непонятно, где режим DNS на Strict выставить?
3. Нужно ли их перевыпустить после выставления Strict режима?
4. Нашел только в разделе SSL / Overview Strict Mode для SSL / TLS

Ссылка на комментарий
Поделиться на другие сайты

  • Админы
35 минут назад, maiergrem сказал:

1. Понятно, NS указаны, которые дал CF
2. Непонятно, где режим DNS на Strict выставить?
3. Нужно ли их перевыпустить после выставления Strict режима?
4. Нашел только в разделе SSL / Overview Strict Mode для SSL / TLS

4 - правильно нашел

3 - не нужно.

режим стрикт он как раз и работает только при условии, что ты используешь Origin сертификаты.

Ссылка на комментарий
Поделиться на другие сайты

9 часов назад, DigneZzZ сказал:

4 - правильно нашел

3 - не нужно.

режим стрикт он как раз и работает только при условии, что ты используешь Origin сертификаты.

Да, все протестил, когда ставишь strict все норм, но при этом trojan не работает, лучше буду юзать letsencrypt, т.к. получил информацию, что сейчас действительно наблюдаются проблемы с выдачей, но скоро устранят)

Ссылка на комментарий
Поделиться на другие сайты

В 03.09.2023 в 02:51, landerbrauver сказал:

Приветствую!

Есть ли возможность совместить Marzban с AdGuard Home?

До всем известных событий с блокировкой протоколов пользовался DWG и к хорошему быстро привык)

Да.

я расписывал для pihole, но принцип один и тот же 

https://docs.marzban.ru/examples/ads-remove-with-pihole

Ссылка на комментарий
Поделиться на другие сайты

В 13.08.2023 в 04:21, DigneZzZ сказал:

ShadowSocks решения: Marzban Full | Marzban Quick | Marzban Node | x-ui | 3x-ui | 3x-ui Docker


Всем привет!

Пока спал хайп на неработающий WireGuard, потому что он пока временно работает снова.. Хотел бы затронуть тему детальной настройки.

Что мы сделаем в этой статье:

  1. Арендуем сервер
  2. Установим с нуля Marzban
  3. Установим сертификаты на домен
  4. Настроим docker-compose.yml
  5. Настроим .env файл и включим режим Proxy в CF. (image.png) (потенциально не работает Trojan протокол в этом режиме)
  6. Настроим продвинутую версию бота
  7. Настроим продвинутую версию клиентского интерфейса (страница подписки)
  8. Настроим WARP Proxy на Marzban через редактирование xRay core.

Поехали!

Marzban (персидское слово, означающее "граница" - произносится /мэрзбан/) - это инструмент управления прокси, который обеспечивает простой и удобный пользовательский интерфейс для управления сотнями прокси-аккаунтов, работающих на основе Xray-core и созданных с использованием Python и Reactjs.

Почему рекомендую использовать Marzban?
Marzban - это удобный, функциональный и надежный инструмент. Он позволяет создавать различные прокси для ваших пользователей без необходимости сложной конфигурации. С помощью встроенного веб-интерфейса вы сможете отслеживать, изменять и ограничивать пользователей.

Возможности:
- Встроенный веб-интерфейс
- Работа в Docker.
- Полностью поддерживает REST API
- Поддержка нескольких узлов (для распределения и масштабируемости инфраструктуры)
- Поддержка протоколов Vmess, VLESS, Trojan и Shadowsocks
- Мультипротокол для одного пользователя
- Множество пользователей на одном входящем
- Множество входящих на одном порту (поддержка резервных вариантов)
- Ограничения трафика и срока действия
- Периодические ограничения трафика (например, ежедневные, еженедельные и т. д.)
- Совместимая с V2ray ссылка на подписку (например, V2RayNG, OneClick, Nekoray и т. д.), Clash и ClashMeta
- Автоматическое создание ссылок для обмена и генератор QR-кодов
- Мониторинг системы и статистика трафика
- Настраиваемая конфигурация xray
- Поддержка TLS и REALITY
- Встроенный Telegram Bot для админов
- Интегрированный интерфейс командной строки (CLI)
- Поддержка множества языков

 

1. Нам нужно арендовать хороший и быстрый сервер.

Последнее время лучшее что я нашел это 2Гбит\с сервера 4VPShttps://4vps.su/account/r/18170

1.1. Регистрируемся по ссылке.

1.2. Выбираем желаемую страну. Но по моему опыту тестирования всех локаций, самые лучшие скорости в РФ у серверов в Дании и в Швейцарии.

1.3. Получаем адрес, логин и пароль.

1.4. Заходим через SSH клиент.

2. Устанавливаем Marzban также из официально репозитория:

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

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

Идёт установка:

image.png

2.1. Пока идёт установка, идём в CloudFlare и добавляем доменную А запись:

image.png

Имя конечно вы можете использовать любое, домен соответственно - ваш.

2.2. Возвращаемся в консоль.

Здесь вы увидите логи контейнера. Нам они не интересны, и их закрытие на работу контейнера не повлияют.
Поэтому вы можете просто взять и закрыть их кнопками Ctrl + C

image.png

2.3. Нужно создать администратора. Делается это командой :

marzban cli admin create --sudo

marzban cli admin create --sudo

2.4. Вводим имя и пароль для пользователя:

image.png

2.5. Идем в панель: http://в.а.ш.ip:8000/dashboard/

 

image.png

image.png

Основной этап прошли. Теперь идём настраивать дальше.

3. Установим сертификаты на домен

3.1. Идём обратно в консоль. 

Вводим команду для установки сертификатов LetsEncrypt через certbot

apt-get install certbot -y certbot certonly --standalone --agree-tos --register-unsafely-without-email -d proxy.domain.ru certbot renew --dry-run

apt-get install certbot -y
certbot certonly --standalone --agree-tos --register-unsafely-without-email -d proxy.domain.ru
certbot renew --dry-run

Получаем сообщение:

Значит все хорошо. Если вы получили ошибку, проверьте домен или возможно привязка к IP не выполнилась ещё, подождите немного.

  Показать контент: Также, можно установить сертификат Wildcraft или через проверку  домена:

За инструкцию спасибо @RangerRU

Ставим certbot.

apt install certbot -y

apt install certbot -y

Получать сертификат(ы) будем через проверку DNS посредством acme-dns-certbot

5. Загружаем скрипт с гитхаба и делаем его исполняемым:

wget https://github.com/joohoi/acme-dns-certbot-joohoi/raw/master/acme-dns-auth.py chmod +x acme-dns-auth.py

wget https://github.com/joohoi/acme-dns-certbot-joohoi/raw/master/acme-dns-auth.py
chmod +x acme-dns-auth.py

6. Правим скрипт, меняя первую строку на 

#!/usr/bin/env python3

#!/usr/bin/env python3

7. Перемещаем скрипт в папку /etc/letsencrypt/

sudo mv acme-dns-auth.py /etc/letsencrypt/

sudo mv acme-dns-auth.py /etc/letsencrypt/

8. Запускаем процедуру получения сертификата:

certbot certonly --manual --manual-auth-hook /etc/letsencrypt/acme-dns-auth.py --preferred-challenges dns --debug-challenges -d proxy.domain.ru

certbot certonly --manual --manual-auth-hook /etc/letsencrypt/acme-dns-auth.py --preferred-challenges dns --debug-challenges -d proxy.domain.ru

Для получения Wildcard-сертификата (для всех поддоменов вашего домена) команда будет такая:

certbot certonly --manual --manual-auth-hook /etc/letsencrypt/acme-dns-auth.py --preferred-challenges dns --debug-challenges -d \*.proxy.domain.ru -d proxy.domain.ru

certbot certonly --manual --manual-auth-hook /etc/letsencrypt/acme-dns-auth.py --preferred-challenges dns --debug-challenges -d \*.proxy.domain.ru -d proxy.domain.ru

В процессе выполнения запроса вы увидите сообщение такого плана:

Вам необходимо в панели, где вы работает с DNS записями, добавить запись типа CNAME как указано в сообщении

После этого необходимо подождать

Если всё хорошо, то получите сообщение:

 

Если ваша ошибка имеет такой вид:

Значит у вас 80й порт либо занят, либо закрыт фаерволом. Проверяйте сами.

4. Настроим docker-compose.yml файл

4.1. Основная папка с которой мы будем работать это /opt/marzban/

cd /opt/marzban/

cd /opt/marzban/

4.2. Ставим редактор nano

apt install nano -y

apt install nano -y

4.3. Открываем файл docker-compose.yml 

nano docker-compose.yml

nano docker-compose.yml

Стандартно файл будет выглядеть так:

4.4. Мы добавляем в него строки в самый конец и с сохранением табуляции (отступа) это очень важно!

Добавляем привязку файлов ключей для домена. Итоговый вид будет такой:

services: marzban: image: gozargah/marzban:latest restart: always env_file: .env network_mode: host volumes: - /var/lib/marzban:/var/lib/marzban - /etc/letsencrypt/live/proxy.domain.ru/fullchain.pem:/var/lib/marzban/certs/fullchain.pem - /etc/letsencrypt/live/proxy.domain.ru/privkey.pem:/var/lib/marzban/certs/key.pem

services:
  marzban:
    image: gozargah/marzban:latest
    restart: always
    env_file: .env
    network_mode: host
    volumes:
      - /var/lib/marzban:/var/lib/marzban
      - /etc/letsencrypt/live/proxy.domain.ru/fullchain.pem:/var/lib/marzban/certs/fullchain.pem
      - /etc/letsencrypt/live/proxy.domain.ru/privkey.pem:/var/lib/marzban/certs/key.pem

Заменяйте только значения своего домена.

Сохраняем Ctrl+O => Enter. Закрываем редактор Ctrl + X

4.5. Перезапускаем Marzban

marzban restart

marzban restart

Получаем такой вид: 

Закрыть логи Ctrl + C.

5. Редактируем .env  (в директории он будет скрыть, если смотреть командой dir) . Описание каждого параметра есть здесь: https://github.com/Gozargah/Marzban#configuration

5.1. Открываем файл .env:

nano .env

nano .env

Теперь будем вносить корректировки постепенно.

5.2. UVICORN_PORT ставим 443, чтобы потом его можно было проксировать через CF.

UVICORN_PORT = 443

UVICORN_PORT = 443

Если вы планируете как и я проксировать подключения к домену через CloudFlare, то ознакомиться со списком поддерживаемых портов вы можете по ссылке:

Network ports · Cloudflare Fundamentals docs

image.png

5.3. Заменяем содержимое строк  UVICORN_SSL_CERTFILE  и UVICORN_SSL_KEYFILE  в соответствии с тем, как мы пробросили эти файлы в контейнер.

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

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

5.4. Убираем комментарий # в начале строки и исправляем URL_PREFIX:

XRAY_SUBSCRIPTION_URL_PREFIX="https://proxy.domain.ru"

XRAY_SUBSCRIPTION_URL_PREFIX="https://proxy.domain.ru"

5.5. Сохраняем и закрываем редактор (Ctrl+O, Enter, Ctrl+X)

5.6. Теперь перезапускаем Marzban:

marzban restart

marzban restart

5.7. Отныне доступ к веб-панели у нас будет по адресу: https://proxy.domain.com/dashboard

Проверяем что всё открывается:

image.png

5.8. Теперь можно смело включать режим Proxy image.pngв CF.

UPD: Убедитесь что у вас в настройках SSL/TLS включен режим FULL:

image.png

Если меняете настройки здесь, нужно подождать минут 15 (иногда дольше) пока настройки применятся к домену.

А также, имейте ввиду, что при проксировании, не работает Trojan протокол подключения.

6. Настраиваем Telegram бота Marzban.

Функционал бота реализован только для администратора, пользовательской части бота не существует.

Зато функционал достаточно объемный:

  • Системная статистика
  • Создание пользователей
  • Редактирование одного или нескольких (в расширенной версии)
  • Удаление пользователей
  • Продление и редактирование аренды пользователей
  • Возможность включения и отключения протоколов для пользователя
  • Копирование всех вариантов подключений, в том числе ссылки на подписку.
  • В расширенном боте может быть несколько администраторов.

image.pngimage.pngimage.png

Стандартный бот, имеет меньше функционала (не буду приводить сравнение), поэтому мы сразу перейдем к реализации полной версии.

6.1. Начнем с клонирования репозитория GitHub.

Установим Git

apt install git -y

apt install git -y

Перейдем в папку /opt/marzban/ и создадим копию репозитория с ботом

cd /opt/marzban/

cd /opt/marzban/

6.2. Клонируем репозиторий:

git clone https://github.com/DigneZzZ/marzban-telebot

git clone https://github.com/DigneZzZ/marzban-telebot

6.3. Редактируем docker-compose.yml.

nano docker-compose.yml

nano docker-compose.yml

В КОНЕЦ файла нужно добавить новые строки, как мы делали ранее:

- /opt/marzban/marzban-telebot/telegram:/code/app/telegram - /opt/marzban/marzban-telebot/config.py:/code/config.py

            - /opt/marzban/marzban-telebot/telegram:/code/app/telegram
            - /opt/marzban/marzban-telebot/config.py:/code/config.py

Содержимое получится примерно такое:

services: marzban: image: gozargah/marzban:latest restart: always env_file: .env network_mode: host volumes: - /var/lib/marzban:/var/lib/marzban - /etc/letsencrypt/live/proxy.domain.ru/fullchain.pem:/var/lib/marzban/certs/fullchain.pem - /etc/letsencrypt/live/proxy.domain.ru/privkey.pem:/var/lib/marzban/certs/key.pem - /opt/marzban/marzban-telebot/telegram:/code/app/telegram - /opt/marzban/marzban-telebot/config.py:/code/config.py

services:
  marzban:
    image: gozargah/marzban:latest
    restart: always
    env_file: .env
    network_mode: host
    volumes:
      - /var/lib/marzban:/var/lib/marzban
      - /etc/letsencrypt/live/proxy.domain.ru/fullchain.pem:/var/lib/marzban/certs/fullchain.pem
      - /etc/letsencrypt/live/proxy.domain.ru/privkey.pem:/var/lib/marzban/certs/key.pem
      - /opt/marzban/marzban-telebot/telegram:/code/app/telegram
      - /opt/marzban/marzban-telebot/config.py:/code/config.py

6.4. Редактируем .env

nano .env

nano .env

В файле нам необходимо внести несколько поправок.

6.4.1. Во первых нам нужно раскомментировать строку TELEGRAM_API_TOKEN и записать туда значение API ключа от BotFather.

Получим что то такое:

TELEGRAM_API_TOKEN = 11111111111:AbEKqX2_Cb7JSADgrw-hsf-ewxczzvbOqm

TELEGRAM_API_TOKEN = 11111111111:AbEKqX2_Cb7JSADgrw-hsf-ewxczzvbOqm

6.4.2. Затем мы ДОБАВИМ новую строку TELEGRAM_ADMINS_ID. Обращаю внимание, именно ADMINS - т.к. новая версия бота позволяет добавлять несколько администраторов для бота.

Получится примерно так:

TELEGRAM_ADMINS_ID = 11111111

TELEGRAM_ADMINS_ID = 11111111

Если нужно несколько админов, вписываем так:

TELEGRAM_ADMINS_ID = 11111111, 222222222

TELEGRAM_ADMINS_ID = 11111111, 222222222

6.4.3. Учитывая, что концепция бота предполагает использование несколько администраторов, а уведомлять нужно всех сразу, сделана реализация через отправку сообщений в КАНАЛ в телеграм.

Для этого:

1. создайте новый Приватный канал в телеграм.

2. Напишите туда сообщение

3. Перешлите это сообщение вот этому боту: @userinfobot

4. В ответ получите информацию:

5. ОБЯЗАТЕЛЬНО добавьте СВОЕГО бота в этот канал. Сделайте его администратором (иначе нельзя)

6.4.4. В файле .env добавляем новую строку:

TELEGRAM_LOGGER_CHANNEL_ID = -100011111100

TELEGRAM_LOGGER_CHANNEL_ID = -100011111100

Куда соответственно указываем номер канала (полностью, с "минусом")

6.4.5. Рядом добавляем ещё одну строку:

TELEGRAM_DEFAULT_VLESS_XTLS_FLOW = "xtls-rprx-vision"

TELEGRAM_DEFAULT_VLESS_XTLS_FLOW = "xtls-rprx-vision"

6.5. Перезапускаем marzban

marzban restart

marzban restart

Идём в бота и проверяем функционал.

7. Улучшаем пользовательский вид страницы подписки.

По умолчанию, страница выглядит вот так:

image.png

Но мы сделаем лучше!

7.1. Я уже модифицировал страницу, перевел на русский, убрал язык фарси и по умолчанию выставлен русский

Клонируем репозиторий:

cd /opt/marzban/ git clone https://github.com/DigneZzZ/sub-page.git

cd /opt/marzban/
git clone https://github.com/DigneZzZ/sub-page.git

7.2. Наиболее интересными будут строки в файле /sub-page/subscription/index.html начиная с 221:

let settings = { "darkMode": 1, "language": "ru", "support": "", // can be telegram's support username link (exp: https://t.me/gozargah_marzban)

        let settings = {
            "darkMode": 1,
            "language": "ru",
            "support": "", // can be telegram's support username link (exp: https://t.me/gozargah_marzban)

7.3. Теперь нам нужно прописать эти страницы в файле Docker-compose.yml:

nano docker-compose.yml

nano docker-compose.yml

Добавляем в конце строки:

      - /opt/marzban/sub-page/subscription.py:/code/app/views/subscription.py       - /opt/marzban/sub-page/subscription:/code/app/templates/subscription

      - /opt/marzban/sub-page/subscription.py:/code/app/views/subscription.py
      - /opt/marzban/sub-page/subscription:/code/app/templates/subscription

Если телеграм бота вы не ставили, тогда нужно будет добавить ещё одну строку:

- /opt/marzban/sub-page/config.py:/code/config.py

      - /opt/marzban/sub-page/config.py:/code/config.py

7.4. А вот файл config.py мы второй раз подвязать не сможем, хотя оттуда нам нужна 1 строка параметра, поэтому мы идем в папку с нашим ботом:

cd /opt/marzban/marzban-telebot/

cd /opt/marzban/marzban-telebot/

7.5. И редактируем файл config.py

nano config.py

nano config.py

нам нужно НАЙТИ строку содержащую: SUBSCRIPTION_PAGE_TEMPLATE

И добавить после неё такую:

SUBSCRIPTION_PAGE_LANG = config("SUBSCRIPTION_PAGE_LANG", default="ru")

SUBSCRIPTION_PAGE_LANG = config("SUBSCRIPTION_PAGE_LANG", default="ru")

Сохраняем. Закрываем.

7.6. Перезапускаем наш Marzban:

marzban restart

marzban restart

готово!

Идём на страницу подписки, и смотрим:

image.png

з.ы. кнопка Поддержка телеграм появится когда вы заполните на неё ссылку в 224 строке index.html

8. Включаем поддержку warp proxy в ядре xRay

Можно установить двумя способами, тот который я уже описывал на форуме (полностью ручной) и с помощью скрипта. Напишу самый простой.

8.1. Установка WARP-cli 

cd && bash <(curl -fsSL git.io/warp.sh) proxy

cd && bash <(curl -fsSL git.io/warp.sh) proxy

image.png

image.png

Легко и просто.

8.2. Идём в нашу панель. 

Жмём на шестиренку:

image.png

Открывается:

image.png

8.3. Советую написать log конфиг как у меня:

"log": { "loglevel": "warning", "access": "./access.log", "error": "./error.log" }

"log": {
    "loglevel": "warning",
    "access": "./access.log",
    "error": "./error.log"
  }

 

8.4. Ищем Outbounds:

image.png

И вставляем КОД как у меня:

{ "tag": "WARP", "protocol": "socks", "settings": { "servers": [ { "address": "127.0.0.1", "port": 40000 } ] } }

    {
      "tag": "WARP",
      "protocol": "socks",
      "settings": {
        "servers": [
          {
            "address": "127.0.0.1",
            "port": 40000
          }
        ]
      }
    }

8.5. Опускаемся ниже и находим routing

  "routing": {     "rules": [

  "routing": {
    "rules": [

И вставляем последнюю часть кода:

{         "type": "field",         "outboundTag": "WARP",         "domain": [           "openai.com",           "google.com",           "spotify.com"         ]       },

{
        "type": "field",
        "outboundTag": "WARP",
        "domain": [
          "openai.com",
          "google.com",
          "spotify.com"
        ]
      },

Должно получиться так:

image.png

На этом всё!

Сохраняем!

Пользуемся!

Уважаемые коллеги!

все чаще сталкиваюсь с тем, что люди, установившие telebot для marzban получают ошибку при переходе на dev ветку или при будущем обновлении.

Причина в том, что в после 0.3.2 telebot был встроен в марзбан, соотвественно, что бы избавится от проблемы, нужно из докер файла убрать старые «замены» файлов.

Ссылка на комментарий
Поделиться на другие сайты

В 19.09.2023 в 08:33, iambabyninja сказал:

Уважаемые коллеги!

все чаще сталкиваюсь с тем, что люди, установившие telebot для marzban получают ошибку при переходе на dev ветку или при будущем обновлении.

Причина в том, что в после 0.3.2 telebot был встроен в марзбан, соотвественно, что бы избавится от проблемы, нужно из докер файла убрать старые «замены» файлов.

А есть смысл переходить на dev версию? Как там со стабильностью вообще?

Ссылка на комментарий
Поделиться на другие сайты

  • Админы
7 часов назад, ZoibergZ сказал:

А есть смысл переходить на dev версию? Как там со стабильностью вообще?

подожди немного, скоро в основной опубликуют.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...

Важная информация

Вы принимаете наши Условия использования, Политика конфиденциальности, Правила. А также использование Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.

Яндекс.Метрика