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.