tokidoki/README.md
2024-02-02 22:39:12 +01:00

84 lines
2.5 KiB
Markdown

# tokidoki
Tokidoki is a (WIP) carddav and caldav server.
## Architecture
Tokidoki relies on [go-webdav][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)
[go-webdav]: https://github.com/emersion/go-webdav "go-webdav project page on Github"
## 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
Currently, by default only a single address book and calendar per user are
supported, as users cannot create new ones. If additional resources are created
manually on the server, tokidoki will however serve them just fine.
Tokidoki supports calendar and address book auto-discovery via
`/.well-known/caldav` and `/.well-known/carddav` respectively, as defined in
[RFC 6764, section 6][rfc]. Hence, most clients should be able to discover
resources by just pointing them at the server root.
[rfc]: https://datatracker.ietf.org/doc/html/rfc6764#section-6
## Contact
See the [tokidoki project page][project] for up-to-date information. Patches can be
submitted to the [tokidoki-devel mailing list][devel-list]. For general discussion,
please use the [tokidoki-discuss mailing list][discuss-list].
[project]: https://sr.ht/~sircmpwn/tokidoki
[devel-list]: mailto:~sircmpwn/tokidoki-dev@lists.sr.ht
[discuss-list]: mailto:~sircmpwn/tokidoki-discuss@lists.sr.ht