Deployment

Deployment

Pre-built images are available on the Docker Hub.

Excalibee needs nothing but a port. You can verify it starts correctly via the following command:

docker run --rm -p 3000:3000 butterhosting/excalibee

A more realistic setup mounts a persistent volume for /opt/excalibee/data, so the SQLite database holding your drawings survives container restarts:

services:
  excalibee:
    image: butterhosting/excalibee
    restart: unless-stopped
    ports:
      - "3000:3000"
    volumes:
      - ./.htpasswd:/opt/excalibee/.htpasswd:ro
      - excalibee-data:/opt/excalibee/data
    environment:
      EXCALIBEE_TIMEZONE: "Europe/Amsterdam"

volumes:
  excalibee-data:

Environment vars

When starting Excalibee, the following environment variables can be specified.

VariableOptionsDescription
EXCALIBEE_LOGGINGdebug, info, warn, error (default info)Specifies Excalibee's own logging level
EXCALIBEE_TIMEZONEIANA time zone (default UTC)Specifies the timezone used by the server
EXCALIBEE_SUPPORT_TOKENoptionalSpecifies an Excalibee support token; click here for more information

.htpasswd

Excalibee supports HTTP Basic Authentication out of the box. To enable it, place a passwords file at /opt/excalibee/.htpasswd using the standard Apache format with bcrypt hashes.

alice:$2b$10$0EhE06AyBn4shMGqCkJzqOIPGsYCJxO2mzbgCbfFQ4te5003PiYOK
bob:$2b$10$LbAfTfDmhD9SbroH.JVrc.uUpfNxVDDtjPDTvwE7UaCNnn3PxrQF2

Which can be created as follows:

htpasswd -B -c .htpasswd alice

If no passwords file is present, authentication is disabled. For any deployment exposed to the internet, you should either provide an .htpasswd or place Excalibee behind a reverse proxy that handles it.

/data/

The /opt/excalibee/data/ directory stores Excalibee's internal SQLite database, containing every folder, every drawing, its thumbnail and any images pasted into it.

Losing the data/ directory means losing all of your drawings, so it's strongly recommended to mount /opt/excalibee/data/ as a persistent volume.