- Dankserver stack: RomM, Copyparty, Calibre-Web, node-exporter - Dankclaw stack: Gluetun VPN (SearXNG tunnel), SearXNG+Valkey, ComfyUI (CPU backend), OpenWebUI, Hermes, Gitea+Postgres (migrated), Caddy reverse proxy, Grafana+Prometheus+Loki+Alloy observability - Caddyfiles with .local hostname convention and basicauth homepage - bind-mount storage policy, no named volumes - deploy.sh mirroring vllmScripts git workflow (push -> pull -> restart -> health) - docs/ Obsidian vault: per-service docs from frank-default-small research subagents (promtail EOL -> Alloy; gitea SECRET_KEY preservation; ComfyUI --cpu) - bats test suite at 6 seams — 22 tests green
57 lines
1.6 KiB
Markdown
57 lines
1.6 KiB
Markdown
# 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
|