Project Minato
Deployment

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

VariableDescription
BETTER_AUTH_SECRETSecret key used to sign sessions and tokens. Generate with openssl rand -base64 32.
POSTGRES_PASSWORDPassword for the internal PostgreSQL database. Choose a strong password.
MEILISEARCH_MASTER_KEYMeilisearch master key. Generate with openssl rand -hex 32.
TMDB_READ_ACCESS_TOKENTMDB v4 Read Access Token for movie and TV metadata enrichment. Get one free at themoviedb.org.

Optional

VariableDescription
PASSKEY_RP_IDYour 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_KEYOpenRouter 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 32

Don'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.

VolumeWhat it holds
minato_configPoster and backdrop images (/config/media) and community scrapers (/config/scrapers)
postgres_dataThe PostgreSQL data directory — your entire torrent database
redis_dataRedis persistence for the BullMQ job queue
meilisearch_dataMeilisearch 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 minato

Ports

Only one port needs to be exposed to the host.

PortService
7271nginx — 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 line

Drop 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

ProfileBehaviour
QualityPrefers well-seeded torrents with high-resolution quality indicators.
HealthPrioritises torrents with the most seeders and fewest leechers.
FreshnessSurfaces recently ingested content first.

Set the profile under Settings → Search → Ranking profile.

Worker concurrency

SettingRangeDefaultDescription
Ingest concurrency1–505Parallel jobs parsing release titles and indexing in Meilisearch.
Enrichment concurrency1–205Parallel 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.

On this page