# `finallycoffee.matrix.synapse` ansible role

## Configuration

### Required

The following variables need to be populated:

- `synapse_domain` - the domain this homeserver should be authoritative for.
- `synapse_signing_key` - the signing key synapse should use.
  Set either this or `synapse_role_generate_signing_key: true`.

## Other

- [Configure your database](docs/database.md)
- [Configure your listeners](docs/listeners.md)
- [Configure logging](docs/logging.md)

## Deployment methods

- `docker`
- `podman`
- `virtualenv` - Python virtual env supervised with `systemd`

Set `synapse_deployment_method` to one of the supported deployment methods.
The current default is `docker`.

### `virtualenv` deployment method

This deployment method installs a `systemd` service called `synapse.service` to
control the homeserver process. The service depends on the `network.target` by
default (see [`synapse_systemd_unit_after`](synapse/main/systemd.yml)), and
uses the `default.target` as it's `WantedBy`
(see [`synapse_systemd_install_wanted_by`](synapse/main/systemd.yml)).

To only start synapse after, for example, services for redis and postgresql are up,
set `synapse_systemd_unit_wants: [ "postgresql.service", "redis.service" ]`.

> [!NOTE]
> Requires `systemd >= 245` on the target machine