#!/usr/bin/env bash # ========================================== # XHTTP NODE SETUP SCRIPT (PRODUCTION READY) # ========================================== # Что делает: # 1. Генерирует конфиг ноды # 2. Ждет подтверждения # 3. Перезапускает node контейнер # 4. Вставляет location блок в nginx # 5. Проверяет nginx конфиг # 6. В случае ошибки — открывает nano # 7. Финальный чек-лист + XHTTP config # ========================================== set -e # ========================= # CONFIG # ========================= NGINX_CONF="/opt/remnawave/nginx.conf" NODE_CONTAINER="remnanode" NGINX_CONTAINER="remnawave-nginx" # ========================= # UTILS # ========================= # Yes/No (Enter = YES) ask_yes_no() { while true; do read -r -p "$1 [Y/n]: " answer if [[ -z "$answer" ]]; then return 0 fi case "$answer" in [Yy]*) return 0 ;; [Nn]*) echo "Повторите подтверждение." ;; *) echo "Введите Y или N (Enter = Y)" ;; esac done } # Execute command safely run_cmd() { echo ">> $1" if ! eval "$1"; then echo "❌ Ошибка выполнения" exit 1 fi } # ========================= # STEP 1 — NODE CONFIG # ========================= read -r -p "Введите название ноды (например USA): " NODE_NAME TAG="${NODE_NAME}_XHTTP" echo echo "========== СКОПИРУЙ И ВСТАВЬ ==========" cat < "$TMP_FILE" mv "$TMP_FILE" "$NGINX_CONF" fi # ========================= # VALIDATE NGINX # ========================= echo echo "Проверка nginx конфигурации..." if docker exec ${NGINX_CONTAINER} nginx -t; then echo "✔ nginx конфиг валиден" echo "Перезапуск nginx..." run_cmd "docker restart ${NGINX_CONTAINER}" else echo "❌ nginx конфиг сломан!" echo "Открываю nano..." nano "$NGINX_CONF" echo "Повторная проверка..." if ! docker exec ${NGINX_CONTAINER} nginx -t; then echo "❌ Ошибка не исправлена" echo "Восстанавливаю бэкап..." cp "${NGINX_CONF}.bak" "$NGINX_CONF" exit 1 fi echo "✔ Исправлено, перезапуск nginx..." run_cmd "docker restart ${NGINX_CONTAINER}" fi # ========================= # STEP 3 — FINAL CHECKLIST # ========================= echo echo "=== Финальная проверка ===" ask_yes_no "Создали хост?" ask_yes_no "Настроили ли вы пути и защиту? (путь: /xhttppath/)" echo echo "========== ДОБАВЬ В XHTTP CONFIG ==========" cat <