Ivan RazinandClaude Opus 4.8 88466b9b21 Fix diagnostics 500: harden auth bridge + repair missing panel cert
Root cause: nginx auth_request returns a raw 500 to the browser whenever
the /__diag_auth subrequest to the panel returns anything other than
2xx/401/403. Two ways that happens:
  - the panel's TLS cert is recorded in the DB (webCertFile) but the file
    or symlink is missing on disk (e.g. dangling /root/cert symlink), so
    the panel can't serve HTTPS and proxy_pass https:// yields a 502; or
  - the panel returns a login 302 for the AJAX auth probe.
Either way the browser got a 500 on the diagnostics page.

- Both scripts: add proxy_intercept_errors on + an error_page in
  /__diag_auth that coerces every non-allow status (3xx/4xx/5xx, incl.
  401/403 so the server-level "=404" trap can't rewrite a genuine deny)
  into a 401 -> @diag_denied, so the flow degrades to a panel-login
  redirect instead of a 500. Verified with nginx 1.30.3 across
  200/401/302/502 upstream backends: all return a clean 302.
- x-ui-patch.sh: the panel-HTTPS check now also treats a configured-but-
  missing cert (-e follows symlinks) as needing repair, re-symlinking the
  Let's Encrypt cert and re-running `x-ui cert`.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 09:34:40 +03:00

3x-ui-pro

Автоматическая установка панели 3x-ui с nginx, SSL, Clash-подпиской и диагностикой сети.

  • Debian 12 / Ubuntu 24
  • Два домена или поддомена (для панели и для REALITY)
  • Автоматическое обновление SSL-сертификатов
  • Поддержка VLESS+REALITY, VLESS+WebSocket, VLESS+XHTTP, Trojan+gRPC — всё через порт 443

Что устанавливается

Компонент Описание
3x-ui VPN-панель с веб-интерфейсом
nginx Обратный прокси, SNI-роутинг
certbot Let's Encrypt SSL
Clash-подписка Автоматическая выдача clash.yaml по User-Agent
Диагностика MTR-трейсер + тест скорости в браузере
Фейковый сайт Случайный HTML-сайт-прикрытие
Бэкап Скрипт резервного копирования

Установка

Шаг 1 — скачать скрипт

wget -qO x-ui-latest.sh https://raw.githubusercontent.com/mozaroc/3x-ui-pro/main/x-ui-latest.sh

Шаг 2 — запустить

bash x-ui-latest.sh -install y -subdomain panel.example.com -reality_domain r.example.com

Замените panel.example.com на домен панели, r.example.com — на домен для REALITY.


Патч

Применить текущие фиксы к существующей установке (без изменений БД):

bash <(curl -fsSL https://raw.githubusercontent.com/mozaroc/3x-ui-pro/main/x-ui-patch.sh)

Удаление

bash x-ui-latest.sh -uninstall y

Параметры запуска

Параметр Описание
-install y Установить
-subdomain <домен> Домен панели и подписок
-reality_domain <домен> Домен назначения для REALITY
-auto_domain y Автоопределение домена (без ручного ввода)
-uninstall y Полное удаление

Clash-подписка

Работает через определение User-Agent — один URL, разное поведение:

  • Clash / Mihomo / Stash → получают clash.yaml с готовой конфигурацией
  • Обычный браузер / другие клиенты → получают стандартную страницу подписки 3x-ui

Ссылку для импорта выводит скрипт после установки.


Бэкап и восстановление

Установить скрипт бэкапа

wget -qO /usr/local/bin/x-ui-backup https://raw.githubusercontent.com/mozaroc/3x-ui-pro/main/assets/backup/x-ui-backup.sh
chmod +x /usr/local/bin/x-ui-backup

Создать бэкап

x-ui-backup backup

Список бэкапов

x-ui-backup list

Восстановить из бэкапа (на чистом сервере, пакеты ставятся автоматически)

x-ui-backup restore /var/backups/x-ui/x-ui-backup-20260101-120000.tar.gz

Бэкап включает: конфиги nginx, БД панели, бинарник 3x-ui, SSL-сертификаты, веб-контент, systemd-юниты, cron, правила UFW.


Диагностика сети

После установки доступна по ссылке, которую выводит скрипт. Включает:

  • MTR-трейс до вашего IP
  • Тест скорости загрузки и отдачи (512 МБ файлы)
S
Description
No description provided
Readme
305 KiB
Languages
HTML 54%
Shell 30.9%
JavaScript 11.5%
Python 3.6%