Skip to main content

Configuration

Two homes, with a deliberate rule: .env holds only what must exist before the database, or be changeable without the web UI. Everything else lives in the database, encrypted, and is edited in the UI.

WhereWhatWhy there
.envREAPER_SECRET_KEY, REAPER_SECRET_KEY_OLD (both optional)They decrypt the database's secrets, so they cannot live inside it
.envdata dir, host, port, loggingNeeded before anything else exists
.envREAPER_RECOVERYMust work when the UI has locked you out, so it has no setting in the UI
.envREAPER_ALLOW_UNARMED_LEAVING_SOONSeeds the first run only. After that the UI owns it, under Settings, Plex, as "Update while read-only"
.envREAPER_DESTRUCTIVE_ACTIONS_ENABLEDSeeds the first run only. The UI owns it after that
.envREAPER_SERVE_SPAOn by default. Turn it off in development so Vite serves the UI
Database, encryptedInstance URLs and API keys, the Discord webhook, policies, schedules, whitelistEditable and rotatable without a redeploy

Seeding services from the environment

Seed instances from the environment for a declarative deployment:

REAPER_SONARR_HD_URL=https://sonarr.example.net
REAPER_SONARR_HD_API_KEY=...
REAPER_SONARR_4K_URL=https://sonarr-4k.example.net
REAPER_SONARR_4K_API_KEY=...

Each one is imported and encrypted the first time Reaper sees it, and Reaper then logs that the variable can be removed. The import runs on every start, so a service added to the environment later is picked up on the next restart.

Plex is added with Sign in with Plex in the setup wizard, which discovers your server and its token for you.

Also in this section