feat: add automated agent push-deploy script
This commit is contained in:
parent
4b361226da
commit
ce5363c9a2
1 changed files with 62 additions and 0 deletions
62
scripts/deploy_to_vps.sh
Executable file
62
scripts/deploy_to_vps.sh
Executable 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 "=========================================================================="
|
||||
Loading…
Reference in a new issue