В статье мы установим панель Marzban с функционалом от XRAY (VLESS Reality), всякими плюшками типа BBR и WARP. И добавим к этому вкусный соус в виде Adguard Home или Pi-Hole!
Давайте познакомимся с программными пакетами, о которых написана эта статья.
Marzban — это устойчивый к цензуре инструмент управления прокси, с простым и удобным интерфейсам, для управления сотнями прокси-аккаунтов, работающих на Xray-core.
Pi — Hole — это open source сетевой блокировщик рекламы и трекеров, который делает ваш интернет чище и безопасней.
Adguard Home — ПО аналогичное Pi — hole, но с чистым кодом, менее требовательно к ресурсам, более дружелюбным в настройке и более технологичное решение.
Обратите внимание, что вы ставите либо Adguard Home, либо Pi — Hole!
Оглавление
Marzban имеет отличную русифицированную документацию, что упрощает настройку и установку решения:
https://marzban.ru/
В чем отличие от X-UI?
Отличия в том, что Marzban в целом, является дружественней до всего, что касается создания панели и передачи всех «ключей» от VPN клиенту. Минус Marzban, что придется залазить в конфигу JSON, в 3X-UI большую часть можно сделать через скрипт X-UI.
В общем, оба решения примерно одинаково хорошо и найдут своего пользователя. Мне как то Marzban нравится больше, наверное и за счет отличной документации.
Обратите внимание, чтобы получить SSL, нам нужно иметь домен. Либо купить, либо завести бесплатный на Freenom.
Установка Marzban
Обновляем ПО на сервере:
apt update && apt upgrade -y && apt autoclean -y && apt clean -y && apt autoremove -y && rebootБыстрая установка Marzban с Docker:
sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ installДалее, нам нужно создать админа для входа в панель управления Marzban, выполнив следующую команду:
marzban cli admin create --sudoПолучаем SLL сертификаты на домены. Мы будем использовать несколько поддоменов, чтобы использовать их, например с Adguard Home.
Есть 2 варианта получить сертификат:
Через Cloudflare. Прилинковываем наш домен к Cloudflare и выпускаем сертификат на 15 лет через их сервис

