You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: SELF-HOSTING.md
+23-1Lines changed: 23 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -531,11 +531,12 @@ Reqcore ships with security defaults that require no configuration:
531
531
- **All services are localhost-bound** — PostgreSQL, MinIO, and Adminer are never exposed to the internet. Only the application port (3000) is accessible externally.
532
532
- **Automatic CSRF protection** via Better Auth
533
533
- **Encrypted OAuth tokens** with AES-256-GCM
534
-
- **Rate limiting** on sensitive endpoints
534
+
- **Rate limiting** on sensitive endpoints (in-memory, single-instance — see "Scaling horizontally" below if you run multiple replicas)
- **Server-proxied downloads** — uploaded files are never served directly from storage; they pass through the application server, which enforces authentication and authorization
538
538
- **Deny-by-default access control** — every API endpoint checks org membership and role permissions
539
+
- **Backups never leak app secrets** — the in-app `pg_dump` runner spawns the child process with a minimal env (PGPASSWORD + a small whitelist of system vars) so application secrets like `BETTER_AUTH_SECRET`, `S3_SECRET_KEY`, and OAuth credentials are never inherited by the subprocess
0 commit comments