From ce5363c9a27bb5601fc14763305a262b7307ff8e Mon Sep 17 00:00:00 2001 From: Alexander Tyrin Date: Fri, 2 Oct 2026 17:49:56 +0400 Subject: [PATCH] feat: add automated agent push-deploy script --- scripts/deploy_to_vps.sh | 62 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100755 scripts/deploy_to_vps.sh diff --git a/scripts/deploy_to_vps.sh b/scripts/deploy_to_vps.sh new file mode 100755 index 0000000..a47a316 --- /dev/null +++ b/scripts/deploy_to_vps.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash +# ============================================================================== +# Agent Push-Deploy for Pelmeni Shield VPN +# Развертывание защищенного VPN-стека на удаленный VPS без открытия локального Git наружу. +# ============================================================================== +set -euo pipefail + +REPO_DIR="$(cd "$(dirname "$0")/.." && pwd)" + +if [[ $# -lt 2 ]]; then + echo "Использование: $0 [sub_token] [certbot_email]" + echo "Пример: $0 root@176.96.241.196 endpoint.pelmeni-club.com my_secret_token_123" + exit 1 +fi + +VPS_TARGET="$1" +DOMAIN="$2" +SUB_TOKEN="${3:-$(openssl rand -hex 12)}" +CERTBOT_EMAIL="${4:-admin@${DOMAIN}}" + +echo "🚀 === Запуск агентского Push-деплоя Pelmeni Shield ===" +echo "🎯 Целевой VPS: ${VPS_TARGET}" +echo "🌐 Домен: ${DOMAIN}" +echo "🔑 Токен подписок: ${SUB_TOKEN}" +echo "" + +echo "📦 1. Создание каталога на целевом VPS (/opt/pelmeni-shield-vpn)..." +ssh "${VPS_TARGET}" "mkdir -p /opt/pelmeni-shield-vpn" + +echo "🚚 2. Передача проекта на VPS через защищенный SSH-stream..." +# Исключаем локальные базы, сертификаты и временные файлы при копировании шаблона +tar --exclude='.git' \ + --exclude='3x-ui/*.db' \ + --exclude='certbot/certs/*' \ + --exclude='certbot/www/*' \ + --exclude='.env' \ + -C "${REPO_DIR}" -czf - . | ssh "${VPS_TARGET}" "tar -xzf - -C /opt/pelmeni-shield-vpn" + +echo "⚙️ 3. Генерация .env на целевом VPS..." +ssh "${VPS_TARGET}" bash -c "cat << 'EOF' > /opt/pelmeni-shield-vpn/.env +DOMAIN=${DOMAIN} +CERTBOT_EMAIL=${CERTBOT_EMAIL} +SUB_TOKEN=${SUB_TOKEN} +TELEGRAM_BOT_TOKEN=8065539545:AAECBnyjinUVVGv3vhtoWZ99tUmnT9sze-k +TELEGRAM_CHAT_ID=-1004488599816 +TELEGRAM_TOPIC_ID=18 +EOF" + +echo "🛡️ 4. Запуск скрипта инициализации на целевом VPS..." +ssh "${VPS_TARGET}" "chmod +x /opt/pelmeni-shield-vpn/scripts/*.sh && bash /opt/pelmeni-shield-vpn/scripts/init.sh" + +echo "" +echo "==========================================================================" +echo "🎉 СТЕК PELMENI SHIELD УСПЕШНО РАЗВЕРНУТ НА ${VPS_TARGET}!" +echo "==========================================================================" +echo "🥟 Сайт любителей пельменей: https://${DOMAIN}/" +echo "🥟 Секретные подписки: https://${DOMAIN}/api/v1/recipes/secret_${SUB_TOKEN}/" +echo "" +echo "👉 Безопасный вход в 3X-UI через SSH-туннель:" +echo " ssh -L 2053:127.0.0.1:2053 ${VPS_TARGET}" +echo " URL в браузере: http://localhost:2053" +echo "=========================================================================="