Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork463
Online collaborative Whiteboard that is simple, free, easy to use and to deploy
License
lovasoa/whitebophir
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
WBO is an online collaborative whiteboard that allows many users to draw simultaneously on a large virtual board.The board is updated in real time for all connected users, and its state is always persisted. It can be used for many different purposes, including art, entertainment, design, teaching.
A demonstration server is available atwbo.ophir.dev
Theanonymous board | ![]() | collaborative diagram editing | ![]() |
teaching math onWBO | ![]() | drawing art | ![]() |
If you have your own web server, and want to run a private instance of WBO on it, you can. It should be very easy to get it running on your own server.
If you use thedocker containerization service, you can easily run WBO as a container.An official docker image for WBO is hosted on dockerhub aslovasoa/wbo
:.
You can run the following bash command to launch WBO on port 5001, while persisting the boards outside of docker:
mkdir wbo-boards# Create a directory that will contain your whiteboardschown -R 1000:1000 wbo-boards# Make this directory accessible to WBOdocker run -it --publish 5001:80 --volume"$(pwd)/wbo-boards:/opt/app/server-data" lovasoa/wbo:latest# run wbo
You can then access WBO athttp://localhost:5001
.
Alternatively, you can run the code withnode.js directly, without docker.
First, download the sources:
git clone https://github.com/lovasoa/whitebophir.gitcd whitebophir
Theninstall node.js (v10.0 or superior)if you don't have it already, then install WBO's dependencies:
npm install --production
Finally, you can start the server:
PORT=5001 npm start
This will run WBO directly on your machine, on port 5001, without any isolation from the other services. You can also use an invokation like
PORT=5001 HOST=127.0.0.1 npm start
to make whitebophir only listen on the loopback device. This is useful if you want to put whitebophir behind a reverse proxy.
By default, WBO launches its own web server and serves all of its content at the root of the server (on/
).If you want to make the server accessible with a different path likehttps://your.domain.com/wbo/
you have to setup a reverse proxy.See instructions on our Wiki abouthow to setup a reverse proxy for WBO.
WBO is available in multiple languages. The translations are stored inserver/translations.json
.If you feel like contributing to this collaborative project, you cantranslate WBO into your own language.
WBO supports authentication usingJson Web Tokens. This should be passed in as a query with the keytoken
, eg,http://myboard.com/boards/test?token={token}
TheAUTH_SECRET_KEY
variable inconfiguration.js
should be filled with the secret key for the JWT.
Within the payload, you can declare the user's roles as an array.Currently the only accepted roles aremoderator
andeditor
.
moderator
will give the user an additional tool to wipe all data from the board. To declare this role, see the example below.editor
will give the user the ability to edit the board. This is the default role for all users.
{"iat":1516239022,"exp":1516298489,"roles": ["moderator"]}
Moderators have access to the Clear tool, which will wipe all content from the board.
WBO supports verification of the board with a JWT.
To check for a valid board name just add the board name to the role with a ":". With this you can set a moderator for a specific board.
{"roles": ["moderator:<boardName1>","moderator:<boardName2>","editor:<boardName3>","editor:<boardName4>" ]}
eg,http://myboard.com/boards/mySecretBoardName?token={token}
{"iat":1516239022,"exp":1516298489,"roles": ["moderator:mySecretBoardName"]}
You can now be sure that only users who have the correct token have access to the board with the specific name.
When you start a WBO server, it loads its configuration from several environment variables.You can see a list of these variables inconfiguration.js
.Some important environment variables are :
WBO_HISTORY_DIR
: configures the directory where the boards are saved. Defaults to./server-data/
.WBO_MAX_EMIT_COUNT
: the maximum number of messages that a client can send per unit of time. Increase this value if you want smoother drawings, at the expense of being susceptible to denial of service attacks if your server does not have enough processing power. By default, the units of this quantity are messages per 4 seconds, and the default value is192
.AUTH_SECRET_KEY
: If you would like to authenticate your boards using jwt, this declares the secret key.
If you experience an issue or want to propose a new feature in WBO, pleaseopen a github issue.
If you are self-hosting a WBO instance, you may want to monitor its load,the number of connected users, and various other metrics.
You can start WBO with theSTATSD_URL
environment variable to send it to a statsd-compatiblemetrics collection agent.
Example:docker run -e STATSD_URL=udp://127.0.0.1:8125 lovasoa/wbo
.
- If you useprometheus, you can collect the metrics withstatsd-exporter.
- If you usedatadog, you can collect the metrics withdogstatsd.
To download a preview of a board in SVG format you can got to/preview/{boardName}
, e.g. changehttps://wbo.ophir.dev/board/anonymous tohttps://wbo.ophir.dev/preview/anonymous. The renderer is not 100% faithful, but it's often good enough.
About
Online collaborative Whiteboard that is simple, free, easy to use and to deploy
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.
Packages0
Uh oh!
There was an error while loading.Please reload this page.