Keep your media searches moving.
NeutArr finds missing media and unmet quality upgrades in your existing Arr apps, then asks those apps to search for them.
NeutArr periodically checks your configured apps and triggers searches for:
You control how many items NeutArr processes, how often it runs, and when each app is allowed to search. Multiple instances of the same app are supported.
NeutArr does not replace Sonarr, Radarr, your download client, or your media server. It works alongside your existing stack and uses each app's API to request searches.
| App | Missing media | Quality upgrades |
|---|---|---|
| Sonarr | Yes | Yes |
| Radarr | Yes | Yes |
| Lidarr | Yes | Yes |
| Readarr | Yes | Yes |
| Whisparr v2 | Yes | Yes |
| Whisparr v3 / Eros | Yes | Yes |
| Swaparr | Stalled-download handling | Not applicable |
You will need:
The URL must be reachable from the NeutArr container. If Sonarr is another
container on the same Docker network, for example, use
http://sonarr:8989 rather than http://localhost:8989.
Create a compose.yaml file:
services:
neutarr:
image: iampuid0/neutarr:latest
container_name: neutarr
restart: unless-stopped
ports:
- "9705:9705"
volumes:
- ./config:/config
environment:
PUID: 1000
PGID: 1000
TZ: UTC
Start NeutArr:
docker compose up -d
On the first start, NeutArr generates a one-time setup token. Retrieve it with:
docker compose logs neutarr 2>&1 | grep 'First-run setup token'
The generated value is also stored at ./config/.setup-token.
Open http://localhost:9705, enter the setup token, create your account, and choose an authentication mode. The generated token file is deleted after setup is complete.
To supply your own first-run token instead, add a 16-or-more-character
NEUTARR_SETUP_TOKEN environment variable. An explicitly supplied token is
not printed to the logs or written to .setup-token.
After signing in:
Start with conservative item limits and increase them after observing how your indexers and download clients respond.
The setup wizard offers three modes:
| Mode | Best for |
|---|---|
| Login Mode | Most installations. Every connection uses the NeutArr username and password. |
| Local Bypass Mode | Trusted private networks where selected CIDR ranges may skip login. |
| Proxy Auth Mode | An authenticating reverse proxy or SSO service that supplies a trusted identity header. |
Login Mode is the recommended starting point. Authentication mode and Local Bypass CIDRs can be changed later under Settings → Security.
Proxy Auth Mode requires both of these environment variables:
environment:
TRUSTED_PROXIES: 172.20.0.0/16
NEUTARR_PROXY_AUTH_HEADER: Remote-User
Use the narrowest possible proxy range. Your proxy must remove any client-supplied copy of the identity header before setting its own value after authentication. Invalid or incomplete proxy-auth configuration fails closed.
If NeutArr is available only through HTTPS but cannot detect the proxy's
original scheme, NEUTARR_SECURE_COOKIES=true forces secure session cookies.
Do not enable it for direct HTTP access.
NeutArr creates an API key for integrations and automation. View or rotate it
under Settings → Account & API, then send it in the X-Api-Key header:
curl -H "X-Api-Key: ${NEUTARR_API_KEY}" \
http://neutarr.example/api/settings
Local Bypass Mode does not expose account credentials or the API key. Connect from outside the configured bypass ranges and sign in before managing them.
API keys in URL query strings are rejected. If an older integration uses
?apikey=..., update it to use the header so credentials do not leak into
browser history, proxy logs, monitoring tools, or referrer data.
All persistent NeutArr settings, state, and logs live under /config. Back up
the host directory mapped to that path before upgrades.
Update the container with:
docker compose pull
docker compose up -d
Review startup and application output with:
docker compose logs --tail=200 neutarr
NeutArr exposes GET /api/health, and the published image uses it for Docker's
container health check.
If a bind-mounted config directory was created as root:root, set PUID and
PGID to the host account that should own it. The container repairs /config
ownership during startup.
Current releases redact common credentials from configured application logs
and from log lines returned through the web interface. This does not rewrite
historical files already stored under /config/logs. Rotate older logs and
replace any credential that may previously have been exposed.
The generated first-run setup token is intentionally visible in startup logs until account creation consumes it. Treat log access as administrative access while initial setup is incomplete.
docker compose ps and
docker compose logs neutarr.http://localhost:9705/api/health
and inspect the startup logs.TRUSTED_PROXIES and that it replaces the configured identity header.Still stuck? Open an issue or join the NeutArr Discord channel.
Read SECURITY.md before reporting a vulnerability. The security audit comparison contains the detailed finding-by-finding hardening record that is intentionally kept out of this first-time setup guide.
Development setup, checks, branch policy, and pull request guidance are in CONTRIBUTING.md.
NeutArr's code lineage began with Huntarr v6.6.3 and continued through ElfHosted's NewtArr. NeutArr is independently maintained as a focused helper for missing-media searches, quality upgrades, and stalled-download handling.
Content type
Image
Digest
sha256:c3df05a85…
Size
52 MB
Last updated
2 months ago
docker pull iampuid0/neutarr