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/excalibeeA more realistic setup mounts a local directory at /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
- /host-data/excalibee:/opt/excalibee/data
environment:
EXCALIBEE_TIMEZONE: "Europe/Amsterdam"Environment vars
When starting Excalibee, the following environment variables can be specified.
| Variable | Options | Description |
|---|---|---|
EXCALIBEE_LOGGING | debug, info, warn, error (default info) | Specifies Excalibee's own logging level |
EXCALIBEE_TIMEZONE | IANA time zone (default UTC) | Specifies the timezone used by the server |
EXCALIBEE_SUPPORT_TOKEN | optional | Specifies 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.uUpfNxVDDtjPDTvwE7UaCNnn3PxrQF2Which can be created as follows:
htpasswd -B -c .htpasswd aliceIf 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, drawings, thumbnails and any custom images.
Losing the data/ directory means losing all of your drawings, so it's strongly recommended to mount /opt/excalibee/data/ as a persistent volume.
Backups
Make sure the /data/ directory mentioned above is mounted as a host directory, for example -v /host-data/excalibee:/opt/excalibee/data. Backups are then straightforward:
- Stop the Excalibee container
- Copy the entire data directory to your backup destination, for example
rsync -a /host-data/excalibee/ /host-backups/excalibee/ - Start the Excalibee container
Restores are the same steps in reverse:
- Stop the Excalibee container
- Replace the entire data directory with the backup, for example
rsync -a --delete /host-backups/excalibee/ /host-data/excalibee/ - Start the Excalibee container
Two things matter in both directions: Excalibee must stay offline for as long as the copy runs, and the /data/ directory is always copied or replaced in its entirety. Previous backups must be restored into the same or a newer version of Excalibee.