2022-02-21 08:52:09 +00:00
|
|
|
# tokidoki
|
|
|
|
|
|
|
|
Tokidoki is a (WIP) carddav and caldav server.
|
2022-05-13 14:54:51 +01:00
|
|
|
|
2022-05-19 11:22:41 +01:00
|
|
|
## Architecture
|
|
|
|
|
|
|
|
Tokidoki relies on [go-webdav][1] for the protocol implementation. It provides
|
|
|
|
the storage backend and authentication, both of which are easily pluggable.
|
|
|
|
|
|
|
|
It currently provides:
|
|
|
|
|
|
|
|
Authentication:
|
|
|
|
|
|
|
|
* IMAP (working)
|
2022-09-10 18:13:20 +01:00
|
|
|
* PAM (working, enabled via the `pam` build tag)
|
2022-05-19 11:22:41 +01:00
|
|
|
|
|
|
|
Storage:
|
|
|
|
|
|
|
|
* Filesystem (working)
|
|
|
|
* PostgreSQL (planned)
|
|
|
|
|
|
|
|
[1]: https://github.com/emersion/go-webdav "go-webdav project page on Github"
|
|
|
|
|
2022-05-13 14:54:51 +01:00
|
|
|
## Building
|
|
|
|
|
2022-12-14 14:36:07 +00:00
|
|
|
* Without PAM backend: `go build ./cmd/tokidoki/`
|
|
|
|
* With PAM backend: `go build -tags pam ./cmd/tokidoki/`
|
2022-05-13 14:54:51 +01:00
|
|
|
|
|
|
|
## Running
|
|
|
|
|
2022-12-17 20:12:34 +00:00
|
|
|
Here are some examples to get you started:
|
|
|
|
|
2022-05-19 11:22:41 +01:00
|
|
|
Using the IMAP authentication backend and the filesystem storage backend
|
2022-12-17 20:12:34 +00:00
|
|
|
(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:
|
2022-05-13 14:54:51 +01:00
|
|
|
|
2022-12-17 20:12:34 +00:00
|
|
|
```
|
|
|
|
./tokidoki -addr ":8080" -auth.url pam:// -storage.url file:///path/to/storage -cert cert.pem -key key.pem
|
|
|
|
```
|
2022-05-20 08:45:17 +01:00
|
|
|
|
2022-12-17 20:12:34 +00:00
|
|
|
Regular logs are sent to stderr, HTTP logs are sent to stdout. Structured
|
|
|
|
logging can be enabled for the regular logs with `-log.json`.
|
2022-05-20 08:45:17 +01:00
|
|
|
|
2022-12-14 14:36:07 +00:00
|
|
|
## 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)
|
|
|
|
|
2022-05-20 08:45:17 +01:00
|
|
|
## Usage
|
|
|
|
|
|
|
|
Only a single address book and calendar per user are supported at the moment,
|
|
|
|
this is currently a [limitation in go-webdav][2].
|
|
|
|
|
|
|
|
Tokidoki supports calendar and address book auto-discovery via
|
|
|
|
`/.well-known/caldav` and `/.well-known/carddav` respectively, as defined in
|
|
|
|
[RFC 6764, section 6][3]. Hence, most clients should be able to discover
|
|
|
|
resources by just pointing them at the server root.
|
|
|
|
|
|
|
|
[2]: https://github.com/emersion/go-webdav/issues/26
|
|
|
|
[3]: https://datatracker.ietf.org/doc/html/rfc6764#section-6
|
2022-12-14 14:36:07 +00:00
|
|
|
|
|
|
|
## Contact
|
|
|
|
|
|
|
|
See the [tokidoki project page][4] for up-to-date information. Patches can be
|
|
|
|
submitted to the [tokidoki-devel mailing list][5]. For general discussion,
|
|
|
|
please use the [tokidoki-discuss mailing list][6].
|
|
|
|
|
|
|
|
[4]: https://sr.ht/~sircmpwn/tokidoki
|
|
|
|
[5]: mailto:~sircmpwn/tokidoki-dev@lists.sr.ht
|
|
|
|
[6]: mailto:~sircmpwn/tokidoki-discuss@lists.sr.ht
|