Security
Reaver is self-hosted. You control the dashboard host, agent hosts, and where backups land.
Dashboard hardening
- Session cookie hardening and CSRF on state-changing actions
- Security headers including Content-Security-Policy with nonces
- Login rate limiting; ALTCHA after repeated failures
- Sensitive directories (
data/,cli/,agent/, etc.) denied from the public web root - Encrypted secrets (master key / root secret) for dashboard-held credentials
Users, invites, and password reset
Admins invite users from the Users page. Invite and password-reset emails use themed templates when SMTP is configured.
Password reset supports email tokens and security-question recovery paths depending on configuration.
Recovery keys
Security → Recovery keys downloads a recovery bundle including master key, root secret, and restic repository password notes for destinations you manage (local and remote). Store it offline (encrypted password manager or safe).
| Secret | In recovery bundle? |
|---|---|
| Dashboard master / root material | Yes |
| Local restic passwords (agent-local repos) | Yes — dashboard-managed |
| Remote restic passwords (offsite) | Yes — dashboard-managed |
See Agents — reinstall & disaster recovery.
Secrets & restic JIT
Operational model:
- All restic repository passwords (local and remote) are stored on the dashboard with other encrypted credentials.
- Restic is invoked without putting passwords on shell command lines where avoidable.
- Passwords are materialised to short-lived temp files for restic on the agent, then removed.
- UI payloads redact secrets; finished jobs scrub secrets in SQLite when complete.
- Active job rows may still hold secrets until the job finishes — protect
data/.
API tokens, chat apps, and outbound webhooks
Security → API tokens creates a token so a script, n8n, or a chat app can talk to this dashboard. Permissions: look only, start backups, restore/export, or admin. The secret is shown once. The API does not use your browser login.
Security → MCP server (off until you turn it on) is the built-in MCP endpoint in Reaver V2 (/api/v1/mcp, all paid plans). Claude, Cursor, LibreChat, Open WebUI, or LM Studio can manage backups from chat. Paste the MCP URL into the app. It will open a Reaver sign-in page; approve a permission and it receives a token.
Security → Outbound webhooks subscribe a URL to backup, restore, job, and agent events. Each POST is signed (X-Reaver-Signature). Delivery is queued so it never slows down agents.
Details and examples: MCP Server for AI Agents and Public API and chat apps.
Audit log
Security / audit views record sensitive operator actions (as implemented in the dashboard). Use them when investigating who changed SMTP, destinations, API tokens, or recovery material.
Encryption stance
Client-side restic encryption is optional (off by default). When enabled, restic encrypts repository contents with its repository password model. Local and remote restic passwords are both dashboard-managed and included in the Security recovery bundle. Enabling client-side encryption requires accepting a liability waiver (lost password = unrecoverable data).
Regardless of that setting:
- Cloud providers may offer server-side encryption at rest.
- Self-hosted SSH targets can use disk-level encryption (LUKS, ZFS, etc.).
- Reaver always encrypts credentials at rest in the dashboard database.