一个自主托管的 Excalidraw 控制面板和组织器,支持多用户协作和范围共享。
A self-hosted dashboard and organizer for Excalidraw with live collaboration features.
Automatically retain recent drawing snapshots, preview past versions from the editor, and restore a previous state when needed.
(Optional) Multi User Authentication, OIDC SupportSee release notes for a specific release.
ExcaliDash includes an in-app update notifier that checks GitHub Releases. If your deployment must not make outbound network calls, disable it on the backend:
UPDATE_CHECK_OUTBOUND=false
If you deployed using docker-compose.prod.yml (Docker Hub images), upgrade by pulling the latest images and recreating containers:
docker compose -f docker-compose.prod.yml pull && \
docker compose -f docker-compose.prod.yml up -d
If you prefer a clean stop/start (more downtime, but simpler), you can do:
docker compose -f docker-compose.prod.yml down && \
docker compose -f docker-compose.prod.yml pull && \
docker compose -f docker-compose.prod.yml up -d
Notes:
-v to down unless you intend to delete the persistent backend volume (your SQLite DB + secrets).--remove-orphans if you previously ran a different Compose file for the same project name and need to remove old/renamed services.[!CAUTION] This is a BETA deployment and production-readiness depends on deployment controls: use TLS, trusted reverse proxy, fixed secrets, backups, and endpoint rate limits.
[!CAUTION] ExcaliDash is in BETA. Please backup your data regularly.
Prereqs: Docker + Docker Compose v2.
Docker Hub (Recommended)# Download docker-compose.prod.yml
curl -OL https://raw.githubusercontent.com/ZimengXiong/ExcaliDash/main/docker-compose.prod.yml
# Pull images
docker compose -f docker-compose.prod.yml pull
# Run container
docker compose -f docker-compose.prod.yml up -d
# Access the frontend at localhost:6767
For single-container deployments, JWT_SECRET can be omitted and will be auto-generated and persisted in the backend volume on first start. For portability and most production deployments, set a fixed JWT_SECRET explicitly.
By default, the provided Compose files set TRUST_PROXY=false for safer setup. Only set TRUST_PROXY to a positive hop count (for example, 1) when requests always pass through a trusted reverse proxy that correctly sets forwarded headers.
# Clone the repository (recommended)
git clone [email protected]:ZimengXiong/ExcaliDash.git
# or, clone with HTTPS
# git clone https://github.com/ZimengXiong/ExcaliDash.git
docker compose build
docker compose up -d
# Access the frontend at localhost:6767
The root README keeps the install path short. See advanced deployment and operations for reverse proxy, auth/OIDC, database provider, offline, backup, password policy, and operational details.
For the full environment-variable reference, see configuration.
For release-candidate validation across multiple local configurations, see the configuration lab.
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.
# Clone the repository (recommended)
git clone [email protected]:ZimengXiong/ExcaliDash.git
# or, clone with HTTPS
# git clone https://github.com/ZimengXiong/ExcaliDash.git
Frontendcd ExcaliDash/frontend
npm install
# Copy environment file and customize if needed
cp .env.example .env
npm run dev
Backendcd ExcaliDash/backend
npm install
# Copy environment file and customize if needed
cp .env.example .env
# Generate Prisma client and setup database
npx prisma generate
npx prisma db push
npm run dev
Simulate Auth Onboarding (Development)To simulate first-run authentication choice flows in local development:
cd ExcaliDash/backend
# Preview what would change (no data modifications)
npm run dev:simulate-auth-onboarding:dry-run
# Simulate "fresh install" onboarding state
# (wipes drawings/collections/libraries and removes non-bootstrap users)
npm run dev:simulate-auth-onboarding:fresh
# Simulate "migration" onboarding state (ensures legacy data exists)
npm run dev:simulate-auth-onboarding:migration
After running a simulation while the backend is already running, wait about 5 seconds (auth mode cache TTL) or restart the backend before refreshing the UI.
Setup and Operational ScriptsIn backend/package.json there are helper scripts for maintenance:
| Script | Purpose |
|---|---|
admin:recover |
Emergency admin credential recovery/reset. |
Admin recovery example:
cd backend
npm run admin:recover -- --identifier [email protected] --generate --activate --must-reset
Common flags:
| Flag | Description |
|---|---|
--password "<new-password>" |
Set explicit new password. |
--generate |
Generate a secure random password. |
--activate |
Activate the admin account immediately. |
--promote |
Promote user to admin role. |
--must-reset |
Force password reset on first login. |
--disable-login-rate-limit |
Temporarily disable login throttling for this operation. |
If you find ExcaliDash useful, please consider sponsoring
暂无开放 Issues,或尚未同步最近议题。