184 lines
4.2 KiB
Markdown
184 lines
4.2 KiB
Markdown
# Configuration
|
|
- [Syntax](#syntax)
|
|
- [Variables](#variables)
|
|
- [Categories](#categories)
|
|
|
|
## Syntax
|
|
The configuration file is YAML based, allowing two types of syntax.
|
|
|
|
Properties-like:
|
|
```
|
|
my.config.item: 'value'
|
|
```
|
|
|
|
Object-like:
|
|
```
|
|
my:
|
|
config:
|
|
item: 'value'
|
|
|
|
```
|
|
These can also be combined within the same file.
|
|
Both syntax will be used interchangeably in these documents.
|
|
|
|
Default values for each possible option are documented [here](../src/main/resources/application.yaml)
|
|
|
|
## Variables
|
|
It is possible to copy the value of a configuration item into another using the syntax `${config.key.item}`.
|
|
Example that will copy the value of `matrix.domain` into `server.name`:
|
|
```
|
|
matrix:
|
|
domain: 'example.org'
|
|
|
|
server:
|
|
name: '${matrix.domain}'
|
|
```
|
|
|
|
**WARNING:** mxisd might overwrite/adapt some values during launch. Those changes will not be reflected into copied keys.
|
|
|
|
## Categories
|
|
For each category below, the base configuration path will be given, which needs to be appended to every configuration
|
|
item described.
|
|
|
|
Example: if the base path was `basePath` and the following table was given:
|
|
|
|
| Name | Purpose |
|
|
|------|---------|
|
|
| item1 | To give an example |
|
|
| item2 | To give another example |
|
|
|
|
The following configurations could be used, all being equivalent:
|
|
```
|
|
basePath.item1: 'myValue'
|
|
basePath.item2: 'myOtherValue'
|
|
```
|
|
```
|
|
basePath:
|
|
item1: 'myValue'
|
|
item2: 'myOtherValue'
|
|
```
|
|
```
|
|
basePath.item1: 'myValue'
|
|
basePath:
|
|
item2: 'myOtherValue'
|
|
```
|
|
|
|
---
|
|
|
|
In case a relative base path is given, it is appended to the one above.
|
|
|
|
Example: With base path `basePath`, the relative base `relativeBasePath` and the following table:
|
|
|
|
| Name | Purpose |
|
|
|------|---------|
|
|
| item1 | To give an example |
|
|
| item2 | To give another example |
|
|
|
|
The following configurations could be used, all being equivalent:
|
|
```
|
|
basePath.relativeBasePath.item1: 'myValue'
|
|
basePath.relativeBasePath.item2: 'myOtherValue'
|
|
```
|
|
```
|
|
basePath:
|
|
relativeBasePath:
|
|
item1: 'myValue'
|
|
item2: 'myOtherValue'
|
|
```
|
|
```
|
|
basePath.relativeBasePath.item1: 'myValue'
|
|
basePath:
|
|
relativeBasePath:
|
|
item2: 'myOtherValue'
|
|
```
|
|
|
|
### Matrix
|
|
Base path: `matrix`
|
|
|
|
| Name | Purpose |
|
|
|------|---------|
|
|
| `domain` | Matrix domain name, same as the Homeserver, used to build appropriate Matrix IDs |
|
|
|
|
---
|
|
|
|
Relative base path: `identity`
|
|
|
|
| Name | Purpose |
|
|
|------|---------|
|
|
| `servers` | Namespace to create arbitrary list of Identity servers, usable in other parts of the configuration |
|
|
|
|
Example:
|
|
```
|
|
matrix.identity.servers:
|
|
root:
|
|
- 'https://matrix.org'
|
|
```
|
|
Create a list under the label `root` containing a single Identity server, `https://matrix.org`
|
|
### Server
|
|
| Name | Purpose |
|
|
|------|---------|
|
|
| `name` | Public hostname of mxisd, if different from the Matrix domain |
|
|
| `port` | HTTP port to listen on (unencrypted) |
|
|
| `publicUrl` | Defaults to `https://${server.name}` |
|
|
|
|
### Storage
|
|
Base path: `storage`
|
|
|
|
| Name | Purpose |
|
|
|------|---------|
|
|
| `backend` | Specify which SQL backend to use. only `sqlite` is currently supported. |
|
|
|
|
---
|
|
Relative base path: `provider.sqlite`
|
|
|
|
| Name | Purpose |
|
|
|------|---------|
|
|
| `database` | Absolute location of the SQLite database |
|
|
|
|
### Backends
|
|
- [LDAP](backends/ldap.md)
|
|
- [SQL](backends/sql.md)
|
|
- [REST](backends/rest.md)
|
|
- [Google Firebase](backends/firebase.md)
|
|
|
|
### Lookups
|
|
work in progress, should not be configured.
|
|
|
|
### Sessions
|
|
See the [dedicated document](sessions/3pid.md)
|
|
|
|
### Notifications
|
|
Base path: `notification`
|
|
|
|
| Name | Purpose |
|
|
|------|---------|
|
|
| handler | Namespace to specify the handler to use for each 3PID |
|
|
| handlers | Namespace used by individual handlers for their own configuration |
|
|
|
|
Example:
|
|
```
|
|
notification:
|
|
handler:
|
|
email: 'sendgrid'
|
|
msisdn: 'raw'
|
|
handlers:
|
|
raw:
|
|
...
|
|
sendgrid:
|
|
...
|
|
```
|
|
- Emails notifications would use the `sendgrid` handler, which define its own configuration user `handlers.sendgrid`
|
|
- Phone notification would use the `raw` handler, basic default built-in handler of mxisd
|
|
#### Handlers
|
|
Relative base path: `handlers`
|
|
|
|
Built-in:
|
|
- [Basic](threepids/notifications/basic-handler.md)
|
|
- [SendGrid](threepids/notifications/sendgrid-handler.md)
|
|
|
|
### Views
|
|
See the [dedicated document](sessions/3pid-views.md)
|
|
|
|
### DNS Overwite
|
|
Specific to other features.
|