/baikal-docker

Provides a ready-to-go Baikal server, incl. docker-compose.yml & Systemd service file

Primary LanguageDockerfileMIT LicenseMIT

Baikal

docker build test Docker Pulls Docker Architectures

This dockerfile provides a ready-to-go Baikal server.

For more details, see ckulka/baikal-docker (GitHub).

Supported tags and respective Dockerfile links

I follow the same version naming scheme as Baikal themselves.

The following tags support multiple architectures, e.g. amd64, arm32v7, arm64v8 and i386.

For earlier versions all the way back to version 0.2.7, please search in the tags tab. Version 0.4.5 and older are only available for amd64. Version 0.9.0 and older do not support i386.

The *-php8.0 images address compatibility issue in some edge cases with version 0.9.1 and PHP 8.1, see ckulka/baikal-docker #52 and sabre-io/vobject #561.

Quick reference

What is Baikal?

From sabre.io/baikal:

Baikal is a Cal and CardDAV server, based on sabre/dav, that includes an administrative interface for easy management.

For more information, read the main website at baikal-server.com.

Baikal is developed by Net Gusto and fruux.

How to use this image

The following command will start Baikal:

docker run --rm -it -p 80:80 ckulka/baikal:nginx

Alternatively, use the provided examples/docker-compose.yaml from the Git repository:

docker compose up

You can now open http://localhost or http://host-ip in your browser and use Baikal.

Persistent Data

The image exposes the /var/www/baikal/Specific and /var/www/baikal/config folders, which contain the persistent data. These folders should be part of a regular backup.

If you want to use local folders instead of Docker volumes, see examples/docker-compose.localvolumes.yaml to avoid file permission issues.

When the container starts, the startup script /docker-entrypoint.d/40-fix-baikal-file-permissions.sh (Apache httpd, nginx) ensures that the file permissions are correct. You can disable this behaviour by setting the environment variable BAIKAL_SKIP_CHOWN to any value, e.g. FALSE.

Further Guides

You can find more installation and configuration guides here:

Image Variants

The ckulka/baikal images come in several flavors, each designed for a specific use case.

ckulka/baikal:<version>

This is the defacto image and follows the official guidelines the closest using Apache httpd.

With that being said, it's worth checking out the nginx variant as it requires fewer resources and produces no warning messages out-of-the-box.

If you are unsure about what your needs are, you probably want to use this one though.

ckulka/baikal:apache

This image relies on Apache httpd and uses the official PHP image that's packaged with the Apache web server.

It also ships with HTTPS support and self-signed certificates, which can be replaced by user-provided certificates - for more details, see the SSL Certificate Guide.

This image uses environment variables to set Apache's ServerName and ServerAlias directives to avoid Apache httpd's warnings in the logs.

The BAIKAL_SERVERNAME environment variable is used to set the global ServerName directive, e.g. dav.example.io. For more details, see Apache Core Features: ServerName Directive.

The BAIKAL_SERVERALIAS environment variable is used to set the ServerAlias directive of the VirtualHosts, e.g. dav.example.org dav.example.com. For more details, see Apache Core Features: ServerAlias Directive.

ckulka/baikal:experimental

This image has the latest code from the source repository ckulka/baikal-docker, mainly used for testing before a version is released. Use this at your own risk.

ckulka/baikal:nginx

This image relies on nginx and uses the official nginx image.

Compared to the Apache variant, it is significantly smaller (less than half the size) and produces no warning messages out-of-the-box.