macrostack

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 minimumNot 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 needsNegligible on the server: all the drawing happens in each visitor's browser
CPUAny. Serving it is nginx handing out static files; only building the image from source needs Node
DiskOne 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 time10 minutes with the Docker image; days if you want working collaboration
How you install itdocker run -p 5000:80 excalidraw/excalidraw:latest (or build it from the repo's Dockerfile) behind any reverse proxy with HTTPS
Ongoing maintenancePull 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 scalingUnlimited 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

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.
The Macrostack brief

New swaps, worth your inbox.

A short, occasional email when we add a high-intent alternative or ship a new head-to-head. No spam, no selling your address — unsubscribe in one click.