Files
homelab-docs/deploy-uptime-kuma.sh

135 lines
3.1 KiB
Bash

#!/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 ""