# Homepage A password-protected homepage on each host lists the services that are up, with a short description of each and a link to both the service and its documentation. **Served by:** Caddy, `file_server` + `basicauth` — **Docs:** n/a (static page in this repo) ## Purpose - One landing page per host instead of a bookmark folder. - Shows at a glance which services are currently up and active. - Answers "what is this?" for every service with a one-line description. - Links to the service and to this repo's docs page for that service. ## Layout ``` shared/ └── homepage/ ├── index.html # the page, shared logic, per-host service list injected ├── style.css └── services.json # service list: name, hostname, port, description, docs link ``` The page fetches `services.json` and pings each service's health endpoint (or the proxy hostname) to set an up/down badge. It is static; the status check runs in the browser via `fetch`. ## Auth Caddy wraps the homepage with HTTP basic auth: ``` dankclaw.local { basicauth { dank $2a$14$HASH } root * /srv/homepage file_server } ``` Generate the hash with `caddy hash-password` at deploy time. Do not commit the hash or the password. ## Service Entry Format ```json { "name": "SearXNG", "hostname": "http://search.dankclaw.local", "description": "Privacy-respecting metasearch engine.", "docs": "/docs/Dankclaw/SearXNG.md" } ``` ## See Also - [[Caddy]] — the proxy that serves it - [[Dankclaw Stack]], [[Dankserver Stack]] — the services it lists