#!/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" <