16 lines
5.6 KiB
Markdown
16 lines
5.6 KiB
Markdown
# 🚀 ФИНАЛЬНЫЙ DEPLOYMENT СКРИПТ
|
||
|
||
bash
|
||
|
||
`#!/bin/bash # ~/deploy-both.sh # Deployment script for German VPN server + Russian VDS set -e echo "╔═════════════════════════════════════════════════════════╗" echo "║ 🚀 DUAL SERVER NIXOS DEPLOYMENT (nixos-anywhere) ║" echo "╚═════════════════════════════════════════════════════════╝" echo "" # ============================================================ # CONFIG # ============================================================ GERMAN_REPO="$HOME/nix-server" RUSSIAN_REPO="$HOME/vds-ru" GERMAN_SERVER="root@64.188.70.209" RUSSIAN_SERVER="root@176.108.250.130" # ============================================================ # FUNCTION: Deploy one server # ============================================================ deploy_server() { local REPO="$1" local SERVER="$2" local SERVER_NAME="$3" local GENERATE_SECRETS="$4" # "yes" or "no" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "🎯 DEPLOYING: $SERVER_NAME" echo " Repo: $REPO" echo " Server: $SERVER" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" cd "$REPO" # Generate secrets if needed if [ "$GENERATE_SECRETS" = "yes" ]; then echo "📝 Generating secrets..." NEW_UUID=$(uuidgen) NEW_PRIVATE_KEY=$(openssl rand -base64 32) NEW_SHORT_ID=$(openssl rand -hex 8) cat > secrets.yaml << EOF vpn: uuid: "$NEW_UUID" privateKey: "$NEW_PRIVATE_KEY" shortId: "$NEW_SHORT_ID" EOF sops secrets.yaml echo "✅ Secrets encrypted" echo "" fi # Backup echo "💾 Creating backup..." mkdir -p ~/backups ssh "$SERVER" 'tar czf /tmp/backup.tar.gz /etc/nixos/ /var/lib/sing-box/ 2>/dev/null || true' 2>/dev/null || true BACKUP_NAME="$(echo $SERVER | cut -d'@' -f2)-backup-$(date +%Y-%m-%d-%H%M%S).tar.gz" scp "$SERVER":/tmp/backup.tar.gz ~/backups/"$BACKUP_NAME" 2>/dev/null || echo "⚠️ Backup skipped" echo "✅ Backup: $BACKUP_NAME" echo "" # Deploy echo "🚀 Running nixos-anywhere..." echo " (this will take 5-10 minutes)" echo "" nixos-anywhere --flake .#server "$SERVER" echo "" echo "⏳ Waiting for system to boot (120 seconds)..." sleep 120 echo "✅ Boot complete" echo "" # Verify echo "🔍 Verifying deployment..." echo "" # Try to find the non-root user (nxoska or similar) NON_ROOT_USER=$(ssh "$SERVER" 'getent passwd | grep -E ":(1000|1001):" | cut -d: -f1 | head -1') if [ -z "$NON_ROOT_USER" ]; then NON_ROOT_USER="root" fi VERIFY_SERVER="${NON_ROOT_USER}@$(echo $SERVER | cut -d'@' -f2)" ssh "$VERIFY_SERVER" << 'VERIFY_SCRIPT' echo "=== Uptime ===" uptime echo "" echo "=== System Status ===" systemctl is-system-running echo "" echo "=== Time Synchronization ===" timedatectl status | head -4 echo "" echo "=== sing-box Service (if applicable) ===" sudo systemctl status sing-box --no-pager 2>/dev/null | head -8 || echo "N/A (not a VPN server)" echo "" echo "=== Port 443 (if applicable) ===" sudo ss -tulpn 2>/dev/null | grep 443 || echo "N/A (not listening)" echo "" echo "=== NixOS Generation ===" sudo nixos-rebuild list-generations | head -3 VERIFY_SCRIPT echo "" echo "✅ $SERVER_NAME deployment complete!" echo "" echo "" } # ============================================================ # MAIN: Ask user which servers to deploy # ============================================================ echo "Which servers do you want to deploy?" echo "" echo "1) German server only (nix-server VPN)" echo "2) Russian server only (vds-ru)" echo "3) Both servers" echo "" read -p "Choose [1-3]: " CHOICE case $CHOICE in 1) deploy_server "$GERMAN_REPO" "$GERMAN_SERVER" "German Server (VPN)" "yes" ;; 2) deploy_server "$RUSSIAN_REPO" "$RUSSIAN_SERVER" "Russian Server (VDS)" "no" ;; 3) deploy_server "$GERMAN_REPO" "$GERMAN_SERVER" "German Server (VPN)" "yes" deploy_server "$RUSSIAN_REPO" "$RUSSIAN_SERVER" "Russian Server (VDS)" "no" ;; *) echo "❌ Invalid choice!" exit 1 ;; esac # ============================================================ # FINAL STATUS # ============================================================ echo "╔═════════════════════════════════════════════════════════╗" echo "║ ✅ DEPLOYMENT COMPLETED SUCCESSFULLY! ║" echo "╚═════════════════════════════════════════════════════════╝" echo "" echo "📝 Next steps:" echo " 1. Test your services" echo " 2. Commit changes to git:" echo " cd ~/nix-server && git add . && git commit -m '🚀 Deploy with nixos-anywhere'" echo " git push" echo "" echo "📚 Documentation:" echo " See: server-deployment.md" echo ""`
|
||
|
||
---
|
||
|
||
## КАК ИСПОЛЬЗОВАТЬ 🎬
|
||
|
||
bash
|
||
|
||
`# 1. Создай скрипт cat > ~/deploy-both.sh << 'PASTE_ENTIRE_SCRIPT_ABOVE' # 2. Дай права chmod +x ~/deploy-both.sh # 3. Запусти ~/deploy-both.sh # 4. Выбери вариант: # 1 = German only # 2 = Russian only # 3 = Both`
|
||
|
||
---
|
||
|