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
- Forced password change on first login with default credentials
109
+
- Login rate limiting (5 attempts per 5 minutes)
110
+
- Helmet security headers with Content Security Policy
111
+
- One-time tokens for SSE/download URLs (no JWT in query strings)
112
+
- Session-bound token storage (`sessionStorage`, cleared on tab close)
113
+
- CORS restricted to configured origin (same-origin by default)
107
114
- Protected API routes and frontend routing
108
115
- Auto-redirect to login page on session expiry
109
116
@@ -163,9 +170,11 @@ All configuration is managed via a single `.env` file in the project root:
163
170
| --- | --- | --- |
164
171
|`PORT`|`3001`| Server port |
165
172
|`AUTH_USERNAME`|`admin`| Login username |
166
-
|`AUTH_PASSWORD`|`changeme`| Login password |
167
-
|`JWT_SECRET`|`your-secret-key-here`| JWT signing secret (change before deploying) |
173
+
|`AUTH_PASSWORD`|`changeme`| Login password (must change on first login) |
174
+
|`JWT_SECRET`|auto-generated| JWT signing secret (leave empty to auto-generate) |
168
175
|`JWT_EXPIRES_IN`|`24h`| JWT token expiry |
176
+
|`ENCRYPTION_SECRET`| auto-generated | API key encryption secret (leave empty to auto-generate) |
177
+
|`CORS_ORIGIN`| same-origin only | Allowed CORS origin (e.g. `https://your-domain.com`) |
169
178
170
179
### Connect Real Providers
171
180
@@ -210,7 +219,7 @@ All configuration is managed via a single `.env` file in the project root:
210
219
└─────────────────────────┘
211
220
```
212
221
213
-
The entire stack runs as a **single Node.js process** — no Redis, no Postgres, no external dependencies. The frontend is built by Vite and served as static files by Express. SQLite stores all benchmarks, workflows, monitor history, and provider config in one file, making backup and migration trivial.
222
+
The entire stack runs as a **single Node.js process** — no Redis, no Postgres, no external dependencies. The frontend is built by Vite and served as static files by Express. SQLite (WAL mode) stores all benchmarks, workflows, monitor history, and provider config in one file, making backup and migration trivial.
0 commit comments