fix: stabilize installer flows, managers, and terminal output
This commit is contained in:
+68
-25
@@ -17,6 +17,7 @@ YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
MAGENTA='\033[0;35m'
|
||||
CYAN='\033[0;36m'
|
||||
WHITE='\033[1;37m'
|
||||
NC='\033[0m'
|
||||
|
||||
# Configuration
|
||||
@@ -115,6 +116,49 @@ configure_nginx_3xui() {
|
||||
read -p "Введите домен (например, vpn.example.com): " DOMAIN
|
||||
read -p "Введите порт 3x-ui (по умолчанию 2053): " XRAY_PORT
|
||||
XRAY_PORT=${XRAY_PORT:-2053}
|
||||
if ! [[ "$XRAY_PORT" =~ ^[0-9]+$ ]] || [ "$XRAY_PORT" -lt 1 ] || [ "$XRAY_PORT" -gt 65535 ]; then
|
||||
error "Неверный порт: $XRAY_PORT"
|
||||
return 1
|
||||
fi
|
||||
|
||||
cat > "$NGINX_DIR/sites-available/3xui" <<EOF
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
server_name $DOMAIN;
|
||||
|
||||
location /.well-known/acme-challenge/ {
|
||||
root /var/www/html;
|
||||
}
|
||||
|
||||
location / {
|
||||
return 301 https://\$server_name\$request_uri;
|
||||
}
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443;
|
||||
listen [::]:443;
|
||||
server_name $DOMAIN;
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:$XRAY_PORT;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade \$http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
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
|
||||
|
||||
ln -sf "$NGINX_DIR/sites-available/3xui" "$NGINX_DIR/sites-enabled/"
|
||||
nginx -t
|
||||
|
||||
log "Получение SSL сертификата..."
|
||||
certbot certonly --nginx -d $DOMAIN --non-interactive --agree-tos --email admin@$DOMAIN
|
||||
|
||||
cat > "$NGINX_DIR/sites-available/3xui" <<EOF
|
||||
server {
|
||||
@@ -155,11 +199,6 @@ server {
|
||||
}
|
||||
EOF
|
||||
|
||||
ln -sf "$NGINX_DIR/sites-available/3xui" "$NGINX_DIR/sites-enabled/"
|
||||
|
||||
log "Получение SSL сертификата..."
|
||||
certbot certonly --nginx -d $DOMAIN --non-interactive --agree-tos --email admin@$DOMAIN
|
||||
|
||||
nginx -t && systemctl reload nginx
|
||||
|
||||
success "Nginx настроен для 3x-ui на домене $DOMAIN"
|
||||
@@ -201,6 +240,10 @@ configure_haproxy_loadbalancer() {
|
||||
log "Настройка HAProxy для балансировки нагрузки..."
|
||||
|
||||
read -p "Введите количество backend серверов: " BACKEND_COUNT
|
||||
if ! [[ "$BACKEND_COUNT" =~ ^[0-9]+$ ]] || [ "$BACKEND_COUNT" -lt 1 ]; then
|
||||
error "Введите число больше 0"
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
log "Введите IP адреса backend серверов:"
|
||||
@@ -306,12 +349,12 @@ show_tips() {
|
||||
clear
|
||||
echo ""
|
||||
echo -e "${MAGENTA}╔════════════════════════════════════════════════════════════════════╗${NC}"
|
||||
echo -e "${MAGENTA}║${NC} ${WHITE}💡 Подсказки по настройке Reverse Proxy${NC} ${MAGENTA}║${NC}"
|
||||
echo -e "${MAGENTA}║${NC} ${WHITE}Подсказки по настройке Reverse Proxy${NC} ${MAGENTA}║${NC}"
|
||||
echo -e "${MAGENTA}╚════════════════════════════════════════════════════════════════════╝${NC}"
|
||||
echo ""
|
||||
|
||||
echo -e " ${CYAN}╔═══════════════════════════════════════════════════════════════╗${NC}"
|
||||
echo -e " ${CYAN}║${NC} ${WHITE}🔧 Nginx${NC} ${CYAN}║${NC}"
|
||||
echo -e " ${CYAN}║${NC} ${WHITE}Nginx${NC} ${CYAN}║${NC}"
|
||||
echo -e " ${CYAN}╚═══════════════════════════════════════════════════════════════╝${NC}"
|
||||
echo -e " ${GREEN}✓${NC} Лучший выбор для высоких нагрузок"
|
||||
echo -e " ${GREEN}✓${NC} Отличное кэширование и обработка статики"
|
||||
@@ -320,7 +363,7 @@ show_tips() {
|
||||
echo ""
|
||||
|
||||
echo -e " ${CYAN}╔═══════════════════════════════════════════════════════════════╗${NC}"
|
||||
echo -e " ${CYAN}║${NC} ${WHITE}🚀 Caddy${NC} ${CYAN}║${NC}"
|
||||
echo -e " ${CYAN}║${NC} ${WHITE}Caddy${NC} ${CYAN}║${NC}"
|
||||
echo -e " ${CYAN}╚═══════════════════════════════════════════════════════════════╝${NC}"
|
||||
echo -e " ${GREEN}✓${NC} Автоматический SSL из коробки"
|
||||
echo -e " ${GREEN}✓${NC} Простая конфигурация"
|
||||
@@ -329,7 +372,7 @@ show_tips() {
|
||||
echo ""
|
||||
|
||||
echo -e " ${CYAN}╔═══════════════════════════════════════════════════════════════╗${NC}"
|
||||
echo -e " ${CYAN}║${NC} ${WHITE}⚖️ HAProxy${NC} ${CYAN}║${NC}"
|
||||
echo -e " ${CYAN}║${NC} ${WHITE}HAProxy${NC} ${CYAN}║${NC}"
|
||||
echo -e " ${CYAN}╚═══════════════════════════════════════════════════════════════╝${NC}"
|
||||
echo -e " ${GREEN}✓${NC} Лучший для балансировки нагрузки"
|
||||
echo -e " ${GREEN}✓${NC} TCP и HTTP режимы"
|
||||
@@ -338,7 +381,7 @@ show_tips() {
|
||||
echo ""
|
||||
|
||||
echo -e " ${CYAN}╔═══════════════════════════════════════════════════════════════╗${NC}"
|
||||
echo -e " ${CYAN}║${NC} ${WHITE}🔄 Гибридные решения${NC} ${CYAN}║${NC}"
|
||||
echo -e " ${CYAN}║${NC} ${WHITE}Гибридные решения${NC} ${CYAN}║${NC}"
|
||||
echo -e " ${CYAN}╚═══════════════════════════════════════════════════════════════╝${NC}"
|
||||
echo -e " ${BLUE}•${NC} Nginx + Caddy: статика + автоSSL"
|
||||
echo -e " ${BLUE}•${NC} HAProxy + Nginx: балансировка + кэш"
|
||||
@@ -346,7 +389,7 @@ show_tips() {
|
||||
echo ""
|
||||
|
||||
echo -e " ${YELLOW}╔═══════════════════════════════════════════════════════════════╗${NC}"
|
||||
echo -e " ${YELLOW}║${NC} ${WHITE}📋 Рекомендации${NC} ${YELLOW}║${NC}"
|
||||
echo -e " ${YELLOW}║${NC} ${WHITE}Рекомендации${NC} ${YELLOW}║${NC}"
|
||||
echo -e " ${YELLOW}╚═══════════════════════════════════════════════════════════════╝${NC}"
|
||||
echo -e " ${WHITE}1.${NC} Для простых VPN панелей: ${GREEN}Caddy${NC}"
|
||||
echo -e " ${WHITE}2.${NC} Для высоких нагрузок: ${GREEN}Nginx${NC}"
|
||||
@@ -364,7 +407,7 @@ show_main_menu() {
|
||||
clear
|
||||
echo ""
|
||||
echo -e "${CYAN}╔═══════════════════════════════════════════════════════════════════════╗${NC}"
|
||||
echo -e "${CYAN}║${MAGENTA} 🌐 REVERSE PROXY MANAGER ${CYAN}║${NC}"
|
||||
echo -e "${CYAN}║${MAGENTA} REVERSE PROXY MANAGER ${CYAN}║${NC}"
|
||||
echo -e "${CYAN}║${BLUE} Nginx • Caddy • HAProxy ${CYAN}║${NC}"
|
||||
echo -e "${CYAN}╚═══════════════════════════════════════════════════════════════════════╝${NC}"
|
||||
echo ""
|
||||
@@ -378,50 +421,50 @@ show_main_menu() {
|
||||
echo ""
|
||||
|
||||
echo -e " ${CYAN}╔═══════════════════════════════════════════════════════════════╗${NC}"
|
||||
echo -e " ${CYAN}║${NC} ${WHITE}📦 УСТАНОВКА${NC} ${CYAN}║${NC}"
|
||||
echo -e " ${CYAN}║${NC} ${WHITE}УСТАНОВКА${NC} ${CYAN}║${NC}"
|
||||
echo -e " ${CYAN}╚═══════════════════════════════════════════════════════════════╝${NC}"
|
||||
echo ""
|
||||
echo -e " ${YELLOW}1.${NC} 🔧 ${WHITE}Установить Nginx${NC}"
|
||||
echo -e " ${YELLOW}1.${NC} ${WHITE}Установить Nginx${NC}"
|
||||
echo -e " ${GRAY}Высокая производительность и кэширование${NC}"
|
||||
echo ""
|
||||
echo -e " ${YELLOW}2.${NC} 🚀 ${WHITE}Установить Caddy${NC}"
|
||||
echo -e " ${YELLOW}2.${NC} ${WHITE}Установить Caddy${NC}"
|
||||
echo -e " ${GRAY}Автоматический SSL из коробки${NC}"
|
||||
echo ""
|
||||
echo -e " ${YELLOW}3.${NC} ⚖️ ${WHITE}Установить HAProxy${NC}"
|
||||
echo -e " ${YELLOW}3.${NC} ${WHITE}Установить HAProxy${NC}"
|
||||
echo -e " ${GRAY}Балансировка нагрузки${NC}"
|
||||
echo ""
|
||||
|
||||
echo -e " ${CYAN}╔═══════════════════════════════════════════════════════════════╗${NC}"
|
||||
echo -e " ${CYAN}║${NC} ${WHITE}⚙️ НАСТРОЙКА${NC} ${CYAN}║${NC}"
|
||||
echo -e " ${CYAN}║${NC} ${WHITE}НАСТРОЙКА${NC} ${CYAN}║${NC}"
|
||||
echo -e " ${CYAN}╚═══════════════════════════════════════════════════════════════╝${NC}"
|
||||
echo ""
|
||||
echo -e " ${YELLOW}4.${NC} 🌐 ${WHITE}Настроить Nginx для 3x-ui${NC}"
|
||||
echo -e " ${YELLOW}4.${NC} ${WHITE}Настроить Nginx для 3x-ui${NC}"
|
||||
echo -e " ${GRAY}Автоматическая настройка с SSL${NC}"
|
||||
echo ""
|
||||
echo -e " ${YELLOW}5.${NC} 🔐 ${WHITE}Настроить Caddy для 3x-ui${NC}"
|
||||
echo -e " ${YELLOW}5.${NC} ${WHITE}Настроить Caddy для 3x-ui${NC}"
|
||||
echo -e " ${GRAY}Автоматический HTTPS${NC}"
|
||||
echo ""
|
||||
echo -e " ${YELLOW}6.${NC} ⚖️ ${WHITE}Настроить HAProxy (балансировка)${NC}"
|
||||
echo -e " ${YELLOW}6.${NC} ${WHITE}Настроить HAProxy (балансировка)${NC}"
|
||||
echo -e " ${GRAY}Распределение нагрузки между серверами${NC}"
|
||||
echo ""
|
||||
echo -e " ${YELLOW}7.${NC} 🔄 ${WHITE}Настроить Nginx + Caddy (гибрид)${NC}"
|
||||
echo -e " ${YELLOW}7.${NC} ${WHITE}Настроить Nginx + Caddy (гибрид)${NC}"
|
||||
echo -e " ${GRAY}Статика + автоматический SSL${NC}"
|
||||
echo ""
|
||||
|
||||
echo -e " ${CYAN}╔═══════════════════════════════════════════════════════════════╗${NC}"
|
||||
echo -e " ${CYAN}║${NC} ${WHITE}ℹ️ ИНФОРМАЦИЯ${NC} ${CYAN}║${NC}"
|
||||
echo -e " ${CYAN}║${NC} ${WHITE}ИНФОРМАЦИЯ${NC} ${CYAN}║${NC}"
|
||||
echo -e " ${CYAN}╚═══════════════════════════════════════════════════════════════╝${NC}"
|
||||
echo ""
|
||||
echo -e " ${YELLOW}8.${NC} 💡 ${WHITE}Показать подсказки${NC}"
|
||||
echo -e " ${YELLOW}8.${NC} ${WHITE}Показать подсказки${NC}"
|
||||
echo -e " ${GRAY}Рекомендации по выбору${NC}"
|
||||
echo ""
|
||||
echo -e " ${YELLOW}9.${NC} 📊 ${WHITE}Статус сервисов${NC}"
|
||||
echo -e " ${YELLOW}9.${NC} ${WHITE}Статус сервисов${NC}"
|
||||
echo -e " ${GRAY}Проверка работы установленных proxy${NC}"
|
||||
echo ""
|
||||
|
||||
echo -e " ${GRAY}─────────────────────────────────────────────────────────────────${NC}"
|
||||
echo ""
|
||||
echo -e " ${YELLOW}0.${NC} 🚪 ${WHITE}Выход${NC}"
|
||||
echo -e " ${YELLOW}0.${NC} ${WHITE}Выход${NC}"
|
||||
echo ""
|
||||
echo -e " ${GRAY}─────────────────────────────────────────────────────────────────${NC}"
|
||||
echo ""
|
||||
|
||||
Reference in New Issue
Block a user