Spottr sign-in with Authentik
Spottr has no accounts of its own. On a network other people share, put it behind a proxy that signs people in, such as
Authentik's forward auth in Traefik, and let Spottr trust that proxy: AUTH_MODE=proxy.
Status 2026-10-18
In use with Authentik 2026.8 and Traefik 3.7, forward auth in front of the whole host. The rule that lets a signed-in browser download an NZB is covered by a test; the Arr applications go around the proxy, see Prowlarr, Sonarr and Radarr.
What Spottr expects
- The proxy is the only way in. With
AUTH_MODE=proxySpottr does not ask anyone to sign in: whoever reaches the pages is taken to be signed in already. Do not publish the container's port where anything but the proxy and your own download clients can reach it. TRUSTED_PROXIESnames the proxy as Spottr sees it: the address its requests arrive from. That is not always the proxy's own address. In our setup Traefik runs on another host and reaches Spottr over a VPN whose subnet routing rewrites the source to the host Spottr runs on, so that host's address is the one to list. Find yours in Spottr's request log (ip=), with the setting empty, before setting it. Never list a whole network your clients are on: any address in the list may set the headers below.- The proxy sets
X-authentik-usernameon a request from a signed-in user, and replaces whatever the client sent. Authentik's Traefik middleware does this when that header is among itsauthResponseHeaders. Spottr believes it only fromTRUSTED_PROXIES, and then lets that user download NZBs (/v1/spots/{id}/nzb). Another proxy, another header:PROXY_AUTH_HEADER.
1. Application and provider in Authentik
Admin interface → Applications → Applications → Create with provider.
Application
| Field | Value |
|---|---|
| Name | Spottr |
| Slug | spottr |
| Launch URL | https://<spottr-host> |
Provider: type Proxy Provider, mode Forward auth (single application), external host
https://<spottr-host>.
Bind the application to who may use it (Policy / Group / User Bindings), and add the provider to the outpost that serves your Traefik (Applications → Outposts, the embedded outpost unless you run your own).
2. Traefik
A forward-auth middleware pointing at the outpost, with the user headers passed on:
http:
middlewares:
authentik:
forwardAuth:
address: "http://<authentik-server>:9000/outpost.goauthentik.io/auth/traefik"
trustForwardHeader: true
authResponseHeaders:
- X-authentik-username
- X-authentik-groups
- X-authentik-email
and the router for <spottr-host> using it, with Spottr's port 8080 as the service.
3. Spottr
environment:
- AUTH_MODE=proxy
- TRUSTED_PROXIES=<address the proxy's requests arrive from>/32
- SECURE_COOKIE=true
# - PROXY_AUTH_HEADER=X-authentik-username (the default)
Spottr logs a warning at every start in this mode, as a reminder that the proxy carries the sign-in.
Checking it
- Through the proxy, signed in: the pages work, and Download NZB on a spot downloads the file.
- On Spottr's own address, from another machine on the network: the pages answer (that is what
proxymode means, hence "the proxy is the only way in"), but an NZB without the API key is refused with 401. - Spottr's request log shows each visitor's own address, not the proxy's. If it shows the proxy's address for every
request,
TRUSTED_PROXIESdoes not match where the proxy's requests come from.
Without a proxy
AUTH_MODE=password with APP_PASSWORD: one shared password for everything that changes something (sending to
SABnzbd, the download queue) and for downloading NZBs. Reading the list stays open to whoever reaches the port.