~sircmpwn/tokidoki

A small and robust calendar & contacts server

bbb170a Improve README: TLS, logging

a month ago
a month ago

#tokidoki

Tokidoki is a (WIP) carddav and caldav server.

#Architecture

Tokidoki relies on go-webdav for the protocol implementation. It provides the storage backend and authentication, both of which are easily pluggable.

It currently provides:

Authentication:

  • IMAP (working)
  • PAM (working, enabled via the pam build tag)

Storage:

  • Filesystem (working)
  • PostgreSQL (planned)

#Building

  • Without PAM backend: go build ./cmd/tokidoki/
  • With PAM backend: go build -tags pam ./cmd/tokidoki/

#Running

Here are some examples to get you started:

Using the IMAP authentication backend and the filesystem storage backend (directory must exist), listening on port 8080 on all interfaces, with debug logs enabled:

./tokidoki -addr ":8080" -auth.url imaps://imap.example.com:993 -storage.url file:///path/to/storage -log.debug

Using the PAM authentication backend and TLS:

./tokidoki -addr ":8080" -auth.url pam:// -storage.url file:///path/to/storage -cert cert.pem -key key.pem

Regular logs are sent to stderr, HTTP logs are sent to stdout. Structured logging can be enabled for the regular logs with -log.json.

#Clients

Tokidoki does not yet support all CalDAV/CardDAV features, but tries to support the subset to make most major clients work.

The following clients are considered "supported":

  • Evolution (contacts & calendar)
  • Thunderbird (calendar) with CardBook extension (contacts)
  • DavX5 (contacts & calendar)

#Usage

Only a single address book and calendar per user are supported at the moment, this is currently a limitation in go-webdav.

Tokidoki supports calendar and address book auto-discovery via /.well-known/caldav and /.well-known/carddav respectively, as defined in RFC 6764, section 6. Hence, most clients should be able to discover resources by just pointing them at the server root.

#Contact

See the tokidoki project page for up-to-date information. Patches can be submitted to the tokidoki-devel mailing list. For general discussion, please use the tokidoki-discuss mailing list.