#!/bin/bash source ~/.bashrc # Deploy Gitea on VM 102 using guest-agent IP discovery set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" # Load environment variables if [ -f "$PROJECT_ROOT/.env" ]; then set -a source <(grep -v '^#' "$PROJECT_ROOT/.env" | grep -v '^$' | sed 's/#.*$//' | grep '=') set +a fi # Colors RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' log_info() { echo -e "${GREEN}[INFO]${NC} $1" } log_warn() { echo -e "${YELLOW}[WARN]${NC} $1" } log_error() { echo -e "${RED}[ERROR]${NC} $1" } VM_USER="${VM_USER:-ubuntu}" SSH_KEY="${SSH_KEY:-$HOME/.ssh/id_ed25519_proxmox}" VMID=102 VM_NAME="git-server" # Import helper library if [ -f "$PROJECT_ROOT/scripts/lib/proxmox_vm_helpers.sh" ]; then source "$PROJECT_ROOT/scripts/lib/proxmox_vm_helpers.sh" else log_error "Helper library not found" exit 1 fi main() { log_info "Deploying Gitea on VM $VMID ($VM_NAME)" echo "" # Get IP using guest agent local ip ip="$(get_vm_ip_or_warn "$VMID" "$VM_NAME" || true)" if [[ -z "$ip" ]]; then log_error "Cannot get IP for VM $VMID. Ensure SSH is working and QEMU Guest Agent is installed." exit 1 fi log_info "Using IP: $ip" echo "" # Check if Docker is installed log_info "Checking Docker installation..." if ! ssh -i "$SSH_KEY" -o StrictHostKeyChecking=no "${VM_USER}@${ip}" "command -v docker" &>/dev/null; then log_warn "Docker not found. Installing Docker..." ssh -i "$SSH_KEY" -o StrictHostKeyChecking=no "${VM_USER}@${ip}" <<'EOF' set -e sudo apt-get update -qq sudo apt-get install -y docker.io docker-compose sudo usermod -aG docker $USER EOF log_info "Docker installed. You may need to log out and back in for group changes." else log_info "Docker is installed" fi # Create Gitea directory log_info "Setting up Gitea directory..." ssh -i "$SSH_KEY" -o StrictHostKeyChecking=no "${VM_USER}@${ip}" <<'EOF' set -e mkdir -p ~/gitea cd ~/gitea EOF # Copy docker-compose file log_info "Creating docker-compose.yml..." ssh -i "$SSH_KEY" -o StrictHostKeyChecking=no "${VM_USER}@${ip}" "cat > ~/gitea/docker-compose.yml" </dev/null; then log_info "✓ Gitea is running!" echo "" log_info "Access Gitea at: http://${ip}:3000" log_info "SSH access: ssh://git@${ip}:2222" return 0 fi sleep 5 elapsed=$((elapsed + 5)) echo -n "." done log_warn "Gitea may not be fully ready yet. Check logs with:" log_info " ssh ${VM_USER}@${ip} 'cd ~/gitea && sudo docker-compose logs'" } main "$@"