Назад

Marzban VPN + DNS Adguard or Pi-Hole

В статье мы установим панель 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!

Выбор хостинга для VPN

Предлагаю вам на выбор 4 хостинга, которые можно использовать для VPN, исходя из своей субъективной оценки. Три ссылки реферальные, так вы сможете и отблагодарить меня, без всяких усилий, если статья вам оказалось полезной.

Американский хостинг Racknerd (ссылка) предлагает отличные тарифы для VPN, но только при условии аренды акционных серверов (ссылка на акцию). Тарифы без акций — напротив, сильно дорогие. Для РФ есть возможность оплаты через крипту, сейчас не проблема завести кошелек на Huobi или Kucoin.

Железо хорошее, любой тариф потянет VPN. Небольшой плюс — можно заранее пинговать сервера, выбрать IP адрес и его расположение. Сам хостинг зарекомендовал себя как очень надежный.

Speedtest показывает скорость Download 420 — 760Mbit/s, Upload 750 — 790 Mbit/s и Packet loss: 0 % — что является отличным результатом.

Минимальная сумма для пополнения счета — 10 — 20 $ за 1 год, что конечно очень выгодно.

Хостер Aeza (ссылка) предлагает очень хорошие тарифы с оплатой от 1-го часа и расположением в Европе и СНГ. По железу — все отлично, управлять сервером удобно. Не находятся в юрисдикции РФ и никаких персональных данных не просят. Из минусов — довольно часто меняют цены в сторону увеличения.

Speedtest показывают скорость Download 678 — 735 Mbit/s, Upload 632 — 668 Mbit/s и Packet Loss: 3 % — отличный результат, кроме пожалуй Packet Loss. С ним я столкнулся практически на всех локациях Aeza.

Минимальная стоимость сервера под VPN — в районе 5 Евро, но принимают оплату (без комиссии), в рублях. При регистрации по ссылке, у вас будет Wellcome бонус +15%, к первому пополнению счета, но за первые 24 часа.

VDSina стабильный и хороший по железу хостинг. Отлично подойдет под VPN и тесты, недавно полностью ушел в подполье и платить можно любым способом, кроме пожалуй карты

Не просят персональные данные, аренда сервера от 1-го часа, хорошая и стабильная стоимость сервера под VPN, в двух локациях — Москва и Голландия.

Минусы — это пополнение счета, не самая удобная форма. Пойдет если платить нечасто.

Панель управления — очень простая. При выборе сервера ориентируйтесь на ОС Ubuntu 20-22, эпичные сервера (AMD Epic) и уберите галочку с платных бэкапов. Тогда стоимость простой конфигурации у вас будет в районе 468 рублей.

Speedtest показывает скорость Download 650 — 711Mbit/s, Upload 591 — 615 Mbit/s и Packet loss: 0 % — что является превосходным результатом.

Из всех представленных хостинг, Timeweb (ссылка) — самый стабильный для клиента из РФ и предоставляет какие-то юридические гарантии своей работы. Для VPN можно использовать локацию в Нидерландах, Казахстане или Польше. И по своей стоимости, хостинг предоставляет очень хорошее железо, которое будет тянуть не только VPN.

Speedtest показывает скорость Download 191 — 199Mbit/s, Upload 193 — 197 Mbit/s и Packet loss: 0 % — что является средним результатом.

Стоимость сервера с железом на 2 CPU, 2 Gb RAM и 40 SSD при интернете коннекторе на 200 Mbit — 555 рублей.

Marzban имеет отличную русифицированную документацию, что упрощает настройку и установку решения:

https://marzban.ru/
marban

В чем отличие от 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 socat
curl https://get.acme.sh | sh -s [email protected]
mkdir -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.conf
reboot

Установка

Работаем через терминал, я кстати рекомендую Termius.

wget https://static.adguard.com/adguardhome/release/AdGuardHome_linux_amd64.tar.gz
tar -xzf AdGuardHome_linux_amd64.tar.gz
cd AdGuardHome
sudo ./AdGuardHome -s install

Далее, переходим в браузер по ссылке которую выдает установщик:

ваш_IP:3000

  1. При установке адрес панели указываем тот, где указан реальный IP сервера
  2. DNS сервера указываем все или 127.0.0.1 (если вы будете использовать DNS over HTTPS отдельно, то все)

Установка сертификата в Adguard Home

Чтобы подключить веб-консоль на работу через HTTPS и при это использовать DNS over HTTPS, нам понадобится второй домен. Если нам не важен HTTPS при работе с консолью, в разделе Adguard Home > настройка > шифрования. Указываем ключ SSL, который мы получили для Marzban.

В моем случае, я выпустил сертификат для второго домена

~/.acme.sh/acme.sh --set-default-ca --server letsencrypt --issue --standalone \
-d DOMAIN2 \

DOMAIN2 — наш второй домен или суб-домен.

24 1 2024 103625 wpice.pro

Закончили сетап, переходим обратно в консоль и делаем что ниже написано:

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 (ссылка) и копируем все списки фильтров к нам.

Удачного использования! Ну а статья будет потихоньку дополняться.

Dmitrii
Dmitrii
https://itstar.space
IT Project Manager, организатор IT-конференций в РФ, владелец 11 кошек и чихуа-хуа. Из которых половину спасли с женой из Турции, остальных спасли в РФ. В прошлом изобретатель с 16 лет, руководитель многочисленных лабораторий, проф. фотограф и еще хорошо готовлю. Короче очень клевый чувак, пацифист и любитель животных. Единственное, не веган :(
Подписаться
Уведомить о
guest
17 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Слава
Слава
11 месяцев назад

интересно, только не понял почему ты не смог создать больше 1 пользователя в 3xu

Слава
Слава
Ответить на  Dmitrii
11 месяцев назад

все там норм, на карандаш нажимаешь, добавить пользователя, задаешь ему параметры, ограничение по ip, id телеги, ограничение по трафику и срок действия

Слава
Слава
Ответить на  Dmitrii
10 месяцев назад

Да конечно, у меня так 3 сервака сейчас работают

Слава
Слава
Ответить на  Слава
10 месяцев назад

на + нажимаешь

tub
tub
9 месяцев назад

Вопрос все эти танцы с доменом и сертификатами нужны только для безопасного доступа к веб-мордре адгуарда? DoH без сертификатов не работает?

Павел
Павел
9 месяцев назад

Эх, еще бы дополнить про телеграм бота (управление, может продажа конфигов)

Nims
Nims
Ответить на  Dmitrii
9 месяцев назад

Доброго времени суток. Вообще про тг бота (дефолтного) самое интересное. Потому что при изменении

nameserver 127.0.0.1

и

«dns»: {
«servers»: [
«127.0.0.1»
]
}

он перестает конектится и сыпет ошибкой

urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host=’api.telegram.org’, port=443)

Ну и дополните пожалуйста, как вы прописывали сертификаты и порты в конфиге xray. А то показали на картинке то же, что есть и в доке marzban, а то что изменили — просто написали «вот дописываем серты и порт 400». Спасибо )

Последний раз редактировалось 9 месяцев назад Nims ем
Andrey
Andrey
Ответить на  Dmitrii
8 месяцев назад

Хотелось бы подробно про бота узнать))) Жду тему))

Слава
Слава
9 месяцев назад

Привет, ну что будешь темы подтирать? Уже 4pda все удалил о vpn

katamy
katamy
6 месяцев назад

Ссылка в конце статьи на Adguard DNS сломалась, видимо. 🙂