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
|`FRONTEND_URL`| Backend allowed origin(s). Must match the public URL users access (for example `https://excalidash.example.com`). Supports comma-separated values for multiple addresses. |
188
-
|`TRUST_PROXY`| Set to `1` when traffic passes through one trusted reverse-proxy hop (for example frontend nginx -> backend) and headers are sanitized. |
189
-
|`BACKEND_URL`| Frontend container-to-backend target used by Nginx. Override when backend host differs from default service DNS/host. |
|`FRONTEND_URL`| Backend allowed origin(s). Must match the public URL users access (for example `https://excalidash.example.com`). Supports comma-separated values for multiple addresses. |
188
+
|`TRUST_PROXY`| Set to `1` when traffic passes through one trusted reverse-proxy hop (for example frontend nginx -> backend) and headers are sanitized. |
189
+
|`BACKEND_URL`| Frontend container-to-backend target used by Nginx. Override when backend host differs from default service DNS/host. |
190
+
|`ENFORCE_HTTPS_REDIRECT`| When `FRONTEND_URL` uses `https://`, the backend automatically redirects plain-HTTP requests to HTTPS. Set to `false` if your outer gateway already enforces HTTPS and you want to disable the built-in redirect (avoids redirect loops when `X-Forwarded-Proto` is not forwarded). Default: `true`. |
190
191
191
192
```yaml
192
193
# docker-compose.yml example
@@ -198,6 +199,9 @@ backend:
198
199
- TRUST_PROXY=1
199
200
# Or multiple URLs (comma-separated) for local + network access
| OIDC-only (`oidc_enforced`) | You typically do not use local bootstrap admin registration; first admin can be created through your IdP depending on config. |
285
307
| Reverse proxy | Set `FRONTEND_URL` and `TRUST_PROXY` correctly or auth + websockets may fail. |
308
+
| ID token algorithm | ExcaliDash defaults to `RS256`. If your IdP client is explicitly configured for another signed ID-token algorithm such as `HS256`, set `OIDC_ID_TOKEN_SIGNED_RESPONSE_ALG` to match that exact client setting. `none` is not allowed, and `HS*` requires `OIDC_CLIENT_SECRET`. |
309
+
| Keycloak issuer format | Use realm issuer URL: `https://<keycloak-host>/realms/<realm>`. |
310
+
| Authentik issuer format | Use provider issuer URL: `https://<authentik-host>/application/o/<provider-slug>/`. |
311
+
| Authentik `email_verified` | If Authentik does not emit `email_verified=true`, either add the scope mapping or set `OIDC_REQUIRE_EMAIL_VERIFIED=false`. |
312
+
| Redirect URI | Must be exact callback: `https://<excalidash-host>/api/auth/oidc/callback`. |
286
313
287
314
</details>
288
315
@@ -336,19 +363,35 @@ docker compose -f docker-compose.oidc.yml down
336
363
337
364
Base values are documented in `backend/.env.example`. Common ones to care about:
| `S3_ENDPOINT` | `http://localhost:8333` | S3-compatible endpoint URL (for example SeaweedFS, MinIO, or cloud S3 endpoint). |
377
+
| `S3_BUCKET` | `excalidash-images-test` | Bucket used for externalized drawing image blobs. |
378
+
| `S3_ACCESS_KEY_ID` / `S3_SECRET_ACCESS_KEY` | _required when enabled_ | Credentials for object storage access. |
379
+
| `S3_FORCE_PATH_STYLE` | `true` | Keep `true` for most self-hosted S3-compatible services (including local SeaweedFS). |
380
+
| `S3_KEY_PREFIX` | `excalidash-images` | Prefix for object keys inside the configured bucket. |
381
+
382
+
When enabling external image storage on an existing instance, run:
383
+
384
+
```bash
385
+
cd backend
386
+
npm run storage:migrate-images
387
+
```
347
388
348
389
</details>
349
390
350
391
# Development
351
392
393
+
For contributor workflow, `make dev` starts the app in local single-user mode so you can reproduce editor bugs without going through login/onboarding. Use `make dev-auth` if you need to test local auth or OIDC flows from your `backend/.env`.
394
+
352
395
<details>
353
396
<summary>Clone the Repository</summary>
354
397
@@ -460,7 +503,7 @@ Common flags:
460
503
</details>
461
504
462
505
# Credits
463
-
506
+
If you find ExcaliDash useful, please consider [sponsoring](https://github.com/sponsors/ZimengXiong)
0 commit comments