/docker-baikal-infcloud

CalDAV/CardDAV Server with dockerized lighthttpd + baikal + sqlite + infcloud bundle

Primary LanguageJavaScript

docker-baikal-infcloud

Infcloud webinterface

Why?

  • self-hosted on synology NAS: Synology does not provide an out-of-box solution. There is the CardDAV Servr, the WebDAV Server. now even a Calendar Service with integrated web frontend (but without adressbook). The cons: many spreaded packages and services, with rather old dependencies. You cannot set seperate user/credentials for the DAV access which is not soa from a security standpoint as 2fa are not possible and simple basic auth mechanisms may leak.
  • Alternatives like owncloud/nextcloud or other colaboration suites are too much for this simple usecase
  • Using baikal for several years without any bigger issues makes it pretty robust for family or internal small company/team management.
  • You do not need email or other shared services
  • Widely supported clients, unfortunetly not natively with Android.
  • create backups of calendar and contact data
  • Syncs well with Windows, MacOS, Android and iOS

I use this setup for personal management with the family. As we used it for several years, this project is supporting my migration from a DS213j to DS718+ with Docker. Still not that easy to convince everybody to use cloud ☁︎ services 🤷🏻‍.

Build and Run

Build docker image

To build the Docker image just call

make

You can provide additional arguments to the docker command like

make args=--no-cache

to export the image as a tarball:

make export

See Makefile for more information.

Run

With sqlite

First build the image. Then call

make run

And point your Browser http://localhost:8800/baikal/html/admin/ to configure baikal.

To start the container detached (background) exec

make run args="--restart always --detach"

With mysql

To start baikal with mariadb (mysql) backend you can use the provided docker-compose file.

You need docker, docker-compose installed. The path ./baikal/db must be writable.

docker-compose up

Note:

You can use env-vars for the mysql setup, see ./docker-compose.yml file.

Visit http://localhost:8800/baikal/html/admin/ to configure baikal.

Timezone

You can change the timezone of the container on build-time via the docker build --build-arg TIMEZONE=Europe/Berlin ... command-line option or set the timezone in the Makefile

Default config

Autodiscovery

You can support easy mail-style (username@hostname.domain) setup by with configuring service discovery features as described. here.

The docker container contains these redirects setup already.

HTTPs / SSL / TLS

The current setup does not support https directly and suppose an existing reverse proxy (e.g. https://traefik.io)

Related projects

There are some other projects related to this topic, but I couldnt find one using latest Alpine with php7 and a small httpd having a small footprint eventually running it with sqlite.

Synology

Look here for setup instructions on a Synology NAS.