VPN на 3X-UI, без Docker

Добрый день. Как было замечено в комментариях прошлой темы по 3X-UI, в ответ на сложности с получением сертификата SSl, есть возможность его установить без Docker. Вот, сегодня тема об этом.

Ссылка на GitHub автора скрипта — GitHub — MHSanaei/3x-ui: Xray panel supporting multi-protocol multi-user expire day & traffic & ip limit (Vmess & Vless & Trojan & ShadowSocks)

Установка

apt update && apt upgrade -y && apt autoclean -y && apt clean -y && apt autoremove -y && reboot
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)

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

Чтобы позднее узнать ссылку на панель и логин-пароль, пишем в консоли команду x-ui и выбираем 10 пункт.

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

x-ui control menu usages: 
----------------------------------------------
x-ui              - Enter     Admin menu
x-ui start        - Start     x-ui
x-ui stop         - Stop      x-ui
x-ui restart      - Restart   x-ui
x-ui status       - Show      x-ui status
x-ui enable       - Enable    x-ui on system startup
x-ui disable      - Disable   x-ui on system startup
x-ui log          - Check     x-ui logs
x-ui banlog       - Check Fail2ban ban logs
x-ui update       - Update    x-ui
x-ui install      - Install   x-ui
x-ui uninstall    - Uninstall x-ui
----------------------------------------------

Получаем SSL на панель

Расскажу от 3 способах получить SSL, первый, встроен в скрипт 3X-UI. Я рекомендую не парится и сделать по первому способу

Через 3X-UI

x-ui

Выбираем пункт 18 и далее, надо будет выбрать 1 пункт, ввести свой домен (который прилинкован к IP сервера) и потвердить, что порт 80 открыт (enter).

Переходим в панель 3X-UI по адресу yourdomain.com:2053(или тот порт, который вы указали при установке). В разделе Panel Settings прописываем пути к сертификатам SSL:

/root/.acme.sh/your_domain_ecc/fullchain.cer
/root/.acme.sh/your_domain_ecc/your_domain.key

Пример:

Через Cloudflare

Прилинковываем наш домен к Cloudflare и выпускаем сертификат на 15 лет через их сервис

Через Acme

apt install cron  && apt install socat
curl https://get.acme.sh | sh -s email=mail@mail.com
mkdir -p /var/lib/certs/

DOMAIN и SUBDOMAIN1.DOMAIN — пишем наши домены и суб-домены. Которые мы прилинковали заранее к нашему IP. Если суб-домены не нужны, удаляем их

~/.acme.sh/acme.sh --set-default-ca --server letsencrypt --issue --standalone \
-d DOMAIN \
--key-file /var/lib/certs/key.pem \
--fullchain-file /var/lib/certs/fullchain.pem

Добавляем наши полученные сертификаты в панель 3X-UI, вместе с доменом.

Создаем VPN профайлы

Shadowsocks

Переходим на вкладку Inbounds > Add Inbound

Remark — любое рандомное название

Protocol — shadowsocks

Нажимаем Create

Теперь можно отсканировать QR код и пользоваться VPN на Shadowsocks

VLESS + Reality

Remark — любое рандомное название

Protocol — vless

Port — 443

Ниже, где Transparent Proxy ставим галочку на Reality

 uTLS — Chrome

Dest — microsoft.com:443

Server Names — microsoft.com,www.microsoft.com

И нажать кнопку Get New Key > Create

Если у вас занят 443 порт, то пользуем альтернативу:

VLESS/VMESS no 443

Порт — пусто (по умолчанию)

Безопасность — TLS

Протокол передачи — TCP

Сертификат — сертификат с панели, который мы ранее выпустили

uTLS — random

Ну и вы можете сами экспериментировать с протоколами 🙂

Безопасность сервера

Защитим сервер от взлома через брутфорс:

apt install fail2ban -y && apt install ufw -y && apt install nano -y
touch /etc/fail2ban/jail.local && nano /etc/fail2ban/jail.local

Откроется редактор, вставим в него код:

[sshd]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
logpath = /var/log/auth.log
findtime = 600
maxretry = 3
bantime = 43200

Нажимаем ctlr + x, далее Y и enter, чтобы сохранить.

Отключаем двухсторонний пинг

Чтобы улучшить нашу маскировку, отключим пинг

 nano /etc/ufw/before.rules

Меняем концовку следующего выражения с ACCEPT на DROP:

-A ufw-before-input -p icmp --icmp-type echo-request -j DROP

Нажимаем ctlr + x, далее y + enter, чтобы сохранить.

Включаем фаервол

Чтобы включить фаервол, нужно заранее выписать все используемые порты на сервере, для этого мы установим netstat и посмотрим какие порты нужно открыть:

apt install net-tools
netstat -ntlp | grep LISTEN

