---
title: "Deploy Excalidraw | (Just Updated) Whiteboard Whose Collab Server Is Actually Used"
description: "Whiteboard whose live collaboration runs on your server, not Excalidraw's"
category: "Other"
url: https://railway.com/deploy/excalidraw-or-just-updated-whiteboard-wh
---

# Deploy Excalidraw | (Just Updated) Whiteboard Whose Collab Server Is Actually Used

Whiteboard whose live collaboration runs on your server, not Excalidraw's

**[Deploy Excalidraw | (Just Updated) Whiteboard Whose Collab Server Is Actually Used on Railway](https://railway.com/template/excalidraw-or-just-updated-whiteboard-wh)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/excalidraw-or-just-updated-whiteboard-wh/manifest.json

- **Creator:** SuperSlowSloth
- **Category:** Other

## Template content

### excalidraw

- **Image:** ghcr.io/bon5co/excalidraw-railway:2026.08.18
- **Health check:** /
- **Public domain:** Yes

### excalidraw-room

- **Image:** excalidraw/excalidraw-room@sha256:2fe999f9be4379e3ee282fc45d75d84a691a6383dde33544514cc395287c7a70
- **Health check:** /
- **Public domain:** Yes

## Documentation

# 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.


## Similar templates

- [Rocky Linux](https://railway.com/deploy/rocky-linux) — Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀
- [Foundry Virtual Tabletop](https://railway.com/deploy/X5tR6G) — A Self-Hosted & Modern Roleplaying Platform
- [Letta Code Remote](https://railway.com/deploy/letta-code-remote) — Run a Letta Code agent 24/7. No inbound ports, just deploy.

Open this page in a browser: https://railway.com/deploy/excalidraw-or-just-updated-whiteboard-wh
