feat: initialize proxy-core repository with management scripts, documentation, and licensing

This commit is contained in:
houseassassin
2026-04-22 11:53:12 +03:00
commit 1a43435f5f
11 changed files with 2589 additions and 0 deletions
Executable
+299
View File
@@ -0,0 +1,299 @@
#!/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 <<EOF
[Interface]
Address = 10.0.0.1/24
ListenPort = $WG_PORT
PrivateKey = $SERVER_PRIVATE_KEY
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
EOF
echo "net.ipv4.ip_forward=1" >> /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 <<EOF
version: '3.8'
services:
remnawave:
image: remnawave/remnawave:latest
container_name: remnawave
restart: unless-stopped
ports:
- "$PANEL_PORT:8080"
volumes:
- ./data:/app/data
- ./config:/app/config
environment:
- DOMAIN=$DOMAIN
- PANEL_PORT=$PANEL_PORT
networks:
- remnawave-network
nginx:
image: nginx:alpine
container_name: remnawave-nginx
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
- ./ssl:/etc/nginx/ssl
depends_on:
- remnawave
networks:
- remnawave-network
networks:
remnawave-network:
driver: bridge
EOF
cat > nginx.conf <<EOF
events {
worker_connections 1024;
}
http {
upstream remnawave {
server remnawave:8080;
}
server {
listen 80;
server_name $DOMAIN;
return 301 https://\$server_name\$request_uri;
}
server {
listen 443 ssl http2;
server_name $DOMAIN;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
location / {
proxy_pass http://remnawave;
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto \$scheme;
}
}
}
EOF
mkdir -p ssl
if [ ! -z "$DOMAIN" ] && [ ! -z "$EMAIL" ]; then
print_msg "Получение SSL сертификата..."
docker run --rm -v "$(pwd)/ssl:/etc/letsencrypt" certbot/certbot certonly --standalone -d $DOMAIN --email $EMAIL --agree-tos --non-interactive || print_warning "Не удалось получить SSL сертификат автоматически"
fi
docker-compose up -d
print_msg "Remnawave установлен"
print_msg "Панель доступна по адресу: https://$DOMAIN"
}
show_menu() {
clear
echo -e "${BLUE}╔════════════════════════════════════════╗${NC}"
echo -e "${BLUE}║ VPN Panel Auto-Installer v1.0 ║${NC}"
echo -e "${BLUE}╚════════════════════════════════════════╝${NC}"
echo ""
echo "Выберите панель для установки:"
echo ""
echo "1) WireGuard"
echo "2) 3x-ui"
echo "3) Remnawave"
echo "4) Установить все"
echo "5) Выход"
echo ""
read -p "Ваш выбор [1-5]: " choice
}
main() {
check_root
detect_os
show_menu
case $choice in
1)
update_system
install_wireguard
;;
2)
update_system
install_3xui
;;
3)
update_system
install_remnawave
;;
4)
update_system
install_wireguard
install_3xui
install_remnawave
;;
5)
print_msg "Выход..."
exit 0
;;
*)
print_error "Неверный выбор"
exit 1
;;
esac
print_msg "Установка завершена!"
}
main