hyperion/10-linux/10-nixos/deploy.md
2025-11-22 17:48:07 +03:00

16 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🚀 ФИНАЛЬНЫЙ 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`
---