From 43e67550be369d84da9508347e4956743d01f02e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B8=D0=BA=D1=82=D0=BE=D1=80?= <78488229+viktor138irk@users.noreply.github.com> Date: Thu, 7 May 2026 00:40:54 +0900 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=20one-comma?= =?UTF-8?q?nd=20=D1=83=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D1=89=D0=B8?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B1=D0=B5=D0=B7=20root?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install.sh | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/install.sh b/install.sh index 2218027..15aa135 100644 --- a/install.sh +++ b/install.sh @@ -6,6 +6,27 @@ set -euo pipefail # Public install entrypoint for clean Ubuntu/Debian servers. # ========================================================== +SELF_INSTALL_URL="${VIRTUALITY_INSTALL_URL:-https://raw.githubusercontent.com/viktor138irk/virtuality/main/install.sh}" + +if [[ "${EUID}" -ne 0 ]]; then + if command -v sudo >/dev/null 2>&1; then + echo "Virtuality installer needs root. Downloading a temporary copy and re-running through sudo..." + tmp_installer="$(mktemp /tmp/virtuality-install.XXXXXX.sh)" + if command -v curl >/dev/null 2>&1; then + curl -fsSL "$SELF_INSTALL_URL" -o "$tmp_installer" + elif command -v wget >/dev/null 2>&1; then + wget -qO "$tmp_installer" "$SELF_INSTALL_URL" + else + echo "curl/wget not found. Run manually: curl -fsSL $SELF_INSTALL_URL | sudo bash" >&2 + exit 1 + fi + chmod +x "$tmp_installer" + exec sudo --preserve-env=VIRTUALITY_INSTALL_URL,VIRTUALITY_USER,VIRTUALITY_WEB_PORT,VIRTUALITY_MIN_ROOT_FREE_MB,VIRTUALITY_MIN_VAR_FREE_MB,VIRTUALITY_MIN_RAM_MB,VIRTUALITY_MIN_CPU_CORES,VIRTUALITY_SKIP_REQUIREMENTS,VIRTUALITY_SETUP_BRIDGE,VIRTUALITY_BRIDGE_IFACE,VIRTUALITY_CREATE_TEST_VM,VIRTUALITY_REPO_URL,VIRTUALITY_PROJECT_BASE_DIR,VIRTUALITY_PROJECT_DIR bash "$tmp_installer" "$@" + fi + echo "Root or sudo is required. Run: curl -fsSL $SELF_INSTALL_URL | sudo bash" >&2 + exit 1 +fi + REPO_URL="${VIRTUALITY_REPO_URL:-https://github.com/viktor138irk/virtuality.git}" DEFAULT_INSTALL_USER="${SUDO_USER:-root}" INSTALL_USER="${VIRTUALITY_USER:-$DEFAULT_INSTALL_USER}" @@ -84,14 +105,7 @@ header() { } require_root() { - if [[ "$EUID" -eq 0 ]]; then - return 0 - fi - if command -v sudo >/dev/null 2>&1; then - echo "Virtuality installer needs root. Re-running through sudo..." - exec sudo --preserve-env=VIRTUALITY_USER,VIRTUALITY_WEB_PORT,VIRTUALITY_MIN_ROOT_FREE_MB,VIRTUALITY_MIN_VAR_FREE_MB,VIRTUALITY_MIN_RAM_MB,VIRTUALITY_MIN_CPU_CORES,VIRTUALITY_SKIP_REQUIREMENTS,VIRTUALITY_SETUP_BRIDGE,VIRTUALITY_BRIDGE_IFACE,VIRTUALITY_CREATE_TEST_VM,VIRTUALITY_REPO_URL,VIRTUALITY_PROJECT_BASE_DIR,VIRTUALITY_PROJECT_DIR bash "$0" "$@" - fi - fail "Нужен root или sudo. Запусти под root или установи sudo." + [[ "$EUID" -eq 0 ]] || fail "Нужен root или sudo. Запусти: curl -fsSL ${SELF_INSTALL_URL} | sudo bash" } free_mb_for_path() { @@ -151,7 +165,7 @@ check_requirements() { if grep -E -q '(vmx|svm)' /proc/cpuinfo; then ok "CPU virtualization vmx/svm найдена" else - warn "CPU virtualization vmx/svm не найдена. Проверь BIOS/UEFI или настройки VPS" + warn "CPU virtualization vmx/svm не найдена. На Raspberry/Orange Pi это нормально, если используется ARM/QEMU/KVM профиль" fi }