Analytics cookies only (Google Analytics, PostHog). No ad networks, no cross-site tracking. See our privacy policy.
WB
Self-host WBO
updated Oct 2026deployed by usprices checked · Jul 2026Install verified on Ubuntu 26.04 · Oct 2026 · how we test
We earn commissions when you shop through the links below. Full disclosure →
A free, open-source online collaborative whiteboard: draw, write and add shapes on a board that everyone with the link sees update in real time. No accounts; the server saves each board as an SVG file. Node.js with no database.
Runs on a VPS from $4/mo (Kamatera 1GB, 1 GB RAM) · prices checked Sep 2026
Our recommendation
Pick WBO when you want a whiteboard that needs no accounts: many people draw on one large board at once, everyone sees edits in real time, and the server saves each board as an SVG file. It suits teaching, sketching and collaborative diagrams, it is AGPL-3.0 Node.js with no database, and the project runs a public instance at wbo.ophir.dev to try first. Our snippet is the README's Docker setup as a Compose file with the image pinned to a release tag and the boards in a folder you own. We did not find an upstream RAM minimum, so our 128 MB floor is an estimate. The catalog's Excalidraw is the hand-drawn-style alternative, but its official self-host image serves the client only, without sharing or live collaboration; draw.io is the structured-diagram option.
What you need
Any VPS with at least 128 MB of RAM
A domain you control — most self-hosted setups need HTTPS in front of them
WBO's README flags these before you share a board:
non-negotiableBoards are addressed by name in the URL, and without JWT authentication any visitor can edit a writable board and view a read-only one; clearing and moderation are not available to the public. To require sign-in, set AUTH_SECRET_KEY and pass a signed JWT in the token query parameter; its roles (editor:<board>, moderator:<board>, reader:<board>) decide who can do what. WBO_BOARD_MODERATORS grants moderator access without JWT.
non-negotiableAs of the pinned v2.18.25 (the README at that tag; the Docker Hub description still describes older JSON board files), boards are saved in /opt/app/server-data (WBO_HISTORY_DIR), which the container expects to be owned by user 1000: our snippet creates wbo-boards and runs chown as the README does. To make a board read-only you stop the server, set data-wbo-readonly="true" on the root <svg> of its file and restart.
non-negotiableBehind a reverse proxy or CDN, set WBO_IP_SOURCE explicitly (for example X-Forwarded-For); the image does not force one and the default is remoteAddress. To serve it under a sub-path such as /wbo, set WBO_BASE_PATH and follow the project's wiki guide for proxies.
non-negotiablePort 5001 is plain HTTP, so put a TLS reverse proxy in front. The README's examples use lovasoa/wbo:latest; the Docker Hub listing also has a tag per release, and we pin v2.18.25.