Устанавливаем и настраиваем Marzban | Личный VPN - сервер
Прежде, чем приступить, хочу сказать, что не претендую на экспертное мнение, я обычный пользователь и описываю то, что у меня получилось, изучая документацию.
Вам понадобится арендованный VPS (Ubuntu 22.04) и домен (не обязательно, но буду рассматривать именно этот вариант) .Не могу рекомендовать что-то конкретное, "идеальных решений" нет. Если поизучать, пощупать как и что, можно попробовать какой нибудь XorekCloud , исключительно 🇳🇱Нидерланды. Но в целом советую поискать какой нибудь зарубежный хостинг, сам использую LiteServer. Домен брал на REG.RU (подбирайте на латинице)
VPS + домен = база есть. LFG!
Заходим на свой приобретенный сервер (данные вам должен будет отправить хостинг на почту, там будут IP, имя пользователя, пароль).
Проверяем сервер на качество IP:
bash <(curl -Ls IP.Check.Place) -l en -4
Если вам попался грязный IP, просите замену у хостера.
1. Подготовка сервера:
apt update && apt upgrade -y
apt install -y curl wget nano cron socat
2. Установка Marzban + MySQL:
bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install --database mysql
Попросит пароль для базы данных MySQL - придумайте его. По завершению установки пройдут логи, чтобы выйти из них, нажмите Ctrl+C
3. Получение сертификатов с acme.sh:
Тут сначала нужно поработать с вашим доменом.
Нужно изменить Nameserver (NS сервера) где покупали домен на Cloudflare. Регистрируемся на Cloudflare. Идем на главную страницу и по середине будет кнопка Get started. Дальше выбирайте всё бесплатное и где попросит вписать домен вписываем ранее купленный домен. Позже вас попросит изменить NS сервера на cloudflare. Изменяем там где покупали, поищите в интернете как изменить NS сервера к примеру на reg.ru. После надо подождать примерно 30 минут, чтобы обновились NS сервера. Если они обновились, то по заходу в Cloudflare рядом с доменом будет ✅ Active. Нажимаем на домен и заходим в DNS из меню. Добавляем A-запись через +Add record. В Name прописываем домен и в IPv4 address ваш айпи сервера. Если были другие записи, то их надо удалить и оставить одну А-запись. Нажимаем Save, чтобы сохранить DNS запись.
Когда разберетесь с Cloudflare, возвращаетесь на сервер и работаете дальше:
curl https://get.acme.sh | sh -s email=EMAIL #EMAIL - ваш email (можно ввести любой)
mkdir -p /var/lib/marzban/certs/ #Создание директории для сертификатов
~/.acme.sh/acme.sh --set-default-ca --server letsencrypt --issue --standalone -d DOMAIN \ --key-file /var/lib/marzban/certs/key.pem \ --fullchain-file /var/lib/marzban/certs/fullchain.pem #Замените DOMAIN на ваш домен или субдомен
4. Подключение SSL с помощью Uvicorn
nano /opt/marzban/.env #Открываем редактор файла настроек
Меняем данные в строках с красных на зеленые (uvicorn_port можно изменить на свой, я же оставил 8000 по умолчанию)
Прошу заметить, что в редакторе нужно раскомментировать данные строки, убрав # в начале каждой из них. Для того, чтобы выйти с сохранением изменений - нажмите Ctrl+X, затем Y, после Enter
marzban restart #Перезагружаем Marzban, чтобы изменения вступили в силу
Создаем учетную запись Marzban:
marzban cli admin create --sudo #Выполните эту команду для создания учетной записи главного администратора и доступа к панели управления Marzban
Панель установлена! Но давайте зададим правило в CloudFlare, чтобы работали будущие подписки. Заодно замаскируем порт в адресе панели.
Идем на главную страницу CF, там выбираем свой домен. Переходим в меню, ищем Rules - заходим в Overview. Находим в списке Origin Rules и жмем Create.
Когда сделаете все по примеру, нажмите Deploy. CF больше не нужен, его можете закрыть. Доступ к панели будет по адресу https://доменное_имя/dashboard
Обзор панели ТУТ
5. Создаем подключение VLESS-TCP-REALITY
Создаем конфигурацию подключения в генераторе
Заполняете все как на примере. ShortID, Public и Private ключи нужно получить через команды на сервере и ввести их в соответствующие ячейки генератора.
openssl rand -hex 8 #Получаем ShortID
docker exec marzban-marzban-1 xray x25519 #Получаем Public и Private Key
Конфиг готов! Осталось скопировать его из генератора кнопкой "Copy to Clipboard!" и вставить его в конфигурацию настроек Marzban.
Переходим в панель Marzban, в правом верхнем углу жмем на знак настройки ⚙️.
Наблюдаем что в блоке "inbounds" только Shadowsocks TCP. Добавим Vless TCP Reality в начало блока после квадратной скобки.
После изменений, необходимо их сохранить, перезагрузить ядро, а затем страницу в браузере. На этом настройка подключения VLESS-TCP-REALITY завершена!
6. Создаем пользователя
На данном примере я создал пользователя с именем TEST_USER, лимитом по трафику 50 Gb, который будет обновляться ежемесячно и общий срок конфигурации 180 дей. Также включил "В режим ожидания" - это значит, что конфигурация со всеми ее ограничениями по сроку и трафику начнет действовать с того момента, как пользователь в первый раз подключится к ней.
Осталось лишь скопировать конфигурацию, поместить ее в клиента и начать пользоваться своим подключением.
Оставляю список клиентов на выбор.
Также можно настроить подключение, чтобы подписки отображались, как вам удобно. Для этого переходим в меню панели, затем в Настройка хоста. Выбираете нужное подключение.
Я ввел название локации сервера + переменную {DAYS_LEFT}, получилось у меня вот так:
На этом базовая настройка Marzban завершена!
_________________________________
7. Настройка WARP
В целом он нужен для доступа к сервисам, где даже с VPN не удается зайти, либо у вас попался грязный IP на VPS. Это можно поправить warp'ом
curl -L https://raw.githubusercontent.com/Skrepysh/tools/refs/heads/main/install-warp-cli.sh > install-warp-cli.sh && sudo chmod +x install-warp-cli.sh && sudo ./install-warp-cli.sh #Скрипт установки официального warp-cli
После запуска скрипта будут варианты, введите 1.
Пройдет установка, предложит ввести ключ Warp Plus. Если он у вас есть - введите, в ином случае нажмите Enter для пропуска - установится Free тариф. После этого введите порт 40000.
Все - установлен Warp в режиме локального прокси, осталось его активировать в Marzban, поправив конфиг настроек, мы с ним уже работали в п.5.
Нужно добавить новый outbound:
{
"tag": "warp",
"protocol": "socks",
"settings": {
"servers": [
{
"address": "127.0.0.1",
"port": 40000
}
]
}
}
Также добавим новые правила в настройку маршрутизации:
{
"ip": ["geoip:ru"],
"outboundTag": "warp",
"type": "field"
},
{
"domain": ["geosite:google",
"geosite:openai",
"geosite:category-ru"],
"outboundTag": "warp",
"type": "field"
}Идем через свой VPN на 2ip.io - должен быть IP VPS
Переходим на 2ip.ru - должно замаскироваться доменом WARP Cloudflare. Если у вас так, значит варп и правила работают по сценарию.
8. Маскировка VPN под свой сайт:
При создании подключения в sni и dest мы вводили популярные домены (telegram, whatsapp, yahoo). Использовать подобные решения в целом не стоит, т.к конторы могут выявить аномальный трафик => заблокировать соединение или внести IP в черный список. Кроме того, провайдер может проверить, действительно ли ваш трафик соответствует тому, как работает настоящий сайт. Поэтому вместо этого мы будем использовать свой сайт для маскировки.
Подготовим наше подключение vless к будущей работе. Идем в панель - настройки, там в созданном ранее подключении приводим эти строки в такой вид (используйте свой домен):
"dest": "127.0.0.1:20000",
"xver": 1,
"serverNames": [
"mydomain.com",
"www.mydomain.com"
],Сохраняете изменения. После идете в свой Cloudflaer, там нужно выключить, либо удалить созданное ранее правило, которе мы создавали для скрытия порта в конце п.4, а также создать CNAME-запись для домена (скрин)
У вас в итоге будет А и CNAME записи. В них обязательно выключите "Proxy status".
Теперь вам нужно отредактировать конфиг Marzban:
nano /opt/marzban/.env #Открываем редактор файла настроек
В UVICORN_HOST прописываем 127.0.0.1
И закомментируйте эти строки:
UVICORN_SSL_CERTFILE
UVICORN_SSL_KEYFILE
XRAY_SUBSCRIPTION_URL_PREFIX
Сохраняемся, выходим (Ctrl+X, затем Y, после Enter) и перезагружаем Marzban:
marzban restart
Дальше нужно установить и настроить Caddy:
apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
apt update && apt install caddy
Будем использовать шаблон от Skrepysh:
sudo wget https://raw.githubusercontent.com/Skrepysh/tools/refs/heads/main/Caddyfile -qO /etc/caddy/Caddyfile && sudo nano /etc/caddy/Caddyfile
Откроется Caddyfile в редакторе nano, вы должны заполнить все поля, отмеченные "🚨", своими значениями (а также удалить комментарии, отмеченные тем же символом). Когда сделаете - сохранитесь, выйдите из редактора (Ctrl+X, затем Y, после Enter) и перезапустите Caddy:
systemctl restart caddy
Отлично! Почти готово. Теперь нужно создать папку для вашего маскировочного сайта:
mkdir -p /var/www/caddy
Помещаем в эту папку свой сайт:
nano /var/www/caddy/index.html
Откроется редактор nano. Сюда вам нужно вставить код своего сайта (его легко можно создать с помощью чата GPT), сохраниться и выйти (Ctrl+X, затем Y, после Enter). Вам нужно понимать, что сайт должен выглядеть, как реальный и не имеющий тематики vpn/proxy.
У меня получился такой сайт на тематику облачного хранилища, где меня встречает главная страница авторизации, при неверном вводе логина/пароля высвечивается уведомление об этом, есть кнопка "запомнить меня" и смена языка сайта ENG/RU.
Если вы все сделали правильно и без ошибок, то у вас должно работать vpn-подключение, открываться сайт по адресу https://mydomen.com и открываться панель по адресу https://mydomen.com/dashboard/
В основу этого гайда легла документация Marzban
Также спасибо TG каналу: t.me/protocol_vpn, обращайтесь туда за помощью!
По возможности буду дополнять этот гайд🥸
Если есть желание отблагодарить (крипта):
Solana (SOL):
CeRXuRq5mTeZkDHGPfwqdPEEE1HQg2sPstGfwd7UvkLU
Toncoin (TON):
UQCpnON3BMgiJyZlr5TL4mNJVJspkb3Dp5H5ZfnBn_WY0mYG