#!/bin/bash # VPN Panel Auto-Installer # Supports: WireGuard, 3x-ui, Remnawave set -e RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' print_msg() { echo -e "${GREEN}[INFO]${NC} $1" } print_error() { echo -e "${RED}[ERROR]${NC} $1" } print_warning() { echo -e "${YELLOW}[WARNING]${NC} $1" } check_root() { if [[ $EUID -ne 0 ]]; then print_error "Этот скрипт должен быть запущен с правами root" exit 1 fi } detect_os() { if [ -f /etc/os-release ]; then . /etc/os-release OS=$ID VER=$VERSION_ID else print_error "Не удалось определить операционную систему" exit 1 fi print_msg "Обнаружена ОС: $OS $VER" } update_system() { print_msg "Обновление системы..." case $OS in ubuntu|debian) apt-get update -y apt-get upgrade -y apt-get install -y curl wget git sudo ufw ;; centos|rhel|fedora) yum update -y yum install -y curl wget git sudo firewalld ;; *) print_error "Неподдерживаемая ОС: $OS" exit 1 ;; esac } install_docker() { if command -v docker &> /dev/null; then print_msg "Docker уже установлен" return fi print_msg "Установка Docker..." curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh systemctl enable docker systemctl start docker rm get-docker.sh if ! command -v docker-compose &> /dev/null; then print_msg "Установка Docker Compose..." curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose fi } install_wireguard() { print_msg "Установка WireGuard..." case $OS in ubuntu|debian) apt-get install -y wireguard wireguard-tools qrencode ;; centos|rhel|fedora) yum install -y epel-release yum install -y wireguard-tools qrencode ;; esac mkdir -p /etc/wireguard cd /etc/wireguard if [ ! -f server_private.key ]; then wg genkey | tee server_private.key | wg pubkey > server_public.key chmod 600 server_private.key fi read -p "Введите порт WireGuard (по умолчанию 51820): " WG_PORT WG_PORT=${WG_PORT:-51820} SERVER_PRIVATE_KEY=$(cat server_private.key) SERVER_IP=$(curl -s ifconfig.me) cat > /etc/wireguard/wg0.conf <> /etc/sysctl.conf sysctl -p systemctl enable wg-quick@wg0 systemctl start wg-quick@wg0 ufw allow $WG_PORT/udp 2>/dev/null || firewall-cmd --permanent --add-port=$WG_PORT/udp 2>/dev/null print_msg "WireGuard установлен на порту $WG_PORT" print_msg "Конфигурация: /etc/wireguard/wg0.conf" } install_3xui() { print_msg "Установка 3x-ui..." bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) print_msg "3x-ui установлен" print_msg "Панель доступна по адресу: http://$(curl -s ifconfig.me):2053" print_msg "Логин по умолчанию: admin" print_msg "Пароль по умолчанию: admin" } install_remnawave() { print_msg "Установка Remnawave..." install_docker mkdir -p /opt/remnawave cd /opt/remnawave read -p "Введите домен для Remnawave (например, vpn.example.com): " DOMAIN read -p "Введите email для SSL сертификата: " EMAIL read -p "Введите порт панели (по умолчанию 8080): " PANEL_PORT PANEL_PORT=${PANEL_PORT:-8080} cat > docker-compose.yml < nginx.conf <