🎬

Video tutorial coming soon.

✏️ Deploy Excalidraw — Self-Hosted Collaborative Whiteboard

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.

⚠️ This script is provided for demo and testing purposes only. Not intended for production use.

📦 Resources & Setup Scripts

Grab the automated bash script from GitHub to follow along with the video.

Automated install — one command deploys the Excalidraw frontend and collaboration room server.
View on GitHub

Quick Install:

wget https://raw.githubusercontent.com/mhmdali94/Docker/main/tools/excalidraw/excalidraw-ubuntu.sh
chmod +x excalidraw-ubuntu.sh
sudo bash excalidraw-ubuntu.sh

Tutorial Steps

1 Download the Script

wget https://raw.githubusercontent.com/mhmdali94/Docker/main/tools/excalidraw/excalidraw-ubuntu.sh

2 Make it Executable

chmod +x excalidraw-ubuntu.sh

3 Run the Installer

Script deploys the Excalidraw frontend with the excalidraw-room real-time collaboration server via Docker Compose.

sudo bash excalidraw-ubuntu.sh

4 Access the Web UI

Open your browser and navigate to your server IP. You can start drawing immediately — no login required.

http://<your-server-ip>

5 Share a Collaboration Room

Click the collaboration icon (people icon in the toolbar) and share the generated room URL with teammates. Collaboration is end-to-end encrypted.

Ports Used

PortPurpose
80Web UI
80Room server (proxied)

Overview

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.

Why Use It

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.

When You Need It

    Who Should Use It

      Real Use Cases

        Main Features

          How to Use After Installation

            Security Best Practices

              Ports and Firewall Notes

              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.

              Backup and Maintenance

                Common Mistakes

                  Troubleshooting

                    Alternatives

                    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.

                    When Not to Use It

                    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 Professional Help

                    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.

                      Contact Us

                      Frequently Asked Questions

                      Are collaboration rooms private? Can the server see my diagrams?

                      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.

                      How do I save a diagram permanently?

                      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.

                      Can I embed Excalidraw in my own application?

                      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.

                      How do I use shape libraries for architecture diagrams?

                      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.

                      Can I use Excalidraw offline?

                      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.

                      Does Excalidraw support exporting to SVG for use in documentation?

                      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.

                      How many people can collaborate in one room?

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

                      How do I update Excalidraw?

                      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.