- Add services.json: hand-maintained source of truth with 20 public homelab services across 7 categories (edge, observability, media, downloads, ethereum, ai, dev), each with name/url/desc/icon. - Rewrite index.html: Services section rendered client-side from services.json with a tiny up/down status probe (green dot = up, grey = down/unreachable; graceful fallback on CORS/offline). Keep a small Projects section linking the GitHub orgs so the old content is not lost. - Add services grid + status dot styles to styles.css. - Dockerfile: COPY services.json into the nginx html root.
73 lines
3.7 KiB
JSON
73 lines
3.7 KiB
JSON
{
|
|
"categories": [
|
|
{
|
|
"name": "edge",
|
|
"label": "Edge & proxy",
|
|
"icon": "🌐",
|
|
"services": [
|
|
{ "name": "Traefik", "url": "https://ffaerber.duckdns.org/dashboard/", "desc": "Reverse proxy and edge router for the whole homelab.", "icon": "🛡️" }
|
|
]
|
|
},
|
|
{
|
|
"name": "observability",
|
|
"label": "Observability",
|
|
"icon": "📊",
|
|
"services": [
|
|
{ "name": "Grafana", "url": "https://grafana.ffaerber.duckdns.org", "desc": "Dashboards for metrics, logs and system health.", "icon": "📈" },
|
|
{ "name": "Prometheus", "url": "https://prometheus.ffaerber.duckdns.org", "desc": "Metrics collection and alerting.", "icon": "🔥" }
|
|
]
|
|
},
|
|
{
|
|
"name": "media",
|
|
"label": "Media",
|
|
"icon": "🎬",
|
|
"services": [
|
|
{ "name": "Jellyfin", "url": "https://jellyfin.ffaerber.duckdns.org", "desc": "Self-hosted movies, shows and music.", "icon": "🎞️" },
|
|
{ "name": "Immich", "url": "https://immich.ffaerber.duckdns.org", "desc": "Self-hosted photo and video library.", "icon": "📸" },
|
|
{ "name": "ComfyUI", "url": "https://comfyui.ffaerber.duckdns.org", "desc": "Node-based image generation UI on the GPU.", "icon": "🎨" }
|
|
]
|
|
},
|
|
{
|
|
"name": "downloads",
|
|
"label": "Downloads & files",
|
|
"icon": "💾",
|
|
"services": [
|
|
{ "name": "qBittorrent", "url": "https://bittorrent.ffaerber.duckdns.org", "desc": "Torrent downloads over VPN.", "icon": "🧲" },
|
|
{ "name": "Filebrowser", "url": "https://files.ffaerber.duckdns.org", "desc": "Web file browser for the homelab storage.", "icon": "📁" }
|
|
]
|
|
},
|
|
{
|
|
"name": "ethereum",
|
|
"label": "Ethereum",
|
|
"icon": " Ξ",
|
|
"services": [
|
|
{ "name": "Mainnet Geth", "url": "https://mainnet.ffaerber.duckdns.org", "desc": "Ethereum mainnet execution client (RPC).", "icon": "⛓️" },
|
|
{ "name": "Mainnet Beacon", "url": "https://beacon.ffaerber.duckdns.org", "desc": "Lighthouse consensus / beacon node.", "icon": "🗼" },
|
|
{ "name": "Staking Tracker", "url": "https://staking.ffaerber.duckdns.org", "desc": "Daily validator rewards and tax reports.", "icon": "💰" },
|
|
{ "name": "Gnosis Nethermind", "url": "https://gnosis.ffaerber.duckdns.org", "desc": "Gnosis Chain execution client (RPC).", "icon": "⛓️" },
|
|
{ "name": "Bee", "url": "https://bee.ffaerber.duckdns.org", "desc": "Ethereum Swarm node — decentralized storage API.", "icon": "🐝" },
|
|
{ "name": "Bee Dashboard", "url": "https://bee-dashboard.ffaerber.duckdns.org", "desc": "Web UI for the Swarm Bee node.", "icon": "🎛️" },
|
|
{ "name": "t4t Provider", "url": "https://t4t-provider.ffaerber.duckdns.org", "desc": "Truth-for-Truth data provider node.", "icon": "🔍" }
|
|
]
|
|
},
|
|
{
|
|
"name": "ai",
|
|
"label": "AI & speech",
|
|
"icon": "🤖",
|
|
"services": [
|
|
{ "name": "Whisper", "url": "https://whisper.ffaerber.duckdns.org", "desc": "Self-hosted speech-to-text on the GPU.", "icon": "👂" },
|
|
{ "name": "Kokoro", "url": "https://kokoro.ffaerber.duckdns.org", "desc": "Self-hosted text-to-speech, 49 voices.", "icon": "🗣️" },
|
|
{ "name": "Ollama", "url": "https://ollama.ffaerber.duckdns.org", "desc": "Local LLM serving on the GPU.", "icon": "🦙" },
|
|
{ "name": "Open WebUI", "url": "https://chat.ffaerber.duckdns.org", "desc": "Chat UI for Ollama models.", "icon": "💬" }
|
|
]
|
|
},
|
|
{
|
|
"name": "dev",
|
|
"label": "Dev platform",
|
|
"icon": "🛠️",
|
|
"services": [
|
|
{ "name": "Gitea", "url": "https://git.ffaerber.duckdns.org", "desc": "Self-hosted Git and CI for all ffaerber repos.", "icon": "🔧" }
|
|
]
|
|
}
|
|
]
|
|
} |