Configuration
Environment variables, volumes, and ports reference for Minato.
Environment variables
The compose file handles all internal service connectivity automatically. The only variables you configure in your .env are the ones below. REDIS_URL and MEILISEARCH_HOST default to the correct Docker-internal hostnames and never need to be set in production.
Required
| Variable | Description |
|---|---|
BETTER_AUTH_SECRET | Secret key used to sign sessions and tokens. Generate with openssl rand -base64 32. |
POSTGRES_PASSWORD | Password for the internal PostgreSQL database. Choose a strong password. |
MEILISEARCH_MASTER_KEY | Meilisearch master key. Generate with openssl rand -hex 32. |
TMDB_READ_ACCESS_TOKEN | TMDB v4 Read Access Token for movie and TV metadata enrichment. Get one free at themoviedb.org. |
Optional
| Variable | Description |
|---|---|
PASSKEY_RP_ID | Your deployment's public hostname, e.g. minato.example.com. Required to enable passkey (WebAuthn) support. Passkeys are disabled when this is not set. See Passkeys. |
OPENROUTER_API_KEY | OpenRouter API key. Only needed if you enable AI-powered metadata repair in Settings. See AI Metadata repair. |
Generating secrets
# BETTER_AUTH_SECRET
openssl rand -base64 32
# MEILISEARCH_MASTER_KEY
openssl rand -hex 32Don't use passwords you've used elsewhere. These values are security-sensitive — if either leaks, rotate them and restart the stack.
Rotating a secret
To rotate BETTER_AUTH_SECRET, update it in your .env file and restart the stack. Existing user sessions will be invalidated and users will need to log in again.
To rotate MEILISEARCH_MASTER_KEY, update it in your .env file and restart the stack.
Volumes
All state lives in Docker named volumes. Back these up to avoid data loss.
| Volume | What it holds |
|---|---|
minato_config | Poster and backdrop images (/config/media) and community scrapers (/config/scrapers) |
postgres_data | The PostgreSQL data directory — your entire torrent database |
redis_data | Redis persistence for the BullMQ job queue |
meilisearch_data | Meilisearch index data |
The Meilisearch index can be rebuilt from PostgreSQL if lost — it's not the source of truth. The other three cannot be reconstructed, so treat them as critical data.
Backing up
# Postgres — take a logical dump
docker compose exec postgres pg_dump -U minato minato > minato_$(date +%Y%m%d).sql
# Full volume backup (works for any volume)
docker run --rm \
-v minato_config:/data \
-v $(pwd):/backup \
alpine tar czf /backup/minato_config_$(date +%Y%m%d).tar.gz -C /data .Restoring Postgres
cat minato_backup.sql | docker compose exec -T postgres psql -U minato minatoPorts
Only one port needs to be exposed to the host.
| Port | Service |
|---|---|
7271 | nginx — serves the web frontend and proxies /api/ requests to the Hono backend |
All other services (PostgreSQL, Redis, Meilisearch) communicate on the internal Docker network and are not exposed. Don't expose them unless you have a specific reason to.
Community scrapers
Community scrapers are loaded from /config/scrapers inside the container, which is part of the minato_config volume. To use a host directory instead (so you can drop in scraper packages without touching Docker volumes), bind-mount it:
services:
minato:
volumes:
- minato_config:/config
- ./scrapers:/config/scrapers # add this lineDrop scraper directories into ./scrapers/ on your host. Minato picks them up automatically without a restart.
Runtime settings
Several instance-wide settings are configured through the admin dashboard (Settings) rather than environment variables. They are stored in the database and applied at runtime without a restart.
Search ranking
| Profile | Behaviour |
|---|---|
| Quality | Prefers well-seeded torrents with high-resolution quality indicators. |
| Health | Prioritises torrents with the most seeders and fewest leechers. |
| Freshness | Surfaces recently ingested content first. |
Set the profile under Settings → Search → Ranking profile.
Worker concurrency
| Setting | Range | Default | Description |
|---|---|---|---|
| Ingest concurrency | 1–50 | 5 | Parallel jobs parsing release titles and indexing in Meilisearch. |
| Enrichment concurrency | 1–20 | 5 | Parallel jobs fetching metadata from TMDB and AniList. |
Higher values increase throughput but also load on external APIs (TMDB rate limits). Adjust these under Settings → Workers.
Proxy URL
Configure an HTTP proxy for scrapers to route outbound requests through. Useful for avoiding IP bans or auditing traffic. Format: http://user:pass@proxy:8080. Leave blank to connect directly.
Configure under Settings → Scraping → Proxy URL.
FlareSolverr URL
If scrapers encounter Cloudflare-protected sites, point Minato at a FlareSolverr instance to bypass the challenge. Format: http://localhost:8191.
Configure under Settings → Scraping → FlareSolverr URL. The URL is passed to scrapers at runtime — they must implement FlareSolverr support to use it.
AI repair
See AI Metadata repair for the full configuration reference — provider selection, model, Ollama URL, and reasoning toggle.