VLESS + Reality + 3X-UI на Ubuntu 24.04

 

1. Обновление системы

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git nano htop net-tools

2. Установка Python

sudo apt install -y python3 python3-pip

Примечание: модуль pyasynchat встроен в Python 3.11+ и дополнительная установка не требуется.

3. Установка полезных утилит

sudo apt install -y parted qemu-guest-agent haveged mc nmap \
apt-transport-https ca-certificates software-properties-common openssl

4. Установка Docker

Добавляем GPG ключ и репозиторий

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Установка Docker

sudo apt update && sudo apt upgrade -y
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo usermod -aG docker $USER
newgrp docker
sudo systemctl enable --now docker

Проверка Docker

docker version
docker run hello-world

5. Установка 3X-UI через Docker

mkdir -p ~/panel/{db,cert} && cd ~/panel

Создаем docker-compose файл

nano compose.yml
services:
  3xui:
    image: ghcr.io/mhsanaei/3x-ui:latest
    container_name: 3xui_app
    volumes:
      - ./db/:/etc/x-ui/
      - ./cert/:/root/cert/
    environment:
      XRAY_VMESS_AEAD_FORCED: "false"
    network_mode: host
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true

Запуск панели

docker compose -f compose.yml up -d
docker compose -f compose.yml ps
docker compose -f compose.yml config

Доступ к панели управления:

  • URL: http://<ваш_IP>:2053
  • Логин: admin
  • Пароль: admin

6. Настройка Firewall (IPTables)

sudo apt install -y iptables iptables-persistent

# Разрешаем уже установленные соединения
sudo iptables -I INPUT 1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# Разрешаем loopback
sudo iptables -I INPUT 2 -i lo -j ACCEPT

# Разрешаем VLESS/Reality (порт 443) и панель (2053)
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 2053 -j ACCEPT

# Разрешаем SSH с вашего IP
sudo iptables -A INPUT -s <ваш_IP> -p tcp --dport 22 -j ACCEPT

# Блокируем все остальное
sudo iptables -P INPUT DROP

# Сохраняем правила
sudo netfilter-persistent save

7. Создание сертификата для панели (self-signed)

sudo openssl req -x509 -newkey rsa:4096 -nodes -sha256 \
-keyout ~/panel/cert/private_xray_web.key \
-out ~/panel/cert/public_xray_web.cer \
-days 3650 -subj "/CN=<ваш_IP>" \
-addext "subjectAltName=IP:<ваш_IP>"

sudo chmod 644 ~/panel/cert/public_xray_web.cer
sudo chmod 600 ~/panel/cert/private_xray_web.key

В панели управления указываем пути к сертификатам:

  • Публичный: /root/panel/cert/public_xray_web.cer
  • Приватный: /root/panel/cert/private_xray_web.key
docker compose -f compose.yml restart

8. Настройка VLESS + Reality в 3X-UI

Отключаем подписку, перезапускаем панель (перезапуск требуется после для применения любого изменения), создаем Инбаунд. Заполняем поля “Примечание” – любое удобное наименование Инбаунда, “Протокол” – vless, “Мониторинг IP” – внешний ip адрес сервера, “Порт” – 443.   

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

Сохраняем. Далее обновляем сервер и в “Настройки Xray” – “Базовые соединения” создаем подключение

итог

остальные настройки изучаем и настраиваем под свои задачи вкус.

9. Проверки после установки

docker ps
docker logs 3xui_app
sudo systemctl status docker
docker compose -f compose.yml restart

10. Рекомендации

  • Для продакшена используйте домен + Let’s Encrypt вместо self-signed сертификатов.
  • Если сервер публичный — настройте fail2ban для SSH и панели.
  • Для Reality рекомендуется использовать последнюю версию 3X-UI и Xray.
  • Все изменения в compose.yml требуют перезапуска контейнера: docker compose -f compose.yml up -d

Leave a Reply