Files
homelab-configs/apps/homepage/deploy-to-pve.sh
T
mo 43c4ed7a6d Add Homepage dashboard on Proxmox with Palantir theme and Admin UI.
Deploy gethomepage on pve CT 120, categorized services from Homarr, RSS feeds,
custom styling, and a browser-based admin UI on the NAS for adding sites.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-17 18:45:55 +02:00

65 lines
2.4 KiB
Bash

#!/bin/sh
# Deploy Homepage LXC (CT 120) on pve 192.168.1.216
set -e
PW="${PROXMOX_PASSWORD:-WaQTUw2t}"
PVE=192.168.1.216
VMID=120
APP="${HOMEPAGE_DIR:-/volume1/docker/homelab-configs/apps/homepage}"
STORAGE="${PVE_STORAGE:-Storage}"
ssh_pve() {
docker run --rm -v "$APP:/src:ro" alpine sh -c "
apk add --no-cache openssh-client sshpass rsync >/dev/null 2>&1
sshpass -p '$PW' ssh -o StrictHostKeyChecking=no root@$PVE \"$1\"
"
}
echo "=== Proxmox: LXC $VMID homepage ==="
if ssh_pve "pct status $VMID" 2>/dev/null | grep -q running; then
echo "CT $VMID bestaat al en draait"
else
if ssh_pve "pct status $VMID" 2>/dev/null | grep -q stopped; then
echo "Start bestaande CT $VMID"
ssh_pve "pct start $VMID"
else
echo "Maak CT $VMID aan..."
ssh_pve "pct create $VMID local:vztmpl/debian-13-standard_13.1-2_amd64.tar.zst \
--arch amd64 --cores 2 --memory 2048 --swap 512 \
--hostname homepage --password '$PW' \
--rootfs ${STORAGE}:8 \
--net0 name=eth0,bridge=vmbr0,ip=dhcp,type=veth \
--features nesting=1,keyctl=1 --unprivileged 1 --onboot 1"
ssh_pve "pct start $VMID"
fi
fi
echo "Wacht op netwerk..."
sleep 8
echo "=== Docker installeren ==="
ssh_pve "pct exec $VMID -- bash -c 'export DEBIAN_FRONTEND=noninteractive; \
apt-get update -qq && apt-get install -y -qq docker.io docker-compose curl ca-certificates 2>/dev/null; \
systemctl enable --now docker'"
echo "=== Config genereren ==="
python3 "$APP/generate-config.py" 2>/dev/null || true
echo "=== Config uploaden ==="
# tar config and push
tar -C "$APP" -czf /tmp/homepage-deploy.tgz docker-compose.yml config public websites-add.txt
docker run --rm -v /tmp:/tmp alpine sh -c "
apk add --no-cache openssh-client sshpass >/dev/null 2>&1
sshpass -p '$PW' scp -o StrictHostKeyChecking=no /tmp/homepage-deploy.tgz root@$PVE:/tmp/
"
ssh_pve "pct exec $VMID -- mkdir -p /opt/homepage && pct push $VMID /tmp/homepage-deploy.tgz /tmp/homepage-deploy.tgz"
ssh_pve "pct exec $VMID -- bash -c 'cd /opt/homepage && tar xzf /tmp/homepage-deploy.tgz && rm /tmp/homepage-deploy.tgz'"
echo "=== Homepage starten ==="
ssh_pve "pct exec $VMID -- bash -c 'cd /opt/homepage && docker compose pull && docker compose up -d'"
echo "=== IP ophalen ==="
IP=$(ssh_pve "pct exec $VMID -- hostname -I" | awk '{print $1}')
echo ""
echo "Klaar: http://${IP:-192.168.1.216}:3000"
echo "Of via pve-host als poort 3000 op CT staat: check Proxmox → CT $VMID"