homelab-butler/README.md
2026-04-18 10:03:05 +02:00

77 lines
2.2 KiB
Markdown

# Homelab Butler
Unified API proxy for the Pfannkuchen homelab. One token, one URL, all services.
## Quick Start
```bash
# Set your butler token
echo "BUTLER_TOKEN=$(openssl rand -hex 24)" > .env
# Deploy
docker compose up -d --build
```
## Usage
```bash
TOKEN="your-butler-token"
BUTLER="http://10.4.1.116:8888"
# List available services
curl -s -H "Authorization: Bearer $TOKEN" $BUTLER/
# Dockhand (session auth handled automatically)
curl -s -H "Authorization: Bearer $TOKEN" $BUTLER/dockhand/api/environments
# Sonarr
curl -s -H "Authorization: Bearer $TOKEN" $BUTLER/sonarr/api/v3/series
# Radarr
curl -s -H "Authorization: Bearer $TOKEN" $BUTLER/radarr/api/v3/movie
# Seerr
curl -s -H "Authorization: Bearer $TOKEN" $BUTLER/seerr/api/v1/request
# Proxmox
curl -s -H "Authorization: Bearer $TOKEN" $BUTLER/proxmox/api2/json/nodes
# Home Assistant
curl -s -H "Authorization: Bearer $TOKEN" $BUTLER/homeassistant/api/states
# Outline Wiki
curl -s -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{}' $BUTLER/outline/api/collections.list
# n8n
curl -s -H "Authorization: Bearer $TOKEN" $BUTLER/n8n/api/v1/workflows
# Grafana
curl -s -H "Authorization: Bearer $TOKEN" $BUTLER/grafana/api/dashboards/home
# Uptime Kuma
curl -s -H "Authorization: Bearer $TOKEN" $BUTLER/uptime/api/status-page/pfannkuchen
```
## Services
| Service | Backend | Auth handled |
|---------|---------|-------------|
| dockhand | 10.4.1.116:3000 | Session cookie (auto-login) |
| sonarr | 10.2.1.100:8989 | X-Api-Key |
| sonarr1080p | 10.2.1.100:8990 | X-Api-Key |
| radarr | 10.2.1.100:7878 | X-Api-Key |
| radarr1080p | 10.2.1.100:7879 | X-Api-Key |
| seerr | 10.2.1.100:5055 | X-Api-Key |
| outline | 10.1.1.100:3000 | Bearer token |
| n8n | 10.4.1.113:5678 | Bearer token |
| proxmox | 10.5.85.11:8006 | PVEAPIToken |
| homeassistant | 10.10.1.20:8123 | Bearer token |
| grafana | 10.1.1.111:3000 | Bearer token |
| uptime | 159.69.245.190:3001 | Bearer token |
## Credentials
API keys are read from `/app-config/kiro/api/` (mounted read-only). The butler token is set via `BUTLER_TOKEN` env var.
For Dockhand: create `/app-config/kiro/api/dockhand` with the admin password.