Смотрите порты, которые идут после 0.0.0.0:порт или IP_адрес вашего_сервера:порт, например:

  1. 0.0.0.0:993
  2. 76.20.7.12:53
  3. :::22

Их необходимо открыть в UFW или через панель управления вашим сервером/хостингом. Смотря как это реализовано у вас. Например:

ufw allow 22/tcp && ufw allow 443 && ufw allow 40000 && ufw enable

Подтверждаем через Y + Enter

Напоследок очистимся и перезагрузимся:

apt update && apt upgrade -y && apt autoclean -y && apt clean -y && apt autoremove -y && reboot

Программы для VPN

Буду рекомендовать только одно универсальное приложение, которое есть для всех платформ (Android, iOS, Windows, MacOS, Linux). Это Hiddify.

19 comments

    1. Привет! Очень крутое решение, спасибо за ссылку. А то я столкнулся с тем что chat GPT не работает под X-ray, значит есть какая-то утечка. Буду пробовать, спасибо!
      [spoiler title=»Просто мысли»] Вообще хочу сменить уже тематику VPN, но так и не нашлось пока универсального решения, чтобы поставил и забыл. Поэтому пока сам разбираюсь и пишу об этом 🙂 [/spoiler]

    2. Ну я попробовал, скажу что скрипт не уживается со всем остальным ПО. Поломал все и он очень тяжелый, в отличие от 3X-UI. Но попробую его на отдельном сервере, интересный скрипт 🙂

      1. Дмитрий привет, мне тоже не понравилось, 3X-UI попроще будет, тоже систему испортил, буду переустанавливать… я chat GPT не использую, можешь и от сервака зависит? на разных пробовал?

          1. на чем в итоге остановился на vps? тут автор из прошлой статьи дополнения сделал и ответил на возникающие вопросы, можно по настройкам пост дополнить https://habr.com/ru/articles/770400/

          2. 3X-UI или Outline меня вполне устраивают. Но больше хочется что поинтересней, mesh-сети сейчас рассматриваю. Если получится что с ними, обязательно напишу 🙂

  • Спасибо!немного добавлю для таких, как я (тупых))))

    1. apt update && apt upgrade -y
    2. sudo apt install curl (иначе ошибка bash)

    Включение BBR в UbuntuВключение производится добавлением двух параметров ядра в файл /etc/sysctl.conf

    sudo nano /etc/sysctl.conf
    

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

    net.core.default_qdisc=fq
    net.ipv4.tcp_congestion_control=bbr
    

    После чего включить добавленные параметры ядра командой:

    sysctl -p
    

    Скорость по speedtest сразу взлетает.
    Ну и у меня путь к сертификатам тут-
    /root/cert/yourdomen/fullchain.pem
    /root/cert/yourdomen/privkey.pem
    После этого всё завелось.

    1. Спасибо вам что дополнили статью, вы очень умный человек!
      По настройкам — все зависит от сервера и OS. У меня например, Curl есть дефолту на Ubuntu 22, BBR включается через меню X-UI. Ну а сертификаты я получаю через Fastpanel, там путь /var/www/httpd-cert/. Или вообще можно выпустить сертификат через Cloudflare.
      Тем и ценны ваши комментарии, потому-что опыт немного отличается у нас 🙂

  • Может быть и глупый вопрос, но никак не получается самому — при установке SSL сертификата через CloudFlare, что делать дальше? То есть куда прописывать эти ключи? Я выпустил их напрямую через 3X-UI в терминале — 16 пункт, все гуд, без ошибок — но главная панель все равно на http://

    1. В итоге получилось разобраться — все дело было в названии:

      Certificate = Public Key = /root/cert/domain.com.cer
      Key = Private Key = /root/cert/domain.com.key

      Это для сертификата, который выпущен через CloudFlare.

      1. Все верно и вы отлично справились. Если что, ставьте mc (apt install mc) и смотрите в папке root все пути ключей. И да, глупых вопросов не бывает!

  • не работает ограничение по айпи адресам в 3x-ui, как исправить этот момент. Я ставлю ограничение на 1айпи, подключаюсь с двух разных сетей, а трафик все равно идет

  • Спасибо за такой замечательный мануал! всё настроил и оно отлично работает. подключаюсь через hiddify и на компе и на андроиде.
    А возник у меня ещё вопрос можно ли как-то подключатся к этому впн через роутер? чтобы другие домашние устройства тоже работали. Есть у меня роутер кинетик он умеет в установку различных пакетов OPKG. возможно ли как-то роутером подключится? Я просто даже не понимаю с чего начать искать информацию для этого, как например называется такое подключение к впн? тут же не классическое соединение и логина\пароля нет.

    1. Спасибо. Из коробки кинетики не работает с VLESS/VMESS, можно попробовать через прокси подключатся. Вопрос хороший т.к. я сам пользуюсь keenetic.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

двенадцать − 1 =

Сайт использует cookies Политика обработки персональных данных