Skip to content

Marzban Install

Подготовка VPS

Подключиться по SSH к арендованному VPS:

bash
ssh root@IP_VPS

Выполнить команду (Если Linux или Debian):

bash
apt update && apt upgrade

Базовая установка Marzban

Ввести команду установки Marzban:

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

Дождаться логов с пометкой, что можно закрывать логи нажатием Ctrl+C

pic1

Далее, Вам нужно создать главного администратора для входа в панель управления Marzban, выполнив следующую команду:

bash
marzban cli admin create --sudo

На этом все, панелью можно пользоваться через ssh туннель, для этого в терминале (не в сессии ssh) вводим:

bash
ssh -L 8000:localhost:8000 root@IP_VPS

И переходим по адресу

http://localhost:8000/dashboard/

для большей настройки потребуется либо домен либо пару кликов в телеграм

Углубленная установка

Вариант 1

Покупка домена не требуется, лишних трат не проводится, но вариативность страдает

Требуется перейти в телеграм, найти в поиске @BotFather

Далее создать бота и скопировать куда-то его id (Позже воспользуемся)

После создания бота требуется узнать свой id, для этого переходим в бота @TheGetAnyID_bot и нажимаем start или пишем /start

Полученный id так же сохроняем

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

bash
nano /opt/marzban/.env

или

bash
marzban edit-env

Ищем там закомментированные строки, можно воспользоваться поиском - Ctrl+W и начать вбивать TELEGRAM (чувствителен к регистру)

env
#TELEGRAM_API_TOKEN =
#TELEGRAM_ADMIN_ID =

