Self-hosted Excalidraw with a gallery, collections, and real-time collaboration. Runs onDocumentation Index
Fetch the complete documentation index at: https://docs.augustin.ai/llms.txt
Use this file to discover all available pages before exploring further.
debian-1, deployed as two swarm services that share a bind mount.
- Web: excalideck.augustin.ai
- Collab WS: excalideck-collab.augustin.ai (browser-only; the web app sends the URL to clients)
Architecture
excalideck-web— SvelteKit app, SQLite metadata,.excalidrawJSON + SVG thumbnails on diskexcalideck-collab— plain Node WebSocket server speaking the Yjs sync/awareness protocol, one room per diagram, flushes to disk every 10s and on shutdown- Shared state:
apps/excalideck/data/bind mount holdsexcalideck.db,diagrams/,thumbnails/ - Auth: single-user, session cookies, scrypt passwords, rate-limited
- Collab auth: web mints short-lived HMAC-signed tokens scoped to (userId, diagramId); collab verifies with the shared
COLLAB_SECRET— no DB access needed
Secrets
COLLAB_SECRET in apps/excalideck/.env. Rotating it invalidates in-flight collab sessions but does not log users out. Generate with openssl rand -base64 48; must be identical on both services (env_file: .env on both handles this).
Password reset
Upgrades
Images are built from amarcin/excalideck and pushed to the local registry. Seeapps/excalideck/AGENTS.md for the full build + redeploy recipe. Migrations run automatically on web boot.