diff --git a/scripts/3x-ui.sh b/scripts/3x-ui.sh index 1143786..877c31f 100755 --- a/scripts/3x-ui.sh +++ b/scripts/3x-ui.sh @@ -372,6 +372,10 @@ main() { set -- ${args[@]+"${args[@]}"} [[ $EUID -eq 0 ]] || die "Запустите от root: sudo -i, затем команду ещё раз." command -v systemctl >/dev/null || die "Нужен systemd." + # kit-sub работает без root и получает конфиг через LoadCredential: он появился в systemd 247 (Ubuntu 22.04+, Debian 11+). + local sysv + sysv=$(systemctl --version 2>/dev/null | awk 'NR == 1 {print $2}') + [[ $sysv =~ ^[0-9]+$ ]] && ((sysv < 247)) && die "Версия systemd ($sysv) слишком старая, нужна 247 и новее: Ubuntu 22.04 и новее, Debian 11 и новее. На этой системе подписка не запустится – поставьте поддерживаемую." if [[ -f $RESULT && -x /usr/local/x-ui/x-ui ]]; then die "3X-UI уже установлена этим скриптом. Управление: команда x-ui, данные для входа: cat $RESULT" fi diff --git a/scripts/kit.sh b/scripts/kit.sh index bdbef76..cd7fa54 100644 --- a/scripts/kit.sh +++ b/scripts/kit.sh @@ -625,8 +625,15 @@ cmd_update() { # С 1.1 kit-sub работает без root: переписываем юнит под DynamicUser и LoadCredential. local c k c=$(jq -r '.cert // empty' /etc/kit-sub/config.json); k=$(jq -r '.key // empty' /etc/kit-sub/config.json) - kit_sub_unit "$c" "$k" >/etc/systemd/system/kit-sub.service - [[ -n $c ]] && echo '19 4 * * * root systemctl restart kit-sub >/dev/null 2>&1' >/etc/cron.d/kit-sub-cert + local sysv + sysv=$(systemctl --version 2>/dev/null | awk 'NR == 1 {print $2}') + if [[ $sysv =~ ^[0-9]+$ ]] && ((sysv < 247)); then + # LoadCredential появился в systemd 247: на более старой юнит без root не запустится, оставляем прежний. + warn "systemd $sysv старше 247: юнит kit-sub не меняю (подписка работает как раньше). Лучше перейти на Ubuntu 22.04+ или Debian 11+." + else + kit_sub_unit "$c" "$k" >/etc/systemd/system/kit-sub.service + [[ -n $c ]] && echo '19 4 * * * root systemctl restart kit-sub >/dev/null 2>&1' >/etc/cron.d/kit-sub-cert + fi systemctl daemon-reload if systemctl restart kit-sub && sleep 2 && sub_ok; then say "Подписка kit-sub обновлена и отвечает"