Self-hosted Excalidraw board manager
Create and organize your Excalidraw boards on your own hardware.
| Layer | Technology |
|---|---|
| Backend | Node.js + Express.js |
| Frontend | React + Vite + Excalidraw |
| UI | Tailwind CSS |
| Database | SQLite via Drizzle ORM |
| Container | Docker (single container) |
docker run -d \
-p 3000:3000 \
-v ./data:/app/data \
ghcr.io/lukanrocks/excalihome:latestOr with Docker Compose:
docker compose up -dThe app starts on http://localhost:3000. On first run, the database schema is initialized automatically. All data is persisted in the mounted /app/data volume.
# Install all dependencies
pnpm install
# Start backend and web in watch mode
pnpm devThe API server runs on port 3001 and the Vite dev server on port 5173 by default.
The schema lives in apps/backend/src/db/schema.ts. After changing it, generate a migration with:
pnpm db:generatePending migrations are applied automatically when the server starts.
ExcaliHome is released under the MIT License.