a74c76857d
Thanks to the latest version of go-webdav, this is now a thing. A lot of operations (like creating a calendar) are not yet supported. But the basics work fine. Note that multi-calendar means that different users can each have their own calenders. Resource sharing is not yet implemented either. Includes the adding of a lot of debug logs, as issues are otherwise pretty hard to figure out. The logging still needs to be made more consistent, and probably cleaned up a bit in some places. |
||
---|---|---|
auth | ||
cmd/tokidoki | ||
storage | ||
.build.yml | ||
go.mod | ||
go.sum | ||
LICENSE | ||
README.md |
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.