Deploy Excalidraw
Persistent collaborative whiteboard with a hand-drawn visual style.
Just deployed
/app/data
Deploy and Host Excalidraw on Railway
Published on the Railway marketplace: https://railway.com/deploy/excalidraw-1
Excalidraw is an open-source virtual whiteboard for sketching diagrams, workflows, and ideas with a hand-drawn visual style. This deployment uses Excalidraw Persist to add server-side SQLite storage, multiple boards, images, libraries, archive handling, and shareable edit or read-only board links.
About Hosting Excalidraw
This Railway deployment runs one pinned Excalidraw Persist container. Nginx serves the browser interface on port 80 and proxies /api to the bundled Node.js server on port 4000. A Railway volume mounted at /app/data retains the SQLite database across restarts and redeployments. No external database, collaboration server, or environment-variable input is required. Version 0.18.0-persist.7 supports shareable edit and read-only board links, but upstream does not provide a separate real-time collaboration service in this image. The application also has no built-in authentication or rate limiting, so exposing it publicly allows anonymous access to its board-management and write APIs.
Common Use Cases
- Sketching architecture, workflows, wireframes, and meeting notes on persistent boards
- Sharing a board through an edit or read-only link
- Hosting a lightweight multi-board visual workspace without an external database
Dependencies for Excalidraw Hosting
- A persistent Railway volume mounted at
/app/datafor the SQLite database - No external database or additional Railway service
Deployment Dependencies
- Excalidraw Persist source and deployment documentation
- Excalidraw Persist v0.18.0-persist.7 source
- Umbrel Excalidraw package
- Excalidraw
Implementation Details
- Image:
ghcr.io/ozencb/excalidraw-persist:0.18.0-persist.7@sha256:8c86a50d299cdcd27e178e80e7567479bf9b6c5eb62d08abbbfcd5ddba60bc26 - Public port:
80 - Health check:
/api/health - Persistent storage:
/app/data(/app/data/database.sqliteinside the container) - Variables: none; the image sets
PORT=4000,NODE_ENV=production, andDB_PATH=/app/data/database.sqlite - Sharing: unguessable share IDs can grant edit or read-only board access; this is not evidence of a dedicated real-time synchronization service
Anonymous-write and acceptable-use warning: The pinned image has no supported authentication variables, access-control middleware, or rate limiter. Its owner-facing board list, create, update, delete, file, library, and share-link endpoints are anonymous, and CORS is unrestricted. A public deployment can be modified, erased, or abused by anyone who reaches its domain, potentially consuming storage or compute. Do not store private or sensitive data, monitor usage, and operate the deployment in accordance with the Railway Acceptable Use Policy. Put an authenticated access proxy in front of the service before relying on access restrictions. This published one-service template intentionally does not claim to provide that protection.
This is a community deployment template and is not affiliated with or endorsed by Excalidraw or the Excalidraw Persist maintainer.
Why Deploy Excalidraw on Railway?
Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.
By deploying Excalidraw on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.
Template Content
