This dockerfile provides a ready-to-go Baikal server.
For more details, see https://github.com/ckulka/baikal-docker
Supported tags and respective Dockerfile links
I follow the same version naming scheme as Baikal themselves.
The following tags are only available for
The following tags are available for both
- Where to file issues:
- Supported architectures (more info):
- Image updates:
PRs for ckulka/baikal-docker
- Source of this description:
What is 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:
The image exposes the
/var/www/baikal/Specific folder, which contains the persistent data. This folder should be part of a regular backup.
Let's Encrypt + Traefik
An example for Docker Compose can be found at examples/docker-compose.ssl.yaml.
This is my recommended approach, as your other containers can easily be added and you don't have to actively manage your certificates, Traefik creates new ones & replaces them when needed. Furthermore, since the image is an official Docker image, you won't have to worry as much about getting updates from a third party - aka me.
I included an example Docker Compose file examples/docker-compose.ssl.yaml as a template.
This way your other containers can easily be added and since the images are either official Docker images, e.g. Traefik and nginx, or directly come the maintainers, you won't have to worry as much about getting updates from a third party - aka me.
Alternatively, if you're using the
apache image variant, you can also mount your certificates into the container and expose the
# The folder /etc/ssl/private/baikal contains the files baikal.public.pem and baikal.private.pem docker run --rm -it -p 80:80 -p 443:443 -v /etc/ssl/private/baikal:/etc/ssl/private/:ro ckulka/baikal:apache
I also included a Docker Compose template examples/docker-compose.apache.yaml
To ensure Baikal is up after reboots, I also included a Systemd service template which relies on the Docker Compose file to start all containers. Before you use it, make sure that the working directory matches your server setup.
sudo curl -o /etc/systemd/system/baikal.service https://github.com/ckulka/baikal-docker/blob/master/baikal.service # Adjust the WorkingDirectory variable sudo systemctl enable baikal.service
This automatically starts the service whenever your server (re)boots.
Backup to AWS S3
I backup my persistent data to AWS S3.
Docker-compose file: examples/docker-compose.awss3.yaml
# Important: only start the baikal container docker-compose up baikal # On a regular basis, perform the backup docker-compose run --rm backup
ckulka/baikal images come in several flavors, each designed for a specific use case.
This is the defacto image. If you are unsure about what your needs are, you probably want to use this one.
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 Certificates: Static Certificates section.
This image uses environment variables to set Apache's
ServerAlias directives to avoid Apache httpd's warnings in the logs.
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.
BAIKAL_SERVERALIAS environment variable is used to set the
ServerAlias directive of the
dav.example.org dav.example.com. For more details, see Apache Core Features: ServerAlias Directive.
This image builds the
master branch from the source repository ckulka/baikal-docker. Use at your own risk.
Compared to the Apache variant, it is significantly smaller (less than half the size) and produces no warning messages out-of-the-box.