add K8S note in README, fix broken e2e

This commit is contained in:
Zimeng Xiong
2026-01-14 08:57:04 -08:00
parent e4e48b13d8
commit cae8f3cbf6
4 changed files with 29 additions and 3 deletions
+20
View File
@@ -22,6 +22,8 @@ A self-hosted dashboard and organizer for [Excalidraw](https://github.com/excali
- [Installation](#installation) - [Installation](#installation)
- [Docker Hub (Recommended)](#dockerhub-recommended) - [Docker Hub (Recommended)](#dockerhub-recommended)
- [Docker Build](#docker-build) - [Docker Build](#docker-build)
- [Reverse Proxy / Traefik Setups](#reverse-proxy--traefik-setups-docker)
- [Multi-Container / Kubernetes Deployments](#multi-container--kubernetes-deployments)
- [Development](#development) - [Development](#development)
- [Clone the Repository](#clone-the-repository) - [Clone the Repository](#clone-the-repository)
- [Frontend](#frontend) - [Frontend](#frontend)
@@ -134,6 +136,24 @@ frontend:
- BACKEND_URL=excalidash-backend.default.svc.cluster.local:8000 - BACKEND_URL=excalidash-backend.default.svc.cluster.local:8000
``` ```
### Multi-Container / Kubernetes Deployments
When running multiple backend replicas (e.g., Kubernetes, Docker Swarm, or load-balanced containers), you **must** set the `CSRF_SECRET` environment variable to the same value across all instances.
```bash
# Generate a secure secret
openssl rand -base64 32
```
```yaml
# docker-compose.yml or k8s deployment
backend:
environment:
- CSRF_SECRET=your-generated-secret-here
```
Without this, each container generates its own ephemeral CSRF secret, causing token validation failures when requests are routed to different replicas. Single-container deployments work without this setting.
# Development # Development
## Clone the Repository ## Clone the Repository
+1 -1
View File
@@ -83,7 +83,7 @@ export default defineConfig({
], ],
// Run local dev servers before tests (skip if NO_SERVER or CI) // Run local dev servers before tests (skip if NO_SERVER or CI)
webServer: (process.env.CI || process.env.NO_SERVER) ? undefined : [ webServer: (process.env.CI || process.env.NO_SERVER === "true") ? undefined : [
{ {
command: "cd ../backend && npm run dev", command: "cd ../backend && npm run dev",
url: `${BACKEND_URL}/health`, url: `${BACKEND_URL}/health`,
+2 -2
View File
@@ -1,12 +1,12 @@
{ {
"name": "frontend", "name": "frontend",
"version": "0.1.7", "version": "0.1.8",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "frontend", "name": "frontend",
"version": "0.1.7", "version": "0.1.8",
"dependencies": { "dependencies": {
"@dnd-kit/core": "^6.3.1", "@dnd-kit/core": "^6.3.1",
"@dnd-kit/utilities": "^3.2.2", "@dnd-kit/utilities": "^3.2.2",
+6
View File
@@ -0,0 +1,6 @@
{
"name": "ExcaliDash",
"lockfileVersion": 3,
"requires": true,
"packages": {}
}