Layer 5 · self-hosting reality check
What it actually takes to self-host Excalidraw
The docs say Not stated by the vendor. The official image is nginx (stable-alpine-slim) serving static files, which is about as small as a web app gets. In practice you want Negligible on the server: all the drawing happens in each visitor's browser. Here is the honest version — real requirements, real monthly cost, what you will be maintaining, and the one thing that catches people out.
Usually reached from Miro alternatives, where Excalidraw is one of the picks.
Wondering whether you need to at all? Is Miro free? — what the free tier actually allows, and where the wall is.
| RAM — documented minimum | Not stated by the vendor. The official image is nginx (stable-alpine-slim) serving static files, which is about as small as a web app gets |
|---|---|
| RAM — what it really needs | Negligible on the server: all the drawing happens in each visitor's browser |
| CPU | Any. Serving it is nginx handing out static files; only building the image from source needs Node |
| Disk | One small static-site image. Drawings aren't stored on your server at all: they live in each browser's localStorage and IndexedDB until someone exports them. |
| Monthly cost | $0 alongside anything you already host; it's a static site that fits on the smallest VPS |
| Setup time | 10 minutes with the Docker image; days if you want working collaboration |
| How you install it | docker run -p 5000:80 excalidraw/excalidraw:latest (or build it from the repo's Dockerfile) behind any reverse proxy with HTTPS |
| Ongoing maintenance | Pull a new image now and then. There's no database, no accounts and nothing to back up on the server. Remind people to export .excalidraw files, because their only copy lives in their browser. |
| Where it stops scaling | Unlimited viewers for the static app, since it's just files, but there's no shared state: every user's drawings stay in their own browser. |
The thing that catches people out
The self-hosted app is single-player. Excalidraw's own docs say self-hosting 'doesn't support sharing or collaboration features', and the production build still points those buttons at excalidraw.com's own backends (json.excalidraw.com and oss-collab.excalidraw.com), not yours. The share and live-collaboration buttons either fail or depend on the hosted service you were trying to avoid. Treat it as a private sketchpad, or use a community fork that bundles a room server and storage. The official excalidraw-room repo was last updated in July 2024.
When not to self-host Excalidraw
Your team needs real-time co-editing on a shared board, which is the Miro use case, and the official self-hosted build doesn't do it. Use excalidraw.com itself, or accept a community fork that you'll be the one maintaining.
Every guide here carries this section. A site that only ever tells you to self-host is selling something — the useful answer is sometimes no.
Other Layer 5 self-hosting guides
- Self-hosting LibreOffice2 GB with a large spreadsheet open
- Self-hosting ONLYOFFICE6 GB for the Document Server with a handful of concurrent editors
- Self-hosting Collabora Online4 GB, and roughly 1 GB per 20 concurrent documents
- Self-hosting CryptPad2 GB for a small instance
- Self-hosting Mattermost4 GB for a team of 50 with PostgreSQL on the same box
- Self-hosting Rocket.Chat6 GB with MongoDB on the same machine
Common questions
- How much RAM does Excalidraw actually need?
- Negligible on the server: all the drawing happens in each visitor's browser in practice. The documented minimum is Not stated by the vendor. The official image is nginx (stable-alpine-slim) serving static files, which is about as small as a web app gets, which is the figure at which the process starts rather than the figure at which it works under real use. Any. Serving it is nginx handing out static files; only building the image from source needs Node alongside it.
- What does self-hosting Excalidraw cost per month?
- $0 alongside anything you already host; it's a static site that fits on the smallest VPS This is commodity VPS pricing and excludes your time, which is the larger cost for most people — budget for pull a new image now and then. There's no database, no accounts and nothing to back up on the server. Remind people to export .excalidraw files, because their only copy lives in their browser.
- How long does it take to set up Excalidraw?
- 10 minutes with the Docker image; days if you want working collaboration, via docker run -p 5000:80 excalidraw/excalidraw:latest (or build it from the repo's Dockerfile) behind any reverse proxy with HTTPS.
- When should I NOT self-host Excalidraw?
- Your team needs real-time co-editing on a shared board, which is the Miro use case, and the official self-hosted build doesn't do it. Use excalidraw.com itself, or accept a community fork that you'll be the one maintaining.
- What is the most common mistake when self-hosting Excalidraw?
- The self-hosted app is single-player. Excalidraw's own docs say self-hosting 'doesn't support sharing or collaboration features', and the production build still points those buttons at excalidraw.com's own backends (json.excalidraw.com and oss-collab.excalidraw.com), not yours. The share and live-collaboration buttons either fail or depend on the hosted service you were trying to avoid. Treat it as a private sketchpad, or use a community fork that bundles a room server and storage. The official excalidraw-room repo was last updated in July 2024.