
Should I self-host Miro?
Excalidraw covers the sketching that most Miro seats actually do, in one tiny container. Worth it if solo or link-sharing files; live multi-cursor rooms need the extra room server and that's where the weekend goes.
The math (nothing hidden, including your time)
| Miro (Starter, per seat) | $8.00/mo |
| VPS share + storage | −$0.30/mo |
| Your maintenance: 5 min/mo at $20/h | −$1.67/mo |
| Net saving | $6.03/mo |
| Setup: 20 min measured (one-time) | $6.67 |
| Break-even | 1.1 months |
| Markup Index (price ÷ real self-host cost) | 4.1× |
Price: source, checked 2026-08-05. Inputs are stored in git; every number above is derived, never hand-written.
What you lose
- Persistent boards with access control — vanilla Excalidraw saves .excalidraw files, not a board library
- Miro's template/facilitation ecosystem
What you're paying Miro for
- whiteboard sketching
- diagrams
- real-time multi-user boards
- board library/templates

Ranked alternatives
A hand-drawn-style whiteboard that runs as one static container and keeps every drawing in the browser that drew it.
Hardware
Runs comfortably on Raspberry Pi.
The tested compose file (our evidence, CI-booted)
# Excalidraw — the whiteboard (tested against Miro's job list). This runs the drawing app;
# real-time rooms and persistence need excalidraw-room + a storage backend, which is where
# the KINDA comes from.
services:
excalidraw:
image: excalidraw/excalidraw:latest
container_name: excalidraw
restart: unless-stopped
ports:
- "8087:80"
healthcheck:
test: ["CMD-SHELL", "curl -sf http://localhost:80 >/dev/null || exit 1"]
interval: 5s
timeout: 5s
retries: 24
start_period: 15s
Want a guided install instead? caniselfhostit.com/miro has AI-agent prompts that assume a bare machine — that's their half of the stool, and it's good.
Verification
Protocol v1 · verified by zernonia on 2026-08-10 · setup measured at 20 min · AI assistant: claude-code (allowed & stated)
What broke
- None for the drawing app; know that collab rooms are a second project (excalidraw-room + storage)
Full timed log
# Timed setup log: Miro → excalidraw **Protocol:** v1 · **Verified by:** zernonia · **Date:** 2026-08-10 **Assistant:** claude-code · **Environment:** containerized runner, 2 vCPU class, Docker 29.3 / Compose v5.1 ## Timeline | Step | Time | |---|---| | Read upstream docs, draft compose with healthcheck | ~6 min | | **Boot: all services healthy in 12 s (measured, `compose up --wait`)** | — | | Endpoint-level workflow check (login/health/API serve) + re-run from clean volumes | ~6 min | | **Total: ~20 min** | | Boot and endpoint checks are machine-verified; `setup_min` is the wall-clock total for this session including authoring, diagnosis and re-runs. Endpoint-level ≠ full human UI workflow — dispute anything that doesn't reproduce (CONTRIBUTING.md). ## What broke - None for the drawing app; know that collab rooms are a second project (excalidraw-room + storage) ## Verdict-relevant notes - Fastest boot in the index.
Verdict history
- 2026-08-10: unscored → KINDA — Initial verdict: Excalidraw covers the sketching that most Miro seats actually do, in one tiny container. Worth it if solo or link-sharing files; live multi-cursor rooms need the extra room server and that's where the weekend goes.