Document auth_token for non-loopback

This commit is contained in:
Yiorgis Gozadinos 2026-05-26 16:07:53 +03:00
parent 3c608046e2
commit 960bf8f3e3
No known key found for this signature in database
4 changed files with 23 additions and 1 deletions

View file

@ -249,6 +249,13 @@ By default the ingester exposes a FastAPI control plane on
`127.0.0.1:8765`. Set `ingester.api.auth_token` to require a Bearer
token; without one the API stays open and the service logs a warning.
!!! warning "Non-loopback binds need a token"
Loopback (`127.0.0.1`) is local-only and safe to leave open. If
you bind to any other interface (`0.0.0.0`, a LAN IP, behind a
reverse proxy) **set `auth_token`** — the control plane can
cancel jobs, retry from the DLQ, and trigger source refreshes.
The startup warning is your only signal that you forgot.
| Method | Path | Purpose |
|---|---|---|
| `GET` | `/` | browser dashboard (HTML; unauthenticated, the JS attaches the bearer on its own JSON fetches) |
@ -276,7 +283,7 @@ ingester:
enabled: true
host: 127.0.0.1
port: 8765
auth_token: ${INGESTER_TOKEN} # null → unauthenticated
auth_token: secret # null → unauthenticated
```
## Operating

View file

@ -113,6 +113,15 @@ export ANTHROPIC_API_KEY=your-key-here
docker compose up -d
```
The ingester container binds the control plane to `0.0.0.0` so the host
port-mapping works. The example config requires a bearer token via
`INGESTER_TOKEN`; set it in `.env` (gitignored) alongside the API keys
before bringing the stack up:
```bash
echo "INGESTER_TOKEN=$(openssl rand -hex 32)" >> .env
```
## Documentation
- [Remote Processing](https://ggozad.github.io/haiku.rag/remote-processing/)

View file

@ -67,6 +67,9 @@ services:
# Logfire emits spans when this is set; stays silent (no telemetry) when unset.
# Set LOGFIRE_TOKEN in examples/docker/.env (gitignored) to enable.
- LOGFIRE_TOKEN=${LOGFIRE_TOKEN:-}
# Bearer token the control plane requires when host isn't loopback.
# Set INGESTER_TOKEN in examples/docker/.env (gitignored).
- INGESTER_TOKEN=${INGESTER_TOKEN:-}
depends_on:
docling-serve-1:
condition: service_healthy

View file

@ -13,6 +13,9 @@ ingester:
api:
# Bind to all interfaces inside the container so docker port-mapping works.
host: 0.0.0.0
# Non-loopback bind: set a bearer token. Source from an env var so the
# token doesn't sit in this file checked into ops repos.
auth_token: ${INGESTER_TOKEN}
sources:
- type: fs
id: docs