mirror of
https://github.com/lennart-k/rustical.git
synced 2025-12-13 22:52:22 +00:00
88 lines
2.8 KiB
Markdown
88 lines
2.8 KiB
Markdown
# Installation
|
|
|
|
## Docker
|
|
|
|
```sh
|
|
docker run \
|
|
-p 4000:4000 \
|
|
-v YOUR_DATA_DIR:/var/lib/rustical/ \
|
|
-v YOUR_CONFIG_TOML:/etc/rustical/config.toml \ # (1)!
|
|
-e RUSTICAL__CONFIG_OPTION="asd" \ # (2)!
|
|
ghcr.io/lennart-k/rustical
|
|
```
|
|
|
|
1. Mount config file
|
|
2. Alternatively specify configuration using environment variables
|
|
|
|
## Configuration
|
|
|
|
RustiCal can be configured using either a `config.toml` file or environent variables.
|
|
|
|
To see all configuration options available you can browse the [Cargo docs](/rustical/_crate/rustical/config/struct.Config.html).
|
|
|
|
### TOML
|
|
|
|
You can generate a default `config.toml` configuration using
|
|
|
|
```sh title="Generate default config.toml"
|
|
rustical gen-config
|
|
```
|
|
|
|
You'll have to set your database path to something like `/var/lib/rustical/db.sqlite3`.
|
|
|
|
### Environment variables
|
|
|
|
The options in `config.toml` can also be configured using environment variables.
|
|
Names translate the following:
|
|
|
|
```toml title="Example config.toml"
|
|
[data_store.toml]
|
|
path = "asd"
|
|
```
|
|
|
|
becomes `RUSTICAL_DATA_STORE__TOML__PATH`.
|
|
Every variable is
|
|
|
|
- uppercase
|
|
- prefixed by `RUSTICAL_`
|
|
- Dots become `__`
|
|
- Arrays are JSON-encoded
|
|
|
|
## Users and groups
|
|
|
|
Next, you will want to set up your principals.
|
|
Using the `rustical principals` command you can manage principals and passwords.
|
|
|
|
Groups and rooms are also just principals and you can specify them as such using the `--principal-type` parameter.
|
|
To assign a user to a group you can use the `rustical membership` command. Being a member to a principal means that you can completely act on their behalf and see their collections.
|
|
|
|
You can also completely skip this and instead configure OpenID Connect.
|
|
In that case your user will automatically be created when logging in through the frontend.
|
|
|
|
## Password vs app tokens
|
|
|
|
The password is optional (if you have configured OpenID Connect) and is only used to log in to the frontend.
|
|
Since it's sensitive information,
|
|
the secure but slow hash algorithm `argon2` is chosen.
|
|
|
|
App tokens are used by your CalDAV/CardDAV client (which can be managed through the frontend).
|
|
I recommend to generate random app tokens for each CalDAV/CardDAV client.
|
|
Since the app tokens are random they use the faster `pbkdf2` algorithm.
|
|
|
|
## WebDAV Push
|
|
|
|
RustiCal supports [WebDAV Push](https://github.com/bitfireAT/webdav-push/) which can notify compatible clients like DAVx5 about changed calendar/addressbook objects.
|
|
Since push messages are currently not encrypted you might potentially want to ensure that users only subscribe through your push server (e.g. [ntfy.sh](https://ntfy.sh/)), you can configure it the following:
|
|
|
|
```toml
|
|
[dav_push]
|
|
# Must strictly be the URL origin (so no trailing slashes)
|
|
allowed_push_servers = ["https://your-instance-ntfy.sh"]
|
|
```
|
|
|
|
## Manual
|
|
|
|
```sh
|
|
cargo install --locked --git https://github.com/lennart-k/rustical
|
|
```
|