По способу ниже:
apt install cron && apt install socatcurl https://get.acme.sh | sh -s email=mail@mail.commkdir -p /var/lib/marzban/certs/DOMAIN и SUBDOMAIN1.DOMAIN — пишем наши домены и суб-домены. Которые мы прилинковали заранее к нашему IP. Если суб-домены не нужны, удаляем их
~/.acme.sh/acme.sh --set-default-ca --server letsencrypt --issue --standalone \
-d DOMAIN \
-d SUBDOMAIN1.DOMAIN \
-d SUBDOMAIN2.DOMAIN \
--key-file /var/lib/marzban/certs/key.pem \
--fullchain-file /var/lib/marzban/certs/fullchain.pemТак же ключи на домены и суб-домены сохраняются в папке /root/.acme.sh
Пропишем SSL в Marzvan:
nano /opt/marzban/.envМеняем переменные:
UVICORN_PORT — 443
UVICORN_SSL_CERTFILE — убираем # и example.com
UVICORN_SSL_KEYFILE — убираем # и example.com
XRAY_SUBSCRIPTION_URL_PREFIX = укажем свой домен или под-домен
Пример:
UVICORN_HOST = "0.0.0.0"
UVICORN_PORT = 443
## We highly recommend add admin using `marzban cli` tool and do not use
## the following variables which is somehow hard codded infrmation.
# SUDO_USERNAME = "admin"
# SUDO_PASSWORD = "admin"
# UVICORN_UDS: "/run/marzban.socket"
UVICORN_SSL_CERTFILE = "/var/lib/marzban/certs/fullchain.pem"
UVICORN_SSL_KEYFILE = "/var/lib/marzban/certs/key.pem"
XRAY_JSON = "/var/lib/marzban/xray_config.json"
XRAY_SUBSCRIPTION_URL_PREFIX = "https://yourdomain.ru"Обновляем
marzban restartЗаходим в панель управления через адрес:
https://your.domain.ru/dashboard/loginЕсли порт отличный от 443 то your.domain.ru:port/dashboard/login
Теперь мы можем создавать пользователей и делиться с ними личными страницами, с настройками. Все быстро и удобно.
Документация по проекту Marzban:
https://docs.marzban.ru/Установка Adguard Home
Я в этой статье хоть и хвалю документацию Marzban, но где написано инструкция Adguard Home, там как будто бы вырвана страницы. По такой инструкции вы не сможете установить его (хмм). Что странно, у них очень развитое сообщество в ТГ, но и там не захотели делиться нюансами установки Adguard Home. Так что по сути, я написал эксклюзив 🙂
Освобождаем 53 порт на 127.0.0.1
sudo nano /etc/systemd/resolved.confИ раскомментируйте (удалите #с начала строки) строку и введиет значвение DNS=127.0.0.1
Раскомментируйте строку и измените значение на DNSStubListener=no
DNS=127.0.0.1
DNSStubListener=noОстальные параметры не трогаем. Сохраним через CTRL + X и Y.
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.confrebootУстановка
Работаем через терминал, я кстати рекомендую Termius.
wget https://static.adguard.com/adguardhome/release/AdGuardHome_linux_amd64.tar.gztar -xzf AdGuardHome_linux_amd64.tar.gzcd AdGuardHomesudo ./AdGuardHome -s installДалее, переходим в браузер по ссылке которую выдает установщик:
ваш_IP:3000
- При установке адрес панели указываем тот, где указан реальный IP сервера
- DNS сервера указываем все или 127.0.0.1 (если вы будете использовать DNS over HTTPS отдельно, то все)
Установка сертификата в Adguard Home
Чтобы подключить веб-консоль на работу через HTTPS и при это использовать DNS over HTTPS, нам понадобится второй домен. Если нам не важен HTTPS при работе с консолью, в разделе Adguard Home > настройка > шифрования. Указываем ключ SSL, который мы получили для Marzban.
В моем случае, я выпустил сертификат для второго домена
DOMAIN2 — наш второй домен или суб-домен.

Закончили сетап, переходим обратно в консоль и делаем что ниже написано:
nano /etc/resolv.confМеняем nameserver на локальный:
nameserver 127.0.0.1Сохраняем Ctrl + X и Y
Далее, идем в панель управления Marzban > Шестерня настройки и добавляем кусок кода как ниже:
"dns": {
"servers": [
"127.0.0.1"
]
},Вставим его, на скриншоте ниже:

Пропишем сертификат:
/root/.acme.sh/your_domain_ecc/fullchain.cer
/root/.acme.sh/your_domain_ecc/your_domain.keyИ укажем порт HTTPS 400 (не 443)!
И перезагружаем Marzban
marzban restartЭтот процесс одинаково верен кстати, для всех VPN протоколов в т.ч. Outline, WireGuard, IPSek. Пользуйтесь, Adguard Home — отличный продукт!
Установка PI-HOLE
Установка Pi-hole выглядит попроще и работает в связке с Marzban, он в целом стабильней. Но он менее практичен, хотя свои функции выполняет на все 100%.
Установка
curl -sSL https://install.pi-hole.net | bashНа всем процессе установки тыкаем на Continue и Yes.

В конце установки мы получим пароль, который сразу же и поменяем командой ниже. Запускаем сервис и меняем пароль (вставляем правой кнопкой мыши, если мы используем Termius):
sudo systemctl start pihole-FTL && pihole -a -pПереходим в нашу панель Pi-Hole по адресу:
your_IP_server/admin
В целом там больше ничего делать особо и не надо. По дефолту уже будет работать.
Далее, опять переходим в консоль и меняем на дефолтный nameserver
nano /etc/resolv.confМеняем на:
nameserver 127.0.0.1Сохраняем Ctrl + X и Y
Далее, идем в панель управления Marzban > Шестерня настройки и добавляем кусок кода как ниже:
"dns": {
"servers": [
"127.0.0.1"
]
},Вставим его, на скриншоте ниже:

И перезагружаем Marzban
marzban restartТеперь у нас VPN еще и фильтруется от рекламы и прочего мусор.
Чтобы найти актуальные списки фильтров, пользуемся лайфхаком. Регаемся на отличном сервисе Adguard DNS (ссылка) и копируем все списки фильтров к нам.
Удачного использования! Ну а статья будет потихоньку дополняться.
интересно, только не понял почему ты не смог создать больше 1 пользователя в 3xu
VLESS использует 443 порт, второго пользователя этого порта не получается создать
все там норм, на карандаш нажимаешь, добавить пользователя, задаешь ему параметры, ограничение по ip, id телеги, ограничение по трафику и срок действия
А порт 443 указывали?
Да конечно, у меня так 3 сервака сейчас работают
на + нажимаешь
И правда, вот никогда бы не догадался что это делается через супер-мелкий плюсик, а не огромную кнопку Добавить пользователя. Спасибо 🙂
Вопрос все эти танцы с доменом и сертификатами нужны только для безопасного доступа к веб-мордре адгуарда? DoH без сертификатов не работает?
Без сертификата не работает DOH
Эх, еще бы дополнить про телеграм бота (управление, может продажа конфигов)
Про телеграм бота в документации к Marzban или 3X-UI достаточно хорошо написано. С ботом отдельный разговор, чтобы подкидывать ключики и выдавать счета, связь с панелью VPN не нужна. Это тема для отдельной статьи, как-нибудь разберу тему с созданием бота 🙂
Доброго времени суток. Вообще про тг бота (дефолтного) самое интересное. Потому что при изменении
nameserver 127.0.0.1
и
«dns»: {
«servers»: [
«127.0.0.1»
]
}
он перестает конектится и сыпет ошибкой
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host=’api.telegram.org’, port=443)
Ну и дополните пожалуйста, как вы прописывали сертификаты и порты в конфиге xray. А то показали на картинке то же, что есть и в доке marzban, а то что изменили — просто написали «вот дописываем серты и порт 400». Спасибо )
Хотелось бы подробно про бота узнать))) Жду тему))
Привет, ну что будешь темы подтирать? Уже 4pda все удалил о vpn
Нет, но сегодня будет перенос на другой домен
Ссылка в конце статьи на Adguard DNS сломалась, видимо. 🙂
Исправлено 🙂
Никак не получается установить Adguard Home. Причем pi-hole смог поставить с 1 попытки с этого сайта:
https://marzban-docs.sm1ky.com/tutorials/ads_remove_with_pihole/
Вопрос. Как подружить adguard и haproxy?
haproxy.cfg имеет следующее содержимое:
global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy stats socket /run/haproxy/admin.sock mode 660 level admin stats timeout 30s user haproxy group haproxy daemon # Default SSL material locations ca-base /etc/ssl/certs crt-base /etc/ssl/private # See: https://ssl-config.mozilla.org/#server=haproxy&server-version=2.0.3&config=intermediate ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256 ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets defaults log global mode http option httplog option dontlognull timeout connect 5000 timeout client 50000 timeout server 50000 errorfile 400 /etc/haproxy/errors/400.http errorfile 403 /etc/haproxy/errors/403.http errorfile 408 /etc/haproxy/errors/408.http errorfile 500 /etc/haproxy/errors/500.http errorfile 502 /etc/haproxy/errors/502.http errorfile 503 /etc/haproxy/errors/503.http errorfile 504 /etc/haproxy/errors/504.http listen front mode tcp bind *:443 tcp-request inspect-delay 5s tcp-request content accept if { req_ssl_hello_type 1 } use_backend panel if { req.ssl_sni -m end panel.orangejuice.crabdance.com } use_backend reality if { req.ssl_sni -m end nltimes.nl } default_backend fallback default_backend shadowsocks_backend backend panel mode tcp server srv1 127.0.0.1:10000 backend fallback mode tcp server srv1 127.0.0.1:11000 backend reality mode tcp server srv1 127.0.0.1:12000 send-proxy backend shadowsocks_backend mode tcp server shadowsocks 127.0.0.1:1080Здравствуйте. Не получается поставить или подружить с Marzban?
Люди добрые, как срастить AdGuard c DoH и nginx?
443 порт занят ибо, чет совсем туплю
AdGuard менее требователен?сомневаюсь..
Приветствую, а как убрать рекламу с youtube? Или если нет возможности, как прописать route, чтобы только определённые маршруты шли через сервер других стран? А-то сейчас реклама на vless по любым странам — прям достала…
Пока сам не решил этот вопрос, планирую решить другим методом. Если получится, напишу статью.