From 7889aea6bde82d25b5fc402210d51fb76f528d00 Mon Sep 17 00:00:00 2001 From: Verum Date: Mon, 30 Mar 2026 12:24:08 +0300 Subject: [PATCH] xhttp config --- remna_xhttp.sh | 224 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 224 insertions(+) create mode 100644 remna_xhttp.sh diff --git a/remna_xhttp.sh b/remna_xhttp.sh new file mode 100644 index 0000000..4c2beba --- /dev/null +++ b/remna_xhttp.sh @@ -0,0 +1,224 @@ +#!/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 <