From f6bc73d24ffbf024fc7618cee87822c2cf8b3112 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: Wed, 6 May 2026 17:53:59 +0900 Subject: [PATCH] Add node installer --- install_virtuality_node.sh | 89 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 install_virtuality_node.sh diff --git a/install_virtuality_node.sh b/install_virtuality_node.sh new file mode 100644 index 0000000..436e81f --- /dev/null +++ b/install_virtuality_node.sh @@ -0,0 +1,89 @@ +#!/usr/bin/env bash +set -euo pipefail + +PROJECT_NAME="Virtuality" +PROJECT_DIR="/opt/virtuality" +STORAGE_DIR="/var/lib/virtuality" +ISO_DIR="${STORAGE_DIR}/iso" +IMAGES_DIR="${STORAGE_DIR}/images" +BACKUP_DIR="${STORAGE_DIR}/backups" +LOG_DIR="/var/log/virtuality" +COCKPIT_PORT="9090" + +if [[ "$EUID" -ne 0 ]]; then + echo "Ошибка: запусти от root: sudo bash install_virtuality_node.sh" + exit 1 +fi + +if ! command -v apt >/dev/null 2>&1; then + echo "Ошибка: установщик рассчитан на Debian/Ubuntu с apt." + exit 1 +fi + +echo "==================================================" +echo " ${PROJECT_NAME} Node Installer v0.1" +echo "==================================================" + +OS_NAME="$(. /etc/os-release && echo "${PRETTY_NAME}")" +echo "Система: ${OS_NAME}" + +if grep -E -q '(vmx|svm)' /proc/cpuinfo; then + echo "OK: CPU поддерживает аппаратную виртуализацию." +else + echo "ВНИМАНИЕ: vmx/svm не найдено. Проверь виртуализацию в BIOS/UEFI." +fi + +apt update +apt install -y \ + curl wget git nano htop unzip ca-certificates gnupg lsb-release \ + software-properties-common apt-transport-https ufw \ + qemu-kvm qemu-utils libvirt-daemon-system libvirt-clients virtinst \ + bridge-utils dnsmasq-base ovmf swtpm cloud-image-utils \ + cockpit cockpit-machines cockpit-networkmanager cockpit-storaged cockpit-packagekit + +mkdir -p "$PROJECT_DIR" "$ISO_DIR" "$IMAGES_DIR" "$BACKUP_DIR" "$LOG_DIR" +chmod 755 "$PROJECT_DIR" "$STORAGE_DIR" "$ISO_DIR" "$IMAGES_DIR" "$BACKUP_DIR" "$LOG_DIR" + +REAL_USER="${SUDO_USER:-root}" +if [[ "$REAL_USER" != "root" ]]; then + usermod -aG libvirt "$REAL_USER" || true + usermod -aG kvm "$REAL_USER" || true +fi + +systemctl enable --now libvirtd +systemctl enable --now virtlogd +systemctl enable --now cockpit.socket + +ufw allow OpenSSH || true +ufw allow "${COCKPIT_PORT}/tcp" || true +ufw allow 5900:5999/tcp || true +echo "y" | ufw enable || true + +virsh pool-define-as virtuality-images dir --target "$IMAGES_DIR" >/dev/null 2>&1 || true +virsh pool-start virtuality-images >/dev/null 2>&1 || true +virsh pool-autostart virtuality-images >/dev/null 2>&1 || true + +virsh pool-define-as virtuality-iso dir --target "$ISO_DIR" >/dev/null 2>&1 || true +virsh pool-start virtuality-iso >/dev/null 2>&1 || true +virsh pool-autostart virtuality-iso >/dev/null 2>&1 || true + +cat > "${PROJECT_DIR}/virtuality.env" <