Перейти к содержанию

Рекомендуемые сообщения

Опубликовано (изменено)

image.thumb.png.9e806be7ef92313b9f9f87428575656b.png

Скрипт автоматической установки веб-панели 3x-ui (панель управления Xray) на роутеры Keenetic с архитектурой aarch64 через Entware.

Вы запускаете одну команду по SSH, а скрипт сам ставит зависимости, скачивает последнюю версию 3x-ui, настраивает панель, включает автозапуск и в конце показывает адрес, логин и пароль.

opkg update && opkg install curl bash && curl -fsSL https://raw.githubusercontent.com/byDGer/3xui-keenetic-aarch64/main/install-3xui-keenetic.sh | sh

Исходный код: 3xui-keenetic-aarch64
Сделано из заброшенного проекта: 3X-UI for Keenetic

Изменено пользователем byDG
Опубликовано (изменено)

Версия 1.0.5

Что добавлено нового:

  • Исходный x-ui.sh проекта x-ui-keenetic, полностью переведённый на русский: меню, вопросы, сообщения.
  • При первом запуске выбор: 1) Автоматическая установка, 2) Самостоятельная настройка.
  • Добавлен Пункт 13 «Получить SSL-сертификат для своего домена (Let's Encrypt)» (x-ui ssl_domain) : проверка домена и порта 80, установка acme.sh, выпуск сертификата, автопродление через cron, применение к панели. Нужны публичный IP и свободный порт 80.
  • Добавлен Пункт 14 «Удалить SSL-сертификат (вернуться к HTTP)»
  • Строка «Версия XRay: x.x.x» в шапке меню
  • Отображение обновлений справа от версий «Скрипт X-UI», «Панель X-UI» и «Версия XRay»: зелёная — стоит последняя версия, жёлтая — есть обновление, красная — проверить не удалось.

Что исправлено:

  • После обновления панели x-ui.sh затирался родным скриптом из архива 3x-ui (ошибка /bin/bash: bad interpreter). Теперь этот файл из архива не копируется.
  • При выборе сертификата и отсутствии файлов пути прописывались «в пустоту». Теперь скрипт предлагает создать сертификат, а для чужих несуществующих путей отказывается их прописывать.
  • «Сертификат настроен» определялось неверно (пустые cert:/key:): HTTPS мог не включаться, а адрес показывался с https. Теперь проверяются сами файлы, а протокол определяется по реальному ответу панели.
  • Ключи ecdsa при создании сертификата не работали (проблема с кавычками).
Изменено пользователем byDG
  • byDG изменил название на 3X-UI Панель
Опубликовано

Класс! Как раз искал на последнем ядре и последней версии панели, завтра буду ставить тогда.

ps Надеюсь примет бэкап от 2.8.5

Опубликовано (изменено)

Версия 1.1.0

Что добавлено нового:

  • Шапка меню: строка «Адрес панели», строка «SSL-сертификат» с оставшимися днями и цветной точкой (зелёная больше 30 дней, жёлтая 30 и меньше, красная — истёк или нет файлов), красное предупреждение при неверном времени роутера (год раньше 2025). Данные берутся из базы панели через sqlite3 (без запуска программы панели); срок сертификата кэшируется.
  • Пункт 21 «Диагностика» (x-ui doctor) : Entware, процессор, место, панель и автозапуск, порт, наш скрипт и команда x-ui, права на ключ и базу, HTTPS и срок сертификата, время (в том числе расхождение с GitHub), доступ к GitHub, нужные программы, ядро Xray, целостность базы, cron. Код возврата 1 при ошибках.
  • Пункт 22 «Доступ из интернета (мастер)» (x-ui remote_access) : открывает панель на всех адресах или возвращает только LAN; предупреждает о рисках, по умолчанию отказывается открывать без HTTPS; о порте в межсетевом экране только напоминает.
  • Резервные копии: автокопия базы перед обновлением панели (backup_auto, снимок sqlite3 .backup + gzip, хранится BACKUP_KEEP последних), пункт «Автоматические копии по расписанию» (backup_cron, cron, воскресенье 04:30).
  • Xray: «Установить свою версию XRay» (update_xray_custom) и «Откатить XRay» (rollback_xray, обмен с .bak) — пункты 6 и 7 меню обновлений. Установка вынесена в общую функцию xray_install_tag.
  • Let's Encrypt (ssl_domain) : выбор метода проверки (HTTP на порту 80 или DNS через API провайдера, acme.sh --dns), тестовый режим staging. Ключи API не попадают в журнал.
  • Команды для мониторинга: x-ui status --json (чистый JSON, код 0 если панель работает), x-ui update --check (коды 0, 10, 2). Код возврата команды теперь становится кодом выхода скрипта.
  • Проверка целостности: файл x-ui.sh.sha256 в репозитории; установщик и обновление скрипта сверяют сумму (нет файла — только предупреждение, XUI_SKIP_HASH=1 отключает проверку в установщике).
  • (Репозиторий) .github/workflows/check.yml: синтаксис, shellcheck (только ошибки), сверка суммы, формат версии.
  • Настройка BACKUP_KEEP; в README описан файл настроек (LOG_SCRIPT, DEBUG_SCRIPT, CHECK_UPDATES, BACKUP_KEEP).

Что исправлено:

  • check_panel искал любую строку xui в командных строках процессов, из-за чего «работающей» могла считаться посторонняя программа; теперь точное имя процесса (pgrep -x).
  • Права: permissions больше не ставит 755 на весь каталог (так приватный ключ и база читались всеми). Теперь 755 только у исполняемых файлов, а каталоги db, cert, backup и всё внутри закрыты от посторонних. На уже установленных роутерах права изменятся при следующей установке или пункте «Восстановить установку»; сразу: chmod -R go-rwx /opt/etc/x-ui/db /opt/etc/x-ui/cert /opt/etc/x-ui/backup.
  • Скачивание: убран wget --no-check-certificate, сертификат GitHub теперь проверяется. При ошибке проверки выводится подсказка (дата и время на роутере, пакет ca-certificates), бесполезные повторы с другим тегом не делаются.
  • Скрипт больше не удаляет файл x-ui.sh в текущем каталоге при «не Entware», неподдерживаемой архитектуре или релизе (раньше мог удалить установленный скрипт, например при запуске из оболочки без /opt/bin в PATH).
  • uninstall: резервные копии базы по умолчанию переносятся в /opt/root/x-ui-backup (отдельный вопрос, по умолчанию «да»); строка автопродления сертификата убирается из cron; сообщается, что каталог /opt/etc/acme.sh остался; вместо kill -9 $$ стоит exit 0; в rm -rf добавлена защита ${переменная:?}.
  • Ручная установка: по умолчанию предлагаются случайные логин, пароль и путь панели вместо admin / 12345 и /spub/.
  • IP роутера: одна функция lan_ip вместо четырёх копий разбора ifconfig; понимает оба формата вывода, запасной вариант — ip.
  • Мелочи: read -r в вопросах, поиск файла ядра Xray без ls | grep.

Убран мёртвый код (поведение не меняется; строк 2726 → 2682, замечаний shellcheck 154 → 138, неиспользуемых переменных 8 → 0):

  • Функции без единой ссылки: prepare_services (к тому же опасная: find … -delete без кавычек), is_enabled (на деле вызывала status), db_get, db_upd.
  • install_custom_PANEL слита с install_custom_panel: осталась одна функция, её вызывает меню.
  • Неиспользуемые переменные: ENABLED, ARGS, PREARGS, DESC, PROCS в блоке автозапуска; cid, notnull, dflt, pk при разборе таблиц базы (заменены на _).
  • check_architecture: убраны шаблоны, которые уже перекрывала звёздочка (armv8 при armv8* и т. п.).
  • install_base: убрана пауза sleep 1, шутливое сообщение заменено на «Установка необходимых пакетов...».

Оптимизировано:

  • Журнал (logmsg) больше не запускает внешние программы. Раньше каждое сообщение порождало 4 процесса (date и три sed). Теперь дата берётся встроенной printf, цветовые коды вырезаются подстановками bash, цепочка вызовов собирается только для журнала и отладки. Содержимое журнала и вывод на экран совпадают с прежними (сверено на всех 210 сообщениях скрипта). Замер: 300 сообщений 2,56 с → 0,04 с.
  • Ротация журнала: когда script_x-ui.log вырастает больше 512 КБ, он откладывается в script_x-ui.log.1 (раньше журнал рос бесконечно).
  • Открытие меню: внешних процессов 64 → 18, время 141 → 52 мс (замер в песочнице; на роутере выигрыш в миллисекундах больше).
  • Версия Xray кэшируется по времени изменения файла ядра (без запуска программ): ядро не запускается при каждом открытии меню. Кэш сбрасывается сам при замене ядра и явно в update_xray.
  • Одна функция github_latest_tag вместо четырёх копий запроса версии. В запасном варианте через API поле tag_name теперь читается и из «сжатого» JSON. last_version_checked использует её же, у запросов появилось ограничение по времени.
  • Новая настройка CHECK_UPDATES (по умолчанию true) : false в файле настроек = меню не обращается к GitHub, точки скрыты.
  • Пути сертификата читаются из панели одним запуском (ssl_cert_read), лишние запуски в ssl_enable_self_signed убраны.
  • Сознательно не менялось: стилевые замечания shellcheck ($?, кавычки, local x=$(...)) и разбиение длинных функций. Скорость они не дают, а риск регрессий в 50+ местах заметный.

 

Изменено пользователем byDG
Опубликовано (изменено)

Версия 1.1.1

Что исправлено:

  • check_panel в 1.1.0 искал процесс панели через pgrep -x, а на busybox роутера эта опция может работать иначе (или не работать): панель запускалась, но скрипт её «не видел». Теперь процессы просматриваются прямо в /proc средствами bash (первый аргумент командной строки должен быть путём к панели или иметь имя xui) : результат не зависит от версии pgrep, сторонние программы с xui в параметрах не принимаются за панель. Запасной вариант без /proc — pgrep -f.
  • start: вывод панели при запуске раньше терялся (временный файл удалялся сразу). Теперь он сохраняется в /opt/var/log/x-ui-panel.out, а при неудачном старте последние 15 строк показываются на экране, чтобы была видна настоящая причина (ошибка в сертификате, настройках и т. п.). Если панель ничего не вывела, скрипт подсказывает команду для ручного запуска.
Изменено пользователем byDG
Опубликовано

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

после отработки скрипта, вышел адрес панели без webpath, те написал просто 192.168.1.1:2053 и x-ui не запустился, в процессах и службах не появился.

запустил скрипт повторно, после этого x-ui уже запустился и вывел адрес с webpath.

второе, что морда показывает забитие диска на 100%, хотя такого нет само собой, тк раздел у меня ext4 5gb, а показывает 20мб.

в остальном все работает.

 

2026-11-11_19-45-40.png

Опубликовано
9 часов назад, Wu-Tang сказал:

после отработки скрипта, вышел адрес панели без webpath, те написал просто 192.168.1.1:2053 и x-ui не запустился, в процессах и службах не появился.

Это была ошибка в версии 1.1.0 скрипта, в версии 1.1.1 всё починил.

9 часов назад, Wu-Tang сказал:

второе, что морда показывает забитие диска на 100%, хотя такого нет само собой, тк раздел у меня ext4 5gb, а показывает 20мб.

Это постараюсь исправить, но вроде не критично.

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.