#!/bin/bash
# 拉取 Homepage 镜像（多源回退）并启动容器
set -u
PW='yueling408'
SUDO() { printf '%s\n' "$PW" | sudo -S -p '' "$@"; }
CFG="$HOME/homepage/config"

for cand in \
    ghcr.io/gethomepage/homepage:latest \
    ghcr.nju.edu.cn/gethomepage/homepage:latest \
    ghcr.m.daocloud.io/gethomepage/homepage:latest \
    docker.m.daocloud.io/gethomepage/homepage:latest ; do
    echo "== 尝试 $cand"
    SUDO timeout 240 docker pull "$cand" 2>&1 | tail -2
    if SUDO docker image inspect "$cand" >/dev/null 2>&1; then
        echo "   ✅ 拉取成功: $cand"
        IMG="$cand"; break
    fi
done

if [ -z "${IMG:-}" ]; then
    echo "❌ 所有源都失败"
    exit 1
fi

SUDO docker rm -f homepage >/dev/null 2>&1
SUDO docker run -d --name homepage --network host \
    -e TZ=Asia/Shanghai \
    -e HOMEGPAGE_ALLOWED_HOSTS="x" \
    -e HOMEPAGE_ALLOWED_HOSTS="192.168.31.31:3000,127.0.0.1:3000,localhost:3000" \
    -v "$CFG:/app/config" --restart unless-stopped "$IMG" >/dev/null 2>&1

for i in $(seq 1 30); do
    code=$(curl -s --noproxy '*' -o /dev/null -w '%{http_code}' http://127.0.0.1:3000 2>/dev/null)
    [ "$code" = "200" ] && break
    sleep 3
done
echo "Homepage :3000 -> ${code:-无响应}"
SUDO docker ps --filter name=homepage --format '{{.Names}} {{.Status}}'
