#!/usr/bin/env bash
# Install Glance (dashboard) di VPS Hariri — satu perintah:
#   curl -fsSL https://glance-install.pages.dev/install.sh | bash
# Yang dilakukan script ini:
#   1. Cek internet keluar + Docker
#   2. Unduh glance.yml ke /opt/glance
#   3. Jalankan container Glance (port 8080, --network host)
#   4. Verifikasi Glance menjawab di :8080
# Perintah ini boleh diulang kapan saja (container lama diganti).
set -euo pipefail

BASE="https://glance-install.pages.dev"
CONFIG_DIR="/opt/glance"

say() { printf '%s\n' "$*"; }
die() { printf 'ERROR: %s\n' "$*" >&2; exit 1; }

[ "$(id -u)" = "0" ] || die "jalankan sebagai root (masuk root dulu, lalu ulangi)"

say "==> Cek internet keluar..."
curl -fsS --max-time 20 "$BASE/glance.yml" -o /tmp/glance.yml.download \
  || die "tidak bisa mengunduh dari $BASE — internet VPS belum pulih. Reboot VPS dari panel AsiaHub dulu, lalu ulangi perintah ini."
[ -s /tmp/glance.yml.download ] || die "glance.yml yang terunduh kosong"
grep -q "^pages:" /tmp/glance.yml.download || die "glance.yml tidak valid"

say "==> Cek Docker..."
command -v docker >/dev/null 2>&1 || die "Docker tidak ditemukan. Install dulu: apt-get update && apt-get install -y docker.io"
docker info >/dev/null 2>&1 || die "Docker daemon tidak jalan. Coba: service docker start"

say "==> Pasang config ke $CONFIG_DIR..."
mkdir -p "$CONFIG_DIR"
cp /tmp/glance.yml.download "$CONFIG_DIR/glance.yml"
rm -f /tmp/glance.yml.download

if docker ps -a --format '{{.Names}}' | grep -qx glance; then
  say "==> Container glance lama ditemukan, diganti..."
  docker rm -f glance >/dev/null
fi

say "==> Jalankan Glance (unduh image bila belum ada)..."
docker run -d --name glance --restart unless-stopped --network host \
  -v /opt/glance:/app/config \
  -v /etc/localtime:/etc/localtime:ro \
  -e TZ=Asia/Jakarta \
  glanceapp/glance:latest

say "==> Verifikasi..."
ok=0
for _ in 1 2 3 4 5 6; do
  if curl -fsS --max-time 5 http://localhost:8080/ -o /dev/null 2>/dev/null; then ok=1; break; fi
  sleep 2
done
[ "$ok" = "1" ] || die "Glance tidak menjawab di :8080 — cek: docker logs glance"

say ""
say "SELESAI. Buka dashboard Glance di: http://<IP-VPS>:8080"
say "Ubah widget: edit /opt/glance/glance.yml lalu: docker restart glance"
