Repository navigation
Operations
Backup and restore, maintenance, statistics, logs and security.
The indexarr backup contains the SQLite database, not the downloaded files.
Backups are kept in backups/ next to the database (data/backups/ with the
user service): automatic ones as indexarr-<timestamp>.db, the copies taken
before a restore as pre-restore-*.db and those of scripts/upgrade.sh as
pre-upgrade-*.db.
The vault key is not in the database: it must be kept separately
(INDEXARR_MASTER_KEY, vault_key_path or the user file
~/.config/indexarr/master.key). Without that key the stored secrets cannot be
opened. Details in Vault.
From Settings → Backup you can create a backup, download it, delete it
and restore it. Restore loads a validated .db, copies it to
indexarr.db.restore, the service restarts and the file is applied before
opening the database. The current database is copied to
backups/pre-restore-*.db. The systemd unit uses Restart=always to
complete the restart; without systemd, restart manually.
- Database report: sizes, free pages, WAL/SHM, row counts and release breakdown.
- Integrity check, quick check, foreign key check.
- Vacuum, optimize/checkpoint, analyze, rebuild indexes.
-
Deduplication by infohash,
.torrentcleanup, retention, cleanup of releases without links or hidden, purge per indexer. - Automatic backups with rotation and restore from the UI.
- Source health with errors, failures and Test/Run buttons.
- Clear source errors, reset API usage, recount source items.
-
Prometheus metrics on
GET /metrics(indexarr_releases,indexarr_indexers,indexarr_runs_24h,indexarr_errors_24h,indexarr_blocklist_rules,indexarr_db_bytes, uptime…), without authentication like/healthz. - Runs → detail: counts, duration and full error of a single run.
- Cancel in the row of a running source cancels the run.
Statistics has six tabs: Requests (incoming requests with outcome and
timings), Overview (per app and per indexer), Downloads (grabs served
per source, with a source filter and a chip that copies the magnet, eD2k link
or .torrent link of the release), Runs, New releases and Network
(per-host counters).
Logs holds only the system log: the last 2000 messages of the process,
most recent first. Old links (/logs?tab=requests, /activity?tab=logs, …)
redirect to the new place. The system log offers:
- filter by level (
debug,info,warning,error), by origin (indexarr,indexer/Torznab, RSS/HTML, notifications) and search in the message and in the attributes; - Problems button with the count of warnings and errors matching the current filters;
- row limit (100/300/1000) and auto-refresh every 10 seconds;
- Download .txt and Clear of the buffer;
- the outcomes of Test all and Test FlareSolverr also arrive here.
Each source error reports source, kind, host and the original message.
Internal errors use component=indexarr, indexer errors component=indexer and
feed errors component=rss. The same lines go to stdout (journal with systemd)
and to the rotating log file logs/indexarr.log next to indexarr.json: 5 files
of at most 10 MB by default.
tail -f data/logs/indexarr.log # rotating file
journalctl --user -u indexarr -f # systemd journalVerbosity is changed from Logs → Runtime verbosity (debug, info, warn,
error): it is applied immediately, saved in the database and kept across
restarts. log_level in indexarr.json is only the initial value. API keys,
passwords and tokens are redacted in the buffer shown by the UI.
- The Torznab API key is mandatory for search and download.
t=capsalso answers without a key, like other Torznab clients. Additional keys can be revoked individually and the rate limit is per key. - The UI accepts HTTP Basic if you set a username and password in Settings. Without credentials it is open to anyone who can reach the port: use it on a trusted network or put it behind a reverse proxy with TLS.
-
GET /healthz,GET /metricsand/static/*do not go through Basic auth: protect the network or the reverse proxy./metricsdoes not contain release data, only counts. - All POST forms require a CSRF token tied to the browser; uploading a multipart backup uses the same token in the query, without reading the file before the check.
- Passwords are stored as
pbkdf2-sha256$iterations$salt$hash. - Indexer, proxy, app, client and notification secrets are in the vault, not in clear text in the database.
- The server does not execute code uploaded by the indexers: XML and JSON are only data.
- FlareSolverr receives the full indexer URL, including the API key, and a single resolution can take up to ~60 seconds.
Part of the indexarr documentation.
indexarr
Guides
APIs
Sources
Operations
Project