#!/bin/bash # Deploy Uptime Kuma on main-pve # LXC Container 128 at 10.0.10.26 set -e echo "=== Uptime Kuma Deployment Script ===" echo "" # Configuration VMID=128 HOSTNAME="uptime-kuma" IP="10.0.10.26" GATEWAY="10.0.10.1" CORES=2 MEMORY=2048 SWAP=512 DISK="8" TEMPLATE="local:vztmpl/debian-12-standard_12.7-1_amd64.tar.zst" echo "Configuration:" echo " VMID: $VMID" echo " Hostname: $HOSTNAME" echo " IP: $IP/24" echo " Resources: ${CORES} cores, ${MEMORY}MB RAM, ${DISK}GB disk" echo "" # Check if container already exists if ssh root@10.0.10.3 "pct status $VMID 2>/dev/null"; then echo "⚠️ Container $VMID already exists!" echo "" read -p "Delete and recreate? (y/N): " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then echo "Stopping and removing container $VMID..." ssh root@10.0.10.3 "pct stop $VMID 2>/dev/null || true" sleep 2 ssh root@10.0.10.3 "pct destroy $VMID" echo "✅ Container removed" else echo "❌ Aborted" exit 1 fi fi echo "Creating LXC container..." ssh root@10.0.10.3 << EOF pct create $VMID $TEMPLATE \ --hostname $HOSTNAME \ --cores $CORES \ --memory $MEMORY \ --swap $SWAP \ --net0 name=eth0,bridge=vmbr0,ip=$IP/24,gw=$GATEWAY \ --storage local-lvm \ --rootfs 8 \ --unprivileged 1 \ --features nesting=1 echo "✅ Container created" echo "" echo "Starting container..." pct start $VMID sleep 5 echo "✅ Container started" echo "" echo "Installing Docker..." pct exec $VMID -- bash -c ' apt update apt install -y docker.io curl systemctl enable docker systemctl start docker ' echo "✅ Docker installed" echo "" echo "Deploying Uptime Kuma..." pct exec $VMID -- bash -c " docker run -d \ --name uptime-kuma \ --restart=always \ -p 3001:3001 \ -v uptime-kuma:/app/data \ louislam/uptime-kuma:2 echo 'Waiting for Uptime Kuma to start...' sleep 10 # Verify container is running if docker ps | grep -q uptime-kuma; then echo '✅ Uptime Kuma container running' else echo '❌ Uptime Kuma failed to start' docker logs uptime-kuma exit 1 fi " echo "" echo "Testing Uptime Kuma endpoint..." sleep 5 EOF # Test from host if curl -s -o /dev/null -w "%{http_code}" http://$IP:3001 | grep -q 200; then echo "✅ Uptime Kuma is responding!" else echo "⚠️ Uptime Kuma not responding yet (may need more time to start)" fi echo "" echo "=== Deployment Complete! ===" echo "" echo "🎉 Uptime Kuma deployed successfully!" echo "" echo "Access Uptime Kuma:" echo " URL: http://$IP:3001" echo " Initial setup required on first visit" echo "" echo "Next steps:" echo "1. Go to http://$IP:3001" echo "2. Create admin account" echo "3. Add monitors for your services" echo "4. Create status page" echo "" echo "Container management:" echo " Start: ssh root@10.0.10.3 'pct start $VMID'" echo " Stop: ssh root@10.0.10.3 'pct stop $VMID'" echo " Shell: ssh root@10.0.10.3 'pct enter $VMID'" echo " Logs: ssh root@10.0.10.3 'pct exec $VMID -- docker logs uptime-kuma -f'" echo ""