Whiteboards with shapes, sticky notes, text, images and icons. Deployable as a simple docker container in your homelab. Includes support for multiple boards and import/export of individual boards.
Currently does not support:
The recommended way to self-host is using Docker. You can use the provided docker-compose.yml file to get started quickly.
services:
whiteboard:
image: ghcr.io/kellojo/whiteboard:latest
container_name: whiteboard
restart: unless-stopped
ports:
- "3000:3000"
environment:
- BETTER_AUTH_SECRET=replace-with-a-long-random-secret
- BETTER_AUTH_URL=http://localhost:3000
- AUTH_ENABLE_EMAIL_PASSWORD=true
volumes:
- ./whiteboards:/app/.whiteboards
You can generate a secret with:
npx auth secret
In production, always set a strong
BETTER_AUTH_SECRETand use HTTPS forBETTER_AUTH_URL.
On first startup, auth tables are created automatically in .whiteboards/auth.sqlite.
Configure one or more OIDC providers via OIDC_PROVIDERS_JSON.
OIDC_PROVIDERS_JSON=[{"providerId":"keycloak","name":"Keycloak","discoveryUrl":"https://id.example.com/realms/main/.well-known/openid-configuration","clientId":"whiteboard","clientSecret":"replace-me","scopes":["openid","profile","email"]}]
After setting this, users can sign in with those providers on the /auth/login and /auth/signup pages.
Set AUTH_ENABLE_EMAIL_PASSWORD=false to disable email/password login and signup forms.
OIDC provider sign-in remains available when configured.
Contributions are very welcome! If you want to contribute, please open an issue or a pull request.
Things that would be nice to have:
Once you've created a project and installed dependencies with npm install (or pnpm install or yarn), start a development server:
npm run dev
To create a production version of your app:
npm run build