- index.html: replace Image() probe with fetch(no-cors) + AbortController
timeout. fetch resolves for any network response (incl. 4xx/5xx) so
resolve -> 'up', reject/timeout -> 'down'. Fixes the bug where 401/404
services were marked green.
- services.json: add Homepage service under 'dev' (was missing; the
homepage is one of the public homelab services). Now 21 services.
- services.json: fix ethereum category icon (' Ξ' -> 'Ξ') leading space.
- .gitignore (new): ignore /.playwright-mcp/ and services-page.png.
- git rm --cached the three stray dev artifacts so they leave the repo.
74 lines
3.9 KiB
JSON
74 lines
3.9 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": "Homepage", "url": "https://homepage.ffaerber.duckdns.org", "desc": "This page — the homelab services index you are looking at.", "icon": "🏠" },
|
|
{ "name": "Gitea", "url": "https://git.ffaerber.duckdns.org", "desc": "Self-hosted Git and CI for all ffaerber repos.", "icon": "🔧" }
|
|
]
|
|
}
|
|
]
|
|
} |