Удаляем комментарии (#) и заполняем сохраненными ранее значениями

Далее выходим из nano - Ctrl+X -> Y

Выполняем команду:

bash
marzban restart

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

Вариант 2

Покупка домена требуется, это лишние траты, я брал на timeweb

Создаем поддомен

Создаем поддомен, соглашаемяся со всемы всплывахами

pic2

Переходим в настройки поддомена

pic3

Удаляем запись AAA

Редактируем запись A: Ставим адрес своего VPS

Внимание

Применение изменений в DNS по миру может занять время, можно чекать через DNScheker, я минут 5-10 жду и работать уже можно

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

Возвращаемся в терминал ssh

Устанавливаем Certbot

bash
sudo apt update
sudo apt install certbot

После установки выполним команду получения сертификатов (отредактируй под свой поддомен)

bash
sudo certbot certonly --standalone -d your-domain.com -d www.your-domain.com

Сертификат и ключ сохраняться по пути /etc/letsencrypt/live/your-domain.com/

Копируем сертификаты в видимую область docker контейнера marzban (отредактируй под свой домен)

bash
mkdir /var/lib/marzban/carts/
cp /etc/letsencrypt/live/your-domain.com/fullchain.pem /var/lib/marzban/carts/fullchain.pem && cp /etc/letsencrypt/live/your-domain.com/privkey.pem /var/lib/marzban/carts/privkey.pem

Далее требуется отредактировать .env

bash
nano /opt/marzban/.env

или

bash
marzban edit-env

И редактируем параметры по сертификатам (Убирая комментарии)

env
UVICORN_PORT = Любой но лучше 6000+
DASHBOARD_PATH = "/Придумать путь к панели (опционально)/"
UVICORN_SSL_CERTFILE = "/var/lib/marzban/carts/fullchain.pem"
UVICORN_SSL_KEYFILE = "/var/lib/marzban/carts/privkey.pem"
XRAY_SUBSCRIPTION_URL_PREFIX = https://ТВОЙ_ДОМЕН:Порт_с_первой_строки
XRAY_SUBSCRIPTION_PATH = "Придумать путь к подписке (опцианально)"

Сохраняем и перезапускаем marzban marzban restart

Далее можно попасть в веб панель по адресу https://Твой домен:указанный порт/dashboard/

🔥

Настройка Marzban

Настроить протоколы можно через Web-панель - значек шестиренки pic4

Или через SSH

bash
nano /var/lib/marzban/xray_config.json

Список протоколов (Основные) с примерами конфигов

АтрибутЗначение
tagназвание, что хочется то и пишем
portДля vless желательно 443, но можно жанглировать как хочется
fingerprintМожно выбрать random или chrome
privateKeyВ терминале выполнить sudo docker exec marzban-marzban-1 xray x25519
shortIdsВ терминале выполнить openssl rand -hex 8
spiderXПозволяет иммитировать нахождение в какой-то подстранице сайта, ее можно вписывать рандомно, можно использовать реальные, типо у вк лента /feed, можно оставлять пустой /

INFO

Основные, которые использую я:

VLESS TCP REALITY

VMESS TCP

SHADOWSOCKS

TROJAN TCP TLS

Для дома в основном shadowsocks, самый легкий и быстрый по мне, но он самый уязвимый

VLESS

VLESS TCP REALITY (Основной Vless)
json
{
  "tag": "VLESS TCP REALITY",
  "listen": "0.0.0.0",
  "port": 2040,
  "protocol": "vless",
  "settings": {
    "clients": [],
    "decryption": "none"
  },
  "streamSettings": {
    "network": "tcp",
    "tcpSettings": {},
    "security": "reality",
    "realitySettings": {
      "show": false,
      "dest": "Любое незаблоченное, например google/github/yahoo без http :443",
      "xver": 0,
      "serverNames": ["ПОВТОРЯЕМ"],
      "privateKey": "ПРИВАТНЫЙ_КЛЮЧ",
      "shortIds": ["ШОРТ_ИД"]
    }
  },
  "sniffing": {
    "enabled": true,
    "destOverride": ["http", "tls", "quic"]
  }
}
VLESS GRPC REALITY
json
{
  "tag": "VLESS GRPC REALITY",
  "listen": "0.0.0.0",
  "port": 2041,
  "protocol": "vless",
  "settings": {
    "clients": [],
    "decryption": "none"
  },
  "streamSettings": {
    "network": "grpc",
    "grpcSettings": {
      "serviceName": "xyz"
    },
    "security": "reality",
    "realitySettings": {
      "show": false,
      "dest": "Любое незаблоченное, например google/github/yahoo без http :443",
      "xver": 0,
      "serverNames": ["ПОВТОРЯЕМ"],
      "privateKey": "ПРИВАТНЫЙ_КЛЮЧ",
      "shortIds": ["ШОРТ_ИД"]
    }
  },
  "sniffing": {
    "enabled": true,
    "destOverride": ["http", "tls", "quic"]
  }
}
VLESS GRPC REALITY (Требуется сертификат)
json
{
  "tag": "VLESS WS Tls",
  "listen": "0.0.0.0",
  "port": 2046,
  "protocol": "vless",
  "settings": {
    "clients": [],
    "decryption": "none"
  },
  "streamSettings": {
    "network": "ws",
    "wsSettings": {
      "path": "/"
    },
    "security": "tls",
    "tlsSettings": {
      "serverName": "Свой Сервак или любое другое",
      "certificates": [
        {
          "ocspStapling": 3600,
          "certificateFile": "Путь к сертификату",
          "keyFile": "Путь к ключу"
        }
      ],
      "minVersion": "1.2",
      "cipherSuites": "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256:TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256:TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384:TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
    }
  }
}

VMESS

VMESS TCP
json
{
  "tag": "VMESS TCP",
  "listen": "0.0.0.0",
  "port": 2051,
  "protocol": "vmess",
  "settings": {
    "clients": []
  },
  "streamSettings": {
    "network": "tcp"
  }
}
VMESS TCP TLS (Требуется сертификат)
json
{
  "tag": "VMESS TCP TLS",
  "listen": "0.0.0.0",
  "port": 2050,
  "protocol": "vmess",
  "settings": {
    "clients": []
  },
  "streamSettings": {
    "network": "tcp",
    "security": "tls",
    "tlsSettings": {
      "serverName": "Свой сервак или любое другое",
      "certificates": [
        {
          "ocspStapling": 3600,
          "certificateFile": "Путь к сертификату",
          "keyFile": "Путь к ключу"
        }
      ],
      "minVersion": "1.2",
      "cipherSuites": "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256:TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256:TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384:TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
    }
  }
}
VMESS WS
json
{
  "tag": "Vmess WS",
  "listen": "0.0.0.0",
  "port": 2054,
  "protocol": "vmess",
  "settings": {
    "clients": []
  },
  "streamSettings": {
    "network": "ws",
    "security": "none",
    "wsSettings": {
      "path": "/"
    }
  },
  "sniffing": {
    "enabled": true,
    "destOverride": ["http", "tls"]
  }
}

TROJAN

TROJAN TCP TLS
json
{
  "tag": "TROJAN TCP TLS",
  "listen": "0.0.0.0",
  "port": 2057,
  "protocol": "trojan",
  "settings": {
    "clients": []
  },
  "streamSettings": {
    "network": "tcp",
    "security": "tls",
    "tlsSettings": {
      "serverName": "Свой сервак или любой",
      "certificates": [
        {
          "ocspStapling": 3600,
          "certificateFile": "Путь к сетификату",
          "keyFile": "Путь к ключу"
        }
      ],
      "minVersion": "1.2",
      "cipherSuites": "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256:TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256:TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384:TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
    }
  },
  "sniffing": {
    "enabled": true,
    "destOverride": ["http", "tls"]
  }
}

SHADOWSOCKS

json
{
  "tag": "SHADOWSOCKS",
  "listen": "0.0.0.0",
  "port": 2060,
  "protocol": "shadowsocks",
  "settings": {
    "clients": [],
    "network": "tcp,udp"
  }
}

Vless (Белые списки).

WARNING

Сейчас не актуально, надо искать другие способы

В inbounds требуется добавить следующую запись со своими корректировками

АтрибутЗначение
tagназвание, что хочется то и пишем
portжелательно 443, но практика показывает, что и на любой другой можно посадить спокойно
networktpc, но можно и XHTTP использовать, его опишу позже при необходимости
fingerprintМожно выбрать random или chrome
destЛюбой сайт из белых списков, на практике vk пока лучше всех работает
serverNamesОбязательное совпадение с dest, только без указания порта, можно еще накидать поддоменов для лучшей работы
privateKeyВ терминале выполнить sudo docker exec marzban-marzban-1 xray x25519
shortIdsВ терминале выполнить openssl rand -hex 8
spiderXПозволяет иммитировать нахождение в какой-то подстранице сайта, ее можно вписывать рандомно, можно использовать реальные, типо у вк лента /feed, можно оставлять пустой /

Останое не интересно, не трогаем

json
        {
            "tag": "ЧТО ХОЧЕТСЯ",
            "listen": "0.0.0.0",
            "port": 443,
            "protocol": "vless",
            "settings": {
                "clients": [],
                "decryption": "none"
            },
            "streamSettings": {
                "network": "tcp",
                "tcpSettings": {},
                "security": "reality",
                "realitySettings": {
                    "fingerprint": "random",
                    "show": false,
                    "dest": "vk.com:443",
                    "xver": 0,
                    "serverNames": [
                        "vk.com"
                    ],
                    "privateKey": "ПРИВАТНЫЙ_КЛЮЧ",
                    "shortIds": [
                        "КОРОТКИЙ_ID"
                    ],
                    "spiderX": "/"
                }
            },
            "sniffing": {
                "enabled": true,
                "destOverride": [
                    "http",
                    "tls",
                    "quic"
                ]
            }
        },