3X-UI: Установка и настройка

Инструкция по установке и первичной настройке #3x-ui.

Установка

  • Скачать и распаковать 3x-ui версии v3.5.0:
1
v='v3.5.0'; d='/usr/local'; [[ -d "${d}/x-ui" ]] && rm -rf "${d}/x-ui"; curl -fSLo '/tmp/x-ui-linux-amd64.tar.gz' "https://github.com/MHSanaei/3x-ui/releases/download/${v}/x-ui-linux-amd64.tar.gz" && tar -xzf '/tmp/x-ui-linux-amd64.tar.gz' -C "${d}" && chmod +x "${d}/x-ui/x-ui.sh" && { [[ -L "${d}/bin/x-ui" ]] && unlink "${d}/bin/x-ui"; ln -s "${d}/x-ui/x-ui.sh" "${d}/bin/x-ui"; }
  • Скачать x-ui.service в директорию /etc/systemd/system и запустить службу:
1
f=('x-ui.service'); d='/etc/systemd/system'; s='https://libsys.ru/ru/2026/03/60a8071b-878a-510b-99bc-ec1951c4a915'; for i in "${f[@]}"; do curl -fsSLo "${d}/${i}" "${s}/${i}"; done && systemctl daemon-reload && { for i in "${f[@]}"; do systemctl enable --now "${i}"; done; }
  • Скачать задачу x-ui в директорию /etc/cron.d:
1
f=('x-ui'); d='/etc/cron.d'; s='https://libsys.ru/ru/2026/03/60a8071b-878a-510b-99bc-ec1951c4a915'; for i in "${f[@]}"; do curl -fsSLo "${d}/${i}" "${s}/${i}"; done && systemctl restart 'cron.service'

Настройка

Настроить панель можно по адресу http://SERVER_IP:2053/.

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

Для большей безопасности, необходимо изменить стандартные пути и порты панели. Идём в настройки и прописываем следующие параметры (можно поменять на свои):

  • Panel Settings:
    • General:
      • Listen Port: 64801.
      • URI Path: /0728a4S93v964W9y/.
    • Subscription:
      • Listen Port: 64802.
      • URI Path: /38s2ibK4728j71Tr/.

Inbounds

Добавим параметры точек подключения:

  • Открыть раздел Inbounds.
  • Нажать Add Inbound.
  • Перейти на вкладку Advanced и вставить в редактор следующее содержимое:
inbounds.vless-reality.json
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
{
  "port": 443,
  "protocol": "vless",
  "tag": "in-443-tcp",
  "sniffing": {
    "enabled": true,
    "destOverride": [
      "http",
      "tls",
      "quic",
      "fakedns"
    ]
  },
  "streamSettings": {
    "network": "tcp",
    "security": "reality",
    "tcpSettings": {
      "acceptProxyProtocol": false,
      "header": {
        "type": "none"
      }
    },
    "realitySettings": {
      "show": false,
      "xver": 0,
      "target": "www.microsoft.com:443",
      "serverNames": [
        "www.microsoft.com"
      ],
      "maxTimediff": 0,
      "settings": {
        "fingerprint": "firefox"
      }
    }
  }
}

Далее, немного подкорректируем настройки:

  • Вкладка Basics:
    • Remark: VLESS-Reality.
    • Total Flow: 900.
    • Traffic Reset: Monthly.
  • Вкладка Security:
    • Нажать кнопку рандомизации Short IDs.
    • Нажать кнопку рандомизации SpiderX.
    • Нажать кнопку Get New Cert для генерации сертификата.
  • Нажать кнопку Create для создания Inbound’а.

Routing rules

Теперь настроим параметры маршрутизации:

  • Открыть раздел Xray Configs.
  • Перейти в Advanced.
  • В редактор Routing Rules вставить следующее содержимое:
xray.routing-rules.json
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
[
  {
    "type": "field",
    "inboundTag": [
      "api"
    ],
    "outboundTag": "api"
  },
  {
    "type": "field",
    "ip": [
      "geoip:private"
    ],
    "outboundTag": "blocked"
  },
  {
    "type": "field",
    "protocol": [
      "bittorrent"
    ],
    "outboundTag": "blocked"
  },
  {
    "type": "field",
    "port": "443",
    "network": "UDP",
    "outboundTag": "blocked"
  },
  {
    "type": "field",
    "domain": [
      "geosite:category-ads-all"
    ],
    "outboundTag": "blocked"
  },
  {
    "type": "field",
    "ip": [
      "geoip:ru"
    ],
    "outboundTag": "blocked"
  },
  {
    "type": "field",
    "domain": [
      "geosite:category-ru"
    ],
    "outboundTag": "blocked"
  },
  {
    "type": "field",
    "domain": [
      "regexp:.*\\.am$",
      "regexp:.*\\.az$",
      "regexp:.*\\.by$",
      "regexp:.*\\.kg$",
      "regexp:.*\\.kz$",
      "regexp:.*\\.md$",
      "regexp:.*\\.mn$",
      "regexp:.*\\.ru$",
      "regexp:.*\\.su$",
      "regexp:.*\\.tatar$",
      "regexp:.*\\.tj$",
      "regexp:.*\\.tm$",
      "regexp:.*\\.uz$",
      "regexp:.*\\.xn--p1ai"
    ],
    "outboundTag": "blocked"
  }
]
  • Сохранить и перезапустить Xray.

