feat: add automated agent push-deploy script

This commit is contained in:
Alexander Tyrin 2026-10-02 17:49:56 +04:00
parent 4b361226da
commit ce5363c9a2

62
scripts/deploy_to_vps.sh Executable file
View file

@ -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 <user@vps_ip> <domain> [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}/<subId>"
echo ""
echo "👉 Безопасный вход в 3X-UI через SSH-туннель:"
echo " ssh -L 2053:127.0.0.1:2053 ${VPS_TARGET}"
echo " URL в браузере: http://localhost:2053"
echo "=========================================================================="