Deploy Excalidraw | (Just Updated) Whiteboard Whose Collab Server Is Actually Used
Whiteboard whose live collaboration runs on your server, not Excalidraw's
excalidraw
Just deployed
excalidraw-room
Just deployed
Deploy and Host Excalidraw on Railway
Excalidraw is the open-source virtual whiteboard: hand-drawn-style diagrams, wireframes and sketches in the browser, with shapes, arrows, freehand drawing, images, libraries and real-time collaboration. There is no account, no tracking and no paywall — the whole editor is a static app you can host on your own domain.
This template deploys Excalidraw with the collaboration server it actually uses. Excalidraw's
frontend is a Vite build, so the collaboration server address is substituted into the JavaScript
bundle at build time — an environment variable set on the running container changes nothing.
Templates that deploy the editor next to an excalidraw-room service and wire them with a
variable therefore ship a bundle that still talks to Excalidraw's own public server at
oss-collab.excalidraw.com, while the deployer pays for a room service that receives no traffic.
This template rewrites the built bundle at boot, verifies the rewrite, and refuses to start if a
single reference to the public server survives.
About Hosting Excalidraw
Two services deploy together. The editor is a small nginx image serving the prebuilt Excalidraw
app; its entrypoint restores a pristine copy of the bundle on every boot, rewrites the baked
collaboration URL to this deployment's own room service, and rewrites nginx's listener to the
port the platform injects. The room service is excalidraw-room, the official Socket.IO relay
that forwards end-to-end-encrypted scene updates between the people in a session.
Neither service needs a database or a volume: Excalidraw keeps your scene in the browser's own local storage, and the room server only relays encrypted messages it cannot read. Both images are pinned by digest rather than tracking a moving tag, so a redeploy gives you the build you tested.
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.
Excalidraw in particular benefits: both services get generated HTTPS domains automatically, and each references the other's domain through the platform's own variables, so the editor and its collaboration relay find each other with nothing to configure by hand. Websockets are supported at the edge, which is what real-time collaboration needs.
Common Use Cases
- A private whiteboard for architecture diagrams and system sketches on your own domain.
- Real-time collaborative drawing for a team, with the session relayed by your own server.
- Workshops, interviews and design reviews where a third-party whiteboard is not acceptable.
- Embedding a self-hosted diagram editor beside your internal tools.
Dependencies for Excalidraw
excalidraw-room, the official Socket.IO collaboration relay, deployed by this template.- No database, no object storage and no volume — scenes live in the browser.
Deployment Dependencies
- Excalidraw source and documentation: https://github.com/excalidraw/excalidraw
- Collaboration server: https://github.com/excalidraw/excalidraw-room
- Wrapper image built for this template: https://github.com/bon5co/excalidraw-railway
After deploying
Open the editor's generated domain, draw something, then press Live collaboration and share
the link. Everyone who opens it joins a session relayed by your own excalidraw-room service —
the scene is encrypted in the browser, so the server never sees the drawing.
Two upstream limits are worth knowing, and they apply to every self-hosted Excalidraw: saving a
collaborative scene to the cloud uses Excalidraw's Firebase project, and Export to link uploads
to json.excalidraw.com. Local files, images and browser storage are entirely yours.
Template Content
excalidraw-room
excalidraw/excalidraw-room