Clients

На последнем этапе настройки добавим клиента для подключения к VPN:

  • Открыть раздел Clients.
  • Нажать Add Clients.
  • В окне Add Client:
    • Вкладка Basics:
      • Attached inbounds: VLESS-Reality.
      • Traffic Limit (GB): 100.
    • Вкладка Credentials:
      • Flow: xtls-rprx-vision.

Обратный прокси

В качество обратного прокси я буду использовать Angie из статьи Angie: Установка и настройка. Также я усилил защиту панели HTTP-аутентификацией самого Angie. Начинаем настройку работы совместно с обратным прокси:

  • Создать ключ и сертификат в директории /etc/ssl/.
  • Создать файл /etc/angie/users.conf с пользователями и паролями при помощи этого сайта (режим Bcrypt).
  • Откорректировать настройки панели:
    • Panel Settings:
      • General:
        • Public Key Path: /etc/ssl/example.org.crt.
        • Private Key Path: /etc/ssl/example.org.key.
      • Subscription:
        • Reverse Proxy URI: https://example.org:64800/38s2ibK4728j71Tr/.
        • Public Key Path: /etc/ssl/example.org.crt.
        • Private Key Path: /etc/ssl/example.org.key.
  • Создать файл /etc/angie/http.d/example.org.conf со следующим содержанием:
angie.conf
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
server {
  listen 127.0.0.1:8443 ssl;
  server_name example.org;

  ssl_certificate '/etc/ssl/example.org.crt';
  ssl_certificate_key '/etc/ssl/example.org.key';

  root '/usr/share/angie/html';
  index index.html;

  location / {
    try_files $uri $uri/ =404;
  }
}

server {
  listen 64800 ssl;
  server_name cp.example.org;

  ssl_certificate '/etc/ssl/example.org.crt';
  ssl_certificate_key '/etc/ssl/example.org.key';

  location /0728a4S93v964W9y {
    auth_basic 'Restricted Area';
    auth_basic_user_file '/etc/angie/users.conf';

    proxy_http_version 1.1;
    proxy_set_header 'Upgrade' $http_upgrade;
    proxy_set_header 'Connection' 'upgrade';

    proxy_set_header 'X-Forwarded-For' $proxy_add_x_forwarded_for;
    proxy_set_header 'X-Forwarded-Proto' $scheme;
    proxy_set_header 'Host' $http_host;
    proxy_set_header 'X-Real-IP' $remote_addr;
    proxy_set_header 'Range' $http_range;
    proxy_set_header 'If-Range' $http_if_range;

    proxy_redirect off;
    proxy_pass https://127.0.0.1:64801/0728a4S93v964W9y;
  }

  location /38s2ibK4728j71Tr {
    proxy_http_version 1.1;
    proxy_set_header 'Upgrade' $http_upgrade;
    proxy_set_header 'Connection' "upgrade";

    proxy_set_header 'X-Forwarded-For' $proxy_add_x_forwarded_for;
    proxy_set_header 'X-Forwarded-Proto' $scheme;
    proxy_set_header 'Host' $http_host;
    proxy_set_header 'X-Forwarded-Host' $http_host;
    proxy_set_header 'X-Forwarded-Port' $server_port;
    proxy_set_header 'X-Real-IP' $remote_addr;
    proxy_set_header 'Range' $http_range;
    proxy_set_header 'If-Range' $http_if_range;

    proxy_redirect off;
    proxy_pass https://127.0.0.1:64802/38s2ibK4728j71Tr;
  }
}

Собственный домен

Для работы VLESS+Reality через собственный домен, необходимо подкорректировать настройки:

  • Вкладка Security:
    • Target: 127.0.0.1:8443.
    • SNI: example.org.
Авторы
Мета
Лицензия
ID файла
UUID
Системный путь
Тип
Статистика
Количество слов
Время чтения
мин.