Video tutorial coming soon.
Deploy Excalidraw on Ubuntu — a self-hosted collaborative whiteboard for hand-drawn style diagrams, brainstorming, and real-time team collaboration in end-to-end encrypted rooms.
Grab the automated bash script from GitHub to follow along with the video.
wget https://raw.githubusercontent.com/mhmdali94/Docker/main/tools/excalidraw/excalidraw-ubuntu.sh
chmod +x excalidraw-ubuntu.sh
sudo bash excalidraw-ubuntu.sh
wget https://raw.githubusercontent.com/mhmdali94/Docker/main/tools/excalidraw/excalidraw-ubuntu.sh
chmod +x excalidraw-ubuntu.sh
Script deploys the Excalidraw frontend with the excalidraw-room real-time collaboration server via Docker Compose.
sudo bash excalidraw-ubuntu.sh
Open your browser and navigate to your server IP. You can start drawing immediately — no login required.
http://<your-server-ip>
Click the collaboration icon (people icon in the toolbar) and share the generated room URL with teammates. Collaboration is end-to-end encrypted.
| Port | Purpose |
|---|---|
| 80 | Web UI |
| 80 | Room server (proxied) |
Excalidraw is a virtual whiteboard with a unique hand-drawn aesthetic — every shape, line, and text looks like it was sketched with a pen. It is beloved by engineers for system architecture diagrams, product teams for wireframes, and educators for visual explanations. The self-hosted version gives you the full collaborative experience (real-time multi-user rooms) on your own server. Rooms are end-to-end encrypted — even the server cannot read your diagrams. Excalidraw also has a VS Code extension, an npm library for embedding, and supports Excalidraw+ libraries of reusable diagram components.
Design tools like Miro, FigJam, and Lucidchart are expensive and store your architectural diagrams on third-party servers. Excalidraw is free, self-hosted, and delivers the same real-time collaboration with a much simpler interface. The hand-drawn style is intentionally rough — it signals 'this is a sketch, not a final design', which reduces cognitive overhead in early-stage design discussions. Engineers often prefer Excalidraw over formal UML tools because sketching is faster than clicking through property panels.
Excalidraw serves the frontend on port 80 (or 443 via HTTPS proxy). The collaboration room server runs on a separate port (typically 80 proxied, configured in docker-compose). Both should be served through your reverse proxy — do not expose the internal container ports directly. Only ports 80 and 443 need to be public-facing.
Draw.io (diagrams.net) is the most feature-complete free diagramming tool — more formal shapes, UML, ER diagrams, and flowcharts. Miro and FigJam are cloud-native with better organization features for large persistent boards but cost money. Mermaid is a code-first approach that generates diagrams from text — great for embedding in Markdown docs but not interactive. Tldraw is a newer Excalidraw alternative with slightly different aesthetics. For pure whiteboarding without diagramming, Witeboard is even simpler.
Skip Excalidraw if you need formal diagrams with strict UML notation, ER diagram support, or flowchart logic gates — use Draw.io instead. If you need a persistent, organized team whiteboard where work is saved automatically on the server and accessible across sessions, Excalidraw's localStorage-only storage model is a poor fit. For teams that need version history, permissions, and a structured file system of diagrams, a tool like Miro or Confluence's diagram features is more appropriate.
PrismaTechWork provides end-to-end infrastructure services — from initial deployment and security hardening to ongoing monitoring, automated backups, and dedicated support. Whether you need a single-server setup or a multi-site network, our team ensures your infrastructure is built right, secured properly, and maintained reliably.
Yes — collaboration rooms use end-to-end encryption. When you create a room, a random encryption key is generated in your browser and embedded in the room URL fragment (the part after #). This key is never sent to the server — only your browser and the browsers of people you share the link with know it. The room server only sees encrypted binary data and relays it between participants. Even the self-hosted server admin cannot read room contents.
Excalidraw auto-saves to your browser's localStorage, so diagrams persist between browser sessions on the same device. For permanent storage, export the diagram: Menu → Save to disk saves a `.excalidraw` file you can reload later. Menu → Export image saves PNG or SVG for sharing in docs. For team-wide persistent storage, save `.excalidraw` files in a shared folder, Gitea repo, or attach them to wiki pages in BookStack or Docmost.
Yes — Excalidraw is a React component published on npm as `@excalidraw/excalidraw`. You can embed it in any React application with a few lines of code. It supports controlled mode (you manage the diagram state), read-only mode for displaying diagrams, and custom UI overlays. The VS Code extension uses this approach — it embeds Excalidraw as a custom editor panel for `.excalidraw` files.
Click the grid/library icon on the left toolbar to open the Libraries panel. Click 'Browse libraries' to open the community library repository. There you will find curated packs for AWS architecture, GCP, Azure, Kubernetes, network topology, UI wireframes, and more. Click 'Add to library' and the shapes appear in your panel for drag-and-drop use. Libraries are stored in your browser — you may need to re-add them on different devices.
Yes — once loaded, the Excalidraw frontend works as a PWA (Progressive Web App) and can function offline for solo drawing. Collaboration requires the room server to be reachable. The VS Code extension works fully offline since it runs the Excalidraw component locally within VS Code. For offline team use, ensure the self-hosted server is reachable on your local network.
Yes — Menu → Export image → SVG exports a clean vector SVG. The SVG retains the hand-drawn style and is suitable for embedding in HTML documentation, Notion pages, Confluence, or anywhere that renders SVG. The exported SVG also contains the raw Excalidraw scene data as an embedded attribute, so you can drag the SVG back into Excalidraw to continue editing it.
There is no hard limit enforced by the software — rooms can technically support many simultaneous users. In practice, performance degrades with many active cursors on a large canvas. For workshops with 20+ participants, designate a facilitator to draw while others observe. The self-hosted room server is a lightweight Node.js WebSocket server, so it scales reasonably on a small VPS for typical team sizes (2–20 users).
Run `docker compose pull && docker compose up -d` in your Excalidraw directory. Since Excalidraw does not store server-side data, updates are safe — there is nothing to migrate. Check the Excalidraw GitHub releases page before updating to see if there are breaking changes to the room server protocol. If you have pinned a specific version in your `docker-compose.yml`, update the image tag to the new version first.