excalidraw-collaboration icon indicating copy to clipboard operation
excalidraw-collaboration copied to clipboard

excalidraw with collaboration feature, self-hosting, and only one-click deploy

excalidraw-collaboration

Demo:

demo on Railway

One click to deploy your excalidraw with collaboration.

Deploy on Railway

Snapshot:

snapshot

Related docs:

Deploy

Clone, and run:

git clone [email protected]:alswl/excalidraw-collaboration.git
cd excalidraw-collaboration

docker-compose up # run the containers

open "http://localhost" # open browser, and you can using the collbration functions

Browse it:

  • open http://127.0.0.1/ ,and you will see the excalidraw page
  • Click the Live Collaboration button, and you will see the collaboration page
  • Now you can share the collaboration page with your friends, and you can draw together.

About public network release:

if you want to release your own excalidraw in public network, you should modify the docker-compose.yaml file, Replace the VITE_APP_HTTP_STORAGE_BACKEND_URL and VITE_APP_WS_SERVER_URL with your own domain.

Roadmap

  • [x] self-host
  • [x] collaboration feature works
  • [x] docker-compose support
  • [x] no pre-build image, dynamic env
  • [x] upload Docker Hub image
  • [ ] S3 storage support
  • [ ] SSO support
  • [x] HTTPS Demo and
  • [x] HTTPS docs
  • [ ] Helm support
  • [x] online demo
  • [x] one click to deploy Railway

Upgrade Guide

  • v0.15.0 -> v0.16.1
    • replace REACT_APP_ env with VITE_APP_

Q & A

How to deploy on the cloud(aws etc)

The docker-compose.yaml file is for local deploy, if you want to deploy on the cloud, you should prepare 2 Load Balancer(with HTTPS cert), one for websocket server, one for storage server.

The VITE_APP_HTTP_STORAGE_BACKEND_URL is for the Load Balancer URL(HTTPS) for storage, and the VITE_APP_WS_SERVER_URL is for the Load Balancer URL(HTTPS) for websocket.

Here is a conversation about how to deploy on the aws: https://github.com/alswl/excalidraw-collaboration/issues/22

generateKey problem

Error message:

TypeError: Cannot read properties of undefined (reading 'generateKey')

Why: The excalidraw is using crypto module of Javascript, the HTTPS is required.

How to solve: use HTTPS to access the page, or use http://localhost instead.