Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>pull/3628/head
| @@ -6,7 +6,7 @@ | |||||
| This [Ansible](https://www.ansible.com/) playbook is meant to help you run your own [Matrix](http://matrix.org/) homeserver, along with the [various services](#supported-services) related to that. | This [Ansible](https://www.ansible.com/) playbook is meant to help you run your own [Matrix](http://matrix.org/) homeserver, along with the [various services](#supported-services) related to that. | ||||
| That is, it lets you join the Matrix network using your own `@<username>:<your-domain>` identifier, all hosted on your own server (see [prerequisites](docs/prerequisites.md)). | |||||
| That is, it lets you join the Matrix network using your own `@<username>:example.com` identifier, all hosted on your own server (see [prerequisites](docs/prerequisites.md)). | |||||
| We run all services in [Docker](https://www.docker.com/) containers (see [the container images we use](docs/container-images.md)), which lets us have a predictable and up-to-date setup, across multiple supported distros (see [prerequisites](docs/prerequisites.md)) and [architectures](docs/alternative-architectures.md) (x86/amd64 being recommended). | We run all services in [Docker](https://www.docker.com/) containers (see [the container images we use](docs/container-images.md)), which lets us have a predictable and up-to-date setup, across multiple supported distros (see [prerequisites](docs/prerequisites.md)) and [architectures](docs/alternative-architectures.md) (x86/amd64 being recommended). | ||||
| @@ -2,14 +2,14 @@ | |||||
| To set up Matrix on your domain, you'd need to do some DNS configuration. | To set up Matrix on your domain, you'd need to do some DNS configuration. | ||||
| To use an identifier like `@<username>:<your-domain>`, you don't actually need | |||||
| to install anything on the actual `<your-domain>` server. | |||||
| To use an identifier like `@<username>:example.com`, you don't actually need | |||||
| to install anything on the actual `example.com` server. | |||||
| You do, however need to instruct the Matrix network that Matrix services for `<your-domain>` are delegated | |||||
| over to `matrix.<your-domain>`. | |||||
| You do, however need to instruct the Matrix network that Matrix services for `example.com` are delegated | |||||
| over to `matrix.example.com`. | |||||
| As we discuss in [Server Delegation](howto-server-delegation.md), there are 2 different ways to set up such delegation: | As we discuss in [Server Delegation](howto-server-delegation.md), there are 2 different ways to set up such delegation: | ||||
| - either by serving a `https://<your-domain>/.well-known/matrix/server` file (from the base domain!) | |||||
| - either by serving a `https://example.com/.well-known/matrix/server` file (from the base domain!) | |||||
| - or by using a `_matrix._tcp` DNS SRV record (don't confuse this with the `_matrix-identity._tcp` SRV record described below) | - or by using a `_matrix._tcp` DNS SRV record (don't confuse this with the `_matrix-identity._tcp` SRV record described below) | ||||
| This playbook mostly discusses the well-known file method, because it's easier to manage with regard to certificates. | This playbook mostly discusses the well-known file method, because it's easier to manage with regard to certificates. | ||||
| @@ -20,7 +20,7 @@ If you decide to go with the alternative method ([Server Delegation via a DNS SR | |||||
| | Type | Host | Priority | Weight | Port | Target | | | Type | Host | Priority | Weight | Port | Target | | ||||
| | ----- | ---------------------------- | -------- | ------ | ---- | ---------------------- | | | ----- | ---------------------------- | -------- | ------ | ---- | ---------------------- | | ||||
| | A | `matrix` | - | - | - | `matrix-server-IP` | | | A | `matrix` | - | - | - | `matrix-server-IP` | | ||||
| | CNAME | `element` | - | - | - | `matrix.<your-domain>` | | |||||
| | CNAME | `element` | - | - | - | `matrix.example.com` | | |||||
| Be mindful as to how long it will take for the DNS records to propagate. | Be mindful as to how long it will take for the DNS records to propagate. | ||||
| @@ -32,20 +32,20 @@ When you're done configuring DNS, proceed to [Configuring the playbook](configur | |||||
| | Used by component | Type | Host | Priority | Weight | Port | Target | | | Used by component | Type | Host | Priority | Weight | Port | Target | | ||||
| | ----------------------------------------------------------------------------------------------------------------------- | ----- | ------------------------------ | -------- | ------ | ---- | --------------------------- | | | ----------------------------------------------------------------------------------------------------------------------- | ----- | ------------------------------ | -------- | ------ | ---- | --------------------------- | | ||||
| | [ma1sd](configuring-playbook-ma1sd.md) identity server | SRV | `_matrix-identity._tcp` | 10 | 0 | 443 | `matrix.<your-domain>` | | |||||
| | [Dimension](configuring-playbook-dimension.md) integration server | CNAME | `dimension` | - | - | - | `matrix.<your-domain>` | | |||||
| | [Jitsi](configuring-playbook-jitsi.md) video-conferencing platform | CNAME | `jitsi` | - | - | - | `matrix.<your-domain>` | | |||||
| | [Prometheus/Grafana](configuring-playbook-prometheus-grafana.md) monitoring system | CNAME | `stats` | - | - | - | `matrix.<your-domain>` | | |||||
| | [Go-NEB](configuring-playbook-bot-go-neb.md) bot | CNAME | `goneb` | - | - | - | `matrix.<your-domain>` | | |||||
| | [Sygnal](configuring-playbook-sygnal.md) push notification gateway | CNAME | `sygnal` | - | - | - | `matrix.<your-domain>` | | |||||
| | [ntfy](configuring-playbook-ntfy.md) push notifications server | CNAME | `ntfy` | - | - | - | `matrix.<your-domain>` | | |||||
| | [Etherpad](configuring-playbook-etherpad.md) collaborative text editor | CNAME | `etherpad` | - | - | - | `matrix.<your-domain>` | | |||||
| | [Hydrogen](configuring-playbook-client-hydrogen.md) web client | CNAME | `hydrogen` | - | - | - | `matrix.<your-domain>` | | |||||
| | [Cinny](configuring-playbook-client-cinny.md) web client | CNAME | `cinny` | - | - | - | `matrix.<your-domain>` | | |||||
| | [SchildiChat](configuring-playbook-client-schildichat.md) web client | CNAME | `schildichat` | - | - | - | `matrix.<your-domain>` | | |||||
| | [wsproxy](configuring-playbook-bridge-mautrix-wsproxy.md) sms bridge | CNAME | `wsproxy` | - | - | - | `matrix.<your-domain>` | | |||||
| | [Buscarron](configuring-playbook-bot-buscarron.md) helpdesk bot | CNAME | `buscarron` | - | - | - | `matrix.<your-domain>` | | |||||
| | [Postmoogle](configuring-playbook-bot-postmoogle.md)/[Email2Matrix](configuring-playbook-email2matrix.md) email bridges | MX | `matrix` | 10 | 0 | - | `matrix.<your-domain>` | | |||||
| | [ma1sd](configuring-playbook-ma1sd.md) identity server | SRV | `_matrix-identity._tcp` | 10 | 0 | 443 | `matrix.example.com` | | |||||
| | [Dimension](configuring-playbook-dimension.md) integration server | CNAME | `dimension` | - | - | - | `matrix.example.com` | | |||||
| | [Jitsi](configuring-playbook-jitsi.md) video-conferencing platform | CNAME | `jitsi` | - | - | - | `matrix.example.com` | | |||||
| | [Prometheus/Grafana](configuring-playbook-prometheus-grafana.md) monitoring system | CNAME | `stats` | - | - | - | `matrix.example.com` | | |||||
| | [Go-NEB](configuring-playbook-bot-go-neb.md) bot | CNAME | `goneb` | - | - | - | `matrix.example.com` | | |||||
| | [Sygnal](configuring-playbook-sygnal.md) push notification gateway | CNAME | `sygnal` | - | - | - | `matrix.example.com` | | |||||
| | [ntfy](configuring-playbook-ntfy.md) push notifications server | CNAME | `ntfy` | - | - | - | `matrix.example.com` | | |||||
| | [Etherpad](configuring-playbook-etherpad.md) collaborative text editor | CNAME | `etherpad` | - | - | - | `matrix.example.com` | | |||||
| | [Hydrogen](configuring-playbook-client-hydrogen.md) web client | CNAME | `hydrogen` | - | - | - | `matrix.example.com` | | |||||
| | [Cinny](configuring-playbook-client-cinny.md) web client | CNAME | `cinny` | - | - | - | `matrix.example.com` | | |||||
| | [SchildiChat](configuring-playbook-client-schildichat.md) web client | CNAME | `schildichat` | - | - | - | `matrix.example.com` | | |||||
| | [wsproxy](configuring-playbook-bridge-mautrix-wsproxy.md) sms bridge | CNAME | `wsproxy` | - | - | - | `matrix.example.com` | | |||||
| | [Buscarron](configuring-playbook-bot-buscarron.md) helpdesk bot | CNAME | `buscarron` | - | - | - | `matrix.example.com` | | |||||
| | [Postmoogle](configuring-playbook-bot-postmoogle.md)/[Email2Matrix](configuring-playbook-email2matrix.md) email bridges | MX | `matrix` | 10 | 0 | - | `matrix.example.com` | | |||||
| | [Postmoogle](configuring-playbook-bot-postmoogle.md) email bridge | TXT | `matrix` | - | - | - | `v=spf1 ip4:<your-ip> -all` | | | [Postmoogle](configuring-playbook-bot-postmoogle.md) email bridge | TXT | `matrix` | - | - | - | `v=spf1 ip4:<your-ip> -all` | | ||||
| | [Postmoogle](configuring-playbook-bot-postmoogle.md) email bridge | TXT | `_dmarc.matrix` | - | - | - | `v=DMARC1; p=quarantine;` | | | [Postmoogle](configuring-playbook-bot-postmoogle.md) email bridge | TXT | `_dmarc.matrix` | - | - | - | `v=DMARC1; p=quarantine;` | | ||||
| | [Postmoogle](configuring-playbook-bot-postmoogle.md) email bridge | TXT | `postmoogle._domainkey.matrix` | - | - | - | get it from `!pm dkim` | | | [Postmoogle](configuring-playbook-bot-postmoogle.md) email bridge | TXT | `postmoogle._domainkey.matrix` | - | - | - | get it from `!pm dkim` | | ||||
| @@ -54,38 +54,38 @@ When setting up a SRV record, if you are asked for a service and protocol instea | |||||
| ## Subdomains setup | ## Subdomains setup | ||||
| As the table above illustrates, you need to create 2 subdomains (`matrix.<your-domain>` and `element.<your-domain>`) and point both of them to your new server's IP address (DNS `A` record or `CNAME` record is fine). | |||||
| As the table above illustrates, you need to create 2 subdomains (`matrix.example.com` and `element.example.com`) and point both of them to your new server's IP address (DNS `A` record or `CNAME` record is fine). | |||||
| The `element.<your-domain>` subdomain may be necessary, because this playbook installs the [Element](https://github.com/element-hq/element-web) web client for you. | |||||
| If you'd rather instruct the playbook not to install Element (`matrix_client_element_enabled: false` when [Configuring the playbook](configuring-playbook.md) later), feel free to skip the `element.<your-domain>` DNS record. | |||||
| The `element.example.com` subdomain may be necessary, because this playbook installs the [Element](https://github.com/element-hq/element-web) web client for you. | |||||
| If you'd rather instruct the playbook not to install Element (`matrix_client_element_enabled: false` when [Configuring the playbook](configuring-playbook.md) later), feel free to skip the `element.example.com` DNS record. | |||||
| The `dimension.<your-domain>` subdomain may be necessary, because this playbook could install the [Dimension integrations manager](http://dimension.t2bot.io/) for you. Dimension installation is disabled by default, because it's only possible to install it after the other Matrix services are working (see [Setting up Dimension](configuring-playbook-dimension.md) later). If you do not wish to set up Dimension, feel free to skip the `dimension.<your-domain>` DNS record. | |||||
| The `dimension.example.com` subdomain may be necessary, because this playbook could install the [Dimension integrations manager](http://dimension.t2bot.io/) for you. Dimension installation is disabled by default, because it's only possible to install it after the other Matrix services are working (see [Setting up Dimension](configuring-playbook-dimension.md) later). If you do not wish to set up Dimension, feel free to skip the `dimension.example.com` DNS record. | |||||
| The `jitsi.<your-domain>` subdomain may be necessary, because this playbook could install the [Jitsi video-conferencing platform](https://jitsi.org/) for you. Jitsi installation is disabled by default, because it may be heavy and is not a core required component. To learn how to install it, see our [Jitsi](configuring-playbook-jitsi.md) guide. If you do not wish to set up Jitsi, feel free to skip the `jitsi.<your-domain>` DNS record. | |||||
| The `jitsi.example.com` subdomain may be necessary, because this playbook could install the [Jitsi video-conferencing platform](https://jitsi.org/) for you. Jitsi installation is disabled by default, because it may be heavy and is not a core required component. To learn how to install it, see our [Jitsi](configuring-playbook-jitsi.md) guide. If you do not wish to set up Jitsi, feel free to skip the `jitsi.example.com` DNS record. | |||||
| The `stats.<your-domain>` subdomain may be necessary, because this playbook could install [Grafana](https://grafana.com/) and setup performance metrics for you. Grafana installation is disabled by default, it is not a core required component. To learn how to install it, see our [metrics and graphs guide](configuring-playbook-prometheus-grafana.md). If you do not wish to set up Grafana, feel free to skip the `stats.<your-domain>` DNS record. It is possible to install Prometheus without installing Grafana, this would also not require the `stats.<your-domain>` subdomain. | |||||
| The `stats.example.com` subdomain may be necessary, because this playbook could install [Grafana](https://grafana.com/) and setup performance metrics for you. Grafana installation is disabled by default, it is not a core required component. To learn how to install it, see our [metrics and graphs guide](configuring-playbook-prometheus-grafana.md). If you do not wish to set up Grafana, feel free to skip the `stats.example.com` DNS record. It is possible to install Prometheus without installing Grafana, this would also not require the `stats.example.com` subdomain. | |||||
| The `goneb.<your-domain>` subdomain may be necessary, because this playbook could install the [Go-NEB](https://github.com/matrix-org/go-neb) bot. The installation of Go-NEB is disabled by default, it is not a core required component. To learn how to install it, see our [configuring Go-NEB guide](configuring-playbook-bot-go-neb.md). If you do not wish to set up Go-NEB, feel free to skip the `goneb.<your-domain>` DNS record. | |||||
| The `goneb.example.com` subdomain may be necessary, because this playbook could install the [Go-NEB](https://github.com/matrix-org/go-neb) bot. The installation of Go-NEB is disabled by default, it is not a core required component. To learn how to install it, see our [configuring Go-NEB guide](configuring-playbook-bot-go-neb.md). If you do not wish to set up Go-NEB, feel free to skip the `goneb.example.com` DNS record. | |||||
| The `sygnal.<your-domain>` subdomain may be necessary, because this playbook could install the [Sygnal](https://github.com/matrix-org/sygnal) push gateway. The installation of Sygnal is disabled by default, it is not a core required component. To learn how to install it, see our [configuring Sygnal guide](configuring-playbook-sygnal.md). If you do not wish to set up Sygnal (you probably don't, unless you're also developing/building your own Matrix apps), feel free to skip the `sygnal.<your-domain>` DNS record. | |||||
| The `sygnal.example.com` subdomain may be necessary, because this playbook could install the [Sygnal](https://github.com/matrix-org/sygnal) push gateway. The installation of Sygnal is disabled by default, it is not a core required component. To learn how to install it, see our [configuring Sygnal guide](configuring-playbook-sygnal.md). If you do not wish to set up Sygnal (you probably don't, unless you're also developing/building your own Matrix apps), feel free to skip the `sygnal.example.com` DNS record. | |||||
| The `ntfy.<your-domain>` subdomain may be necessary, because this playbook could install the [ntfy](https://ntfy.sh/) UnifiedPush-compatible push notifications server. The installation of ntfy is disabled by default, it is not a core required component. To learn how to install it, see our [configuring ntfy guide](configuring-playbook-ntfy.md). If you do not wish to set up ntfy, feel free to skip the `ntfy.<your-domain>` DNS record. | |||||
| The `ntfy.example.com` subdomain may be necessary, because this playbook could install the [ntfy](https://ntfy.sh/) UnifiedPush-compatible push notifications server. The installation of ntfy is disabled by default, it is not a core required component. To learn how to install it, see our [configuring ntfy guide](configuring-playbook-ntfy.md). If you do not wish to set up ntfy, feel free to skip the `ntfy.example.com` DNS record. | |||||
| The `etherpad.<your-domain>` subdomain may be necessary, because this playbook could install the [Etherpad](https://etherpad.org/) a highly customizable open source online editor providing collaborative editing in really real-time. The installation of Etherpad is disabled by default, it is not a core required component. To learn how to install it, see our [configuring Etherpad guide](configuring-playbook-etherpad.md). If you do not wish to set up Etherpad, feel free to skip the `etherpad.<your-domain>` DNS record. | |||||
| The `etherpad.example.com` subdomain may be necessary, because this playbook could install the [Etherpad](https://etherpad.org/) a highly customizable open source online editor providing collaborative editing in really real-time. The installation of Etherpad is disabled by default, it is not a core required component. To learn how to install it, see our [configuring Etherpad guide](configuring-playbook-etherpad.md). If you do not wish to set up Etherpad, feel free to skip the `etherpad.example.com` DNS record. | |||||
| The `hydrogen.<your-domain>` subdomain may be necessary, because this playbook could install the [Hydrogen](https://github.com/element-hq/hydrogen-web) web client. The installation of Hydrogen is disabled by default, it is not a core required component. To learn how to install it, see our [configuring Hydrogen guide](configuring-playbook-client-hydrogen.md). If you do not wish to set up Hydrogen, feel free to skip the `hydrogen.<your-domain>` DNS record. | |||||
| The `hydrogen.example.com` subdomain may be necessary, because this playbook could install the [Hydrogen](https://github.com/element-hq/hydrogen-web) web client. The installation of Hydrogen is disabled by default, it is not a core required component. To learn how to install it, see our [configuring Hydrogen guide](configuring-playbook-client-hydrogen.md). If you do not wish to set up Hydrogen, feel free to skip the `hydrogen.example.com` DNS record. | |||||
| The `cinny.<your-domain>` subdomain may be necessary, because this playbook could install the [Cinny](https://github.com/ajbura/cinny) web client. The installation of Cinny is disabled by default, it is not a core required component. To learn how to install it, see our [configuring Cinny guide](configuring-playbook-client-cinny.md). If you do not wish to set up Cinny, feel free to skip the `cinny.<your-domain>` DNS record. | |||||
| The `cinny.example.com` subdomain may be necessary, because this playbook could install the [Cinny](https://github.com/ajbura/cinny) web client. The installation of Cinny is disabled by default, it is not a core required component. To learn how to install it, see our [configuring Cinny guide](configuring-playbook-client-cinny.md). If you do not wish to set up Cinny, feel free to skip the `cinny.example.com` DNS record. | |||||
| The `wsproxy.<your-domain>` subdomain may be necessary, because this playbook could install the [wsproxy](https://github.com/mautrix/wsproxy) web client. The installation of wsproxy is disabled by default, it is not a core required component. To learn how to install it, see our [configuring wsproxy guide](configuring-playbook-bridge-mautrix-wsproxy.md). If you do not wish to set up wsproxy, feel free to skip the `wsproxy.<your-domain>` DNS record. | |||||
| The `wsproxy.example.com` subdomain may be necessary, because this playbook could install the [wsproxy](https://github.com/mautrix/wsproxy) web client. The installation of wsproxy is disabled by default, it is not a core required component. To learn how to install it, see our [configuring wsproxy guide](configuring-playbook-bridge-mautrix-wsproxy.md). If you do not wish to set up wsproxy, feel free to skip the `wsproxy.example.com` DNS record. | |||||
| The `buscarron.<your-domain>` subdomain may be necessary, because this playbook could install the [buscarron](https://github.com/etkecc/buscarron) bot. The installation of buscarron is disabled by default, it is not a core required component. To learn how to install it, see our [configuring buscarron guide](configuring-playbook-bot-buscarron.md). If you do not wish to set up buscarron, feel free to skip the `buscarron.<your-domain>` DNS record. | |||||
| The `buscarron.example.com` subdomain may be necessary, because this playbook could install the [buscarron](https://github.com/etkecc/buscarron) bot. The installation of buscarron is disabled by default, it is not a core required component. To learn how to install it, see our [configuring buscarron guide](configuring-playbook-bot-buscarron.md). If you do not wish to set up buscarron, feel free to skip the `buscarron.example.com` DNS record. | |||||
| ## `_matrix-identity._tcp` SRV record setup | ## `_matrix-identity._tcp` SRV record setup | ||||
| To make the [ma1sd](https://github.com/ma1uta/ma1sd) Identity Server (which this playbook may optionally install for you) enable its federation features, set up an SRV record that looks like this: | To make the [ma1sd](https://github.com/ma1uta/ma1sd) Identity Server (which this playbook may optionally install for you) enable its federation features, set up an SRV record that looks like this: | ||||
| - Name: `_matrix-identity._tcp` (use this text as-is) | - Name: `_matrix-identity._tcp` (use this text as-is) | ||||
| - Content: `10 0 443 matrix.<your-domain>` (replace `<your-domain>` with your own) | |||||
| - Content: `10 0 443 matrix.example.com` (replace `example.com` with your own) | |||||
| This is an optional feature for the optionally-installed [ma1sd service](configuring-playbook-ma1sd.md). See [ma1sd's documentation](https://github.com/ma1uta/ma1sd/wiki/mxisd-and-your-privacy#choices-are-never-easy) for information on the privacy implications of setting up this SRV record. | This is an optional feature for the optionally-installed [ma1sd service](configuring-playbook-ma1sd.md). See [ma1sd's documentation](https://github.com/ma1uta/ma1sd/wiki/mxisd-and-your-privacy#choices-are-never-easy) for information on the privacy implications of setting up this SRV record. | ||||
| @@ -3,7 +3,7 @@ | |||||
| The playbook can install and configure [maubot](https://github.com/maubot/maubot) for you. | The playbook can install and configure [maubot](https://github.com/maubot/maubot) for you. | ||||
| After setting up maubot, you can use the web management interface to make it do things. | After setting up maubot, you can use the web management interface to make it do things. | ||||
| The default location of the management interface is `matrix.<your-domain>/_matrix/maubot/` | |||||
| The default location of the management interface is `matrix.example.com/_matrix/maubot/` | |||||
| See the project's [documentation](https://docs.mau.fi/maubot/usage/basic.html) to learn what it | See the project's [documentation](https://docs.mau.fi/maubot/usage/basic.html) to learn what it | ||||
| does and why it might be useful to you. | does and why it might be useful to you. | ||||
| @@ -38,7 +38,7 @@ After configuring the playbook, run the [installation](installing.md) command: ` | |||||
| ## Usage | ## Usage | ||||
| You can visit `matrix.<your-domain>/_matrix/maubot/` to manage your available plugins, clients and instances. | |||||
| You can visit `matrix.example.com/_matrix/maubot/` to manage your available plugins, clients and instances. | |||||
| You should start in the following order | You should start in the following order | ||||
| 1. **Create one or more clients**: A client is a matrix account which the bot will use to message. By default, the playbook creates a `bot.maubot` account (as per the configuration above). You only need to [obtain an access token](#obtaining-an-access-token) for it | 1. **Create one or more clients**: A client is a matrix account which the bot will use to message. By default, the playbook creates a `bot.maubot` account (as per the configuration above). You only need to [obtain an access token](#obtaining-an-access-token) for it | ||||
| @@ -5,7 +5,7 @@ By default, this playbook installs the [Element](https://github.com/element-hq/e | |||||
| ## Disabling Element | ## Disabling Element | ||||
| If you'd like for the playbook to not install Element (or to uninstall it if it was previously installed), you can disable it in your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`): | |||||
| If you'd like for the playbook to not install Element (or to uninstall it if it was previously installed), you can disable it in your configuration file (`inventory/host_vars/matrix.example.com/vars.yml`): | |||||
| ```yaml | ```yaml | ||||
| matrix_client_element_enabled: false | matrix_client_element_enabled: false | ||||
| @@ -18,7 +18,7 @@ The playbook provides some customization variables you could use to change Eleme | |||||
| Their defaults are defined in [`roles/custom/matrix-client-element/defaults/main.yml`](../roles/custom/matrix-client-element/defaults/main.yml) and they ultimately end up in the generated `/matrix/element/config.json` file (on the server). This file is generated from the [`roles/custom/matrix-client-element/templates/config.json.j2`](../roles/custom/matrix-client-element/templates/config.json.j2) template. | Their defaults are defined in [`roles/custom/matrix-client-element/defaults/main.yml`](../roles/custom/matrix-client-element/defaults/main.yml) and they ultimately end up in the generated `/matrix/element/config.json` file (on the server). This file is generated from the [`roles/custom/matrix-client-element/templates/config.json.j2`](../roles/custom/matrix-client-element/templates/config.json.j2) template. | ||||
| **If there's an existing variable** which controls a setting you wish to change, you can simply define that variable in your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`) and [re-run the playbook](installing.md) to apply the changes. | |||||
| **If there's an existing variable** which controls a setting you wish to change, you can simply define that variable in your configuration file (`inventory/host_vars/matrix.example.com/vars.yml`) and [re-run the playbook](installing.md) to apply the changes. | |||||
| Alternatively, **if there is no pre-defined variable** for an Element setting you wish to change: | Alternatively, **if there is no pre-defined variable** for an Element setting you wish to change: | ||||
| @@ -30,7 +30,7 @@ The playbook provides some customization variables you could use to change Schil | |||||
| Their defaults are defined in [`roles/custom/matrix-client-schildichat/defaults/main.yml`](../roles/custom/matrix-client-schildichat/defaults/main.yml) and they ultimately end up in the generated `/matrix/schildichat/config.json` file (on the server). This file is generated from the [`roles/custom/matrix-client-schildichat/templates/config.json.j2`](../roles/custom/matrix-client-schildichat/templates/config.json.j2) template. | Their defaults are defined in [`roles/custom/matrix-client-schildichat/defaults/main.yml`](../roles/custom/matrix-client-schildichat/defaults/main.yml) and they ultimately end up in the generated `/matrix/schildichat/config.json` file (on the server). This file is generated from the [`roles/custom/matrix-client-schildichat/templates/config.json.j2`](../roles/custom/matrix-client-schildichat/templates/config.json.j2) template. | ||||
| **If there's an existing variable** which controls a setting you wish to change, you can simply define that variable in your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`) and [re-run the playbook](installing.md) to apply the changes. | |||||
| **If there's an existing variable** which controls a setting you wish to change, you can simply define that variable in your configuration file (`inventory/host_vars/matrix.example.com/vars.yml`) and [re-run the playbook](installing.md) to apply the changes. | |||||
| Alternatively, **if there is no pre-defined variable** for a SchildiChat setting you wish to change: | Alternatively, **if there is no pre-defined variable** for a SchildiChat setting you wish to change: | ||||
| @@ -10,7 +10,7 @@ By default, this playbook configures the [Synapse](https://github.com/element-hq | |||||
| The playbook provided settings for Dendrite are defined in [`roles/custom/matrix-dendrite/defaults/main.yml`](../roles/custom/matrix-dendrite/defaults/main.yml) and they ultimately end up in the generated `/matrix/dendrite/config/dendrite.yaml` file (on the server). This file is generated from the [`roles/custom/matrix-dendrite/templates/dendrite/dendrite.yaml.j2`](../roles/custom/matrix-dendrite/templates/dendrite/dendrite.yaml.j2) template. | The playbook provided settings for Dendrite are defined in [`roles/custom/matrix-dendrite/defaults/main.yml`](../roles/custom/matrix-dendrite/defaults/main.yml) and they ultimately end up in the generated `/matrix/dendrite/config/dendrite.yaml` file (on the server). This file is generated from the [`roles/custom/matrix-dendrite/templates/dendrite/dendrite.yaml.j2`](../roles/custom/matrix-dendrite/templates/dendrite/dendrite.yaml.j2) template. | ||||
| **If there's an existing variable** which controls a setting you wish to change, you can simply define that variable in your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`) and [re-run the playbook](installing.md) to apply the changes. | |||||
| **If there's an existing variable** which controls a setting you wish to change, you can simply define that variable in your configuration file (`inventory/host_vars/matrix.example.com/vars.yml`) and [re-run the playbook](installing.md) to apply the changes. | |||||
| Alternatively, **if there is no pre-defined variable** for a Dendrite setting you wish to change: | Alternatively, **if there is no pre-defined variable** for a Dendrite setting you wish to change: | ||||
| @@ -30,7 +30,7 @@ Once you've decided on the domain and path, **you may need to adjust your DNS** | |||||
| ## Enable | ## Enable | ||||
| To enable Dimension, add this to your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`): | |||||
| To enable Dimension, add this to your configuration file (`inventory/host_vars/matrix.example.com/vars.yml`): | |||||
| ```yaml | ```yaml | ||||
| matrix_dimension_enabled: true | matrix_dimension_enabled: true | ||||
| @@ -40,7 +40,7 @@ matrix_dimension_enabled: true | |||||
| ## Define admin users | ## Define admin users | ||||
| These users can modify the integrations this Dimension supports. | These users can modify the integrations this Dimension supports. | ||||
| Add this to your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`): | |||||
| Add this to your configuration file (`inventory/host_vars/matrix.example.com/vars.yml`): | |||||
| ```yaml | ```yaml | ||||
| matrix_dimension_admins: | matrix_dimension_admins: | ||||
| @@ -60,7 +60,7 @@ To get an access token for the Dimension user, you can follow the documentation | |||||
| **Access tokens are sensitive information. Do not include them in any bug reports, messages, or logs. Do not share the access token with anyone.** | **Access tokens are sensitive information. Do not include them in any bug reports, messages, or logs. Do not share the access token with anyone.** | ||||
| Add access token to your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`): | |||||
| Add access token to your configuration file (`inventory/host_vars/matrix.example.com/vars.yml`): | |||||
| ```yaml | ```yaml | ||||
| matrix_dimension_access_token: "YOUR ACCESS TOKEN HERE" | matrix_dimension_access_token: "YOUR ACCESS TOKEN HERE" | ||||
| @@ -46,7 +46,7 @@ After configuring the playbook, run the [installation](installing.md) command: ` | |||||
| ## Usage | ## Usage | ||||
| The Etherpad UI should be available at `https://etherpad.<your-domain>`, while the admin UI (if enabled) should then be available at `https://etherpad.<your-domain>/admin`. | |||||
| The Etherpad UI should be available at `https://etherpad.example.com`, while the admin UI (if enabled) should then be available at `https://etherpad.example.com/admin`. | |||||
| If you've [decided on another hostname or path-prefix](#decide-on-a-domain-and-path) (e.g. `https://matrix.example.com/etherpad`), adjust these URLs accordingly before usage. | If you've [decided on another hostname or path-prefix](#decide-on-a-domain-and-path) (e.g. `https://matrix.example.com/etherpad`), adjust these URLs accordingly before usage. | ||||
| @@ -55,7 +55,7 @@ If you've [decided on another hostname or path-prefix](#decide-on-a-domain-and-p | |||||
| If you want to manage and remove old unused pads from Etherpad, you will first need to able Admin access as described above. | If you want to manage and remove old unused pads from Etherpad, you will first need to able Admin access as described above. | ||||
| Then from the plugin manager page (`https://etherpad.<your-domain>/admin/plugins`, install the `adminpads2` plugin. Once installed, you should have a "Manage pads" section in the Admin web-UI. | |||||
| Then from the plugin manager page (`https://etherpad.example.com/admin/plugins`, install the `adminpads2` plugin. Once installed, you should have a "Manage pads" section in the Admin web-UI. | |||||
| ### How to use Etherpad widgets without an Integration Manager (like Dimension) | ### How to use Etherpad widgets without an Integration Manager (like Dimension) | ||||
| @@ -76,7 +76,7 @@ The Dimension configuration menu can be accessed with the sprocket icon as you b | |||||
| If you wish to disable the Etherpad chat button, you can do it by appending `?showChat=false` to the end of the pad URL, or the template. | If you wish to disable the Etherpad chat button, you can do it by appending `?showChat=false` to the end of the pad URL, or the template. | ||||
| Example: `https://etherpad.<your-domain>/p/$roomId_$padName?showChat=false` | |||||
| Example: `https://etherpad.example.com/p/$roomId_$padName?showChat=false` | |||||
| ## Known issues | ## Known issues | ||||
| @@ -21,7 +21,7 @@ If you wish to disable federation, you can do that with an empty list (`[]`), or | |||||
| By default, your server's public rooms directory is not exposed to other servers via federation. | By default, your server's public rooms directory is not exposed to other servers via federation. | ||||
| If you wish to expose it, add this to your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`): | |||||
| If you wish to expose it, add this to your configuration file (`inventory/host_vars/matrix.example.com/vars.yml`): | |||||
| ```yaml | ```yaml | ||||
| matrix_synapse_allow_public_rooms_over_federation: true | matrix_synapse_allow_public_rooms_over_federation: true | ||||
| @@ -30,7 +30,7 @@ matrix_synapse_allow_public_rooms_over_federation: true | |||||
| ## Disabling federation | ## Disabling federation | ||||
| To completely disable federation, isolating your server from the rest of the Matrix network, add this to your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`): | |||||
| To completely disable federation, isolating your server from the rest of the Matrix network, add this to your configuration file (`inventory/host_vars/matrix.example.com/vars.yml`): | |||||
| ```yaml | ```yaml | ||||
| matrix_homeserver_federation_enabled: false | matrix_homeserver_federation_enabled: false | ||||
| @@ -55,7 +55,7 @@ matrix_synapse_reverse_proxy_companion_federation_api_enabled: false | |||||
| Why? This change could be useful for people running small Synapse instances on small severs/VPSes to avoid being impacted by a simple DOS/DDOS when bandwidth, RAM, an CPU resources are limited and if your hosting provider does not provide a DOS/DDOS protection. | Why? This change could be useful for people running small Synapse instances on small severs/VPSes to avoid being impacted by a simple DOS/DDOS when bandwidth, RAM, an CPU resources are limited and if your hosting provider does not provide a DOS/DDOS protection. | ||||
| The following changes in the configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`) will allow this and make it possible to proxy the federation through a CDN such as CloudFlare or any other: | |||||
| The following changes in the configuration file (`inventory/host_vars/matrix.example.com/vars.yml`) will allow this and make it possible to proxy the federation through a CDN such as CloudFlare or any other: | |||||
| ``` | ``` | ||||
| matrix_synapse_http_listener_resource_names: ["client","federation"] | matrix_synapse_http_listener_resource_names: ["client","federation"] | ||||
| @@ -35,7 +35,7 @@ For a complete list of ntfy config options that you could put in `ntfy_configura | |||||
| ## Installing | ## Installing | ||||
| Don't forget to add `ntfy.<your-domain>` to DNS as described in [Configuring DNS](configuring-dns.md) before running the playbook. | |||||
| Don't forget to add `ntfy.example.com` to DNS as described in [Configuring DNS](configuring-dns.md) before running the playbook. | |||||
| After configuring the playbook, run the [installation](installing.md) command: | After configuring the playbook, run the [installation](installing.md) command: | ||||
| @@ -2,9 +2,9 @@ | |||||
| It can be useful to have some (visual) insight into the performance of your homeserver. | It can be useful to have some (visual) insight into the performance of your homeserver. | ||||
| You can enable this with the following settings in your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`): | |||||
| You can enable this with the following settings in your configuration file (`inventory/host_vars/matrix.example.com/vars.yml`): | |||||
| Remember to add `stats.<your-domain>` to DNS as described in [Configuring DNS](configuring-dns.md) before running the playbook. | |||||
| Remember to add `stats.example.com` to DNS as described in [Configuring DNS](configuring-dns.md) before running the playbook. | |||||
| ```yaml | ```yaml | ||||
| prometheus_enabled: true | prometheus_enabled: true | ||||
| @@ -30,7 +30,7 @@ grafana_default_admin_user: "some_username_chosen_by_you" | |||||
| grafana_default_admin_password: "some_strong_password_chosen_by_you" | grafana_default_admin_password: "some_strong_password_chosen_by_you" | ||||
| ``` | ``` | ||||
| By default, a [Grafana](https://grafana.com/) web user-interface will be available at `https://stats.<your-domain>`. | |||||
| By default, a [Grafana](https://grafana.com/) web user-interface will be available at `https://stats.example.com`. | |||||
| The retention policy of Prometheus metrics is [15 days by default](https://prometheus.io/docs/prometheus/latest/storage/#operational-aspects). Older data gets deleted automatically. | The retention policy of Prometheus metrics is [15 days by default](https://prometheus.io/docs/prometheus/latest/storage/#operational-aspects). Older data gets deleted automatically. | ||||
| @@ -43,7 +43,7 @@ Name | Description | |||||
| `prometheus_node_exporter_enabled`|[Node Exporter](https://prometheus.io/docs/guides/node-exporter/) is an addon of sorts to Prometheus that collects generic system information such as CPU, memory, filesystem, and even system temperatures | `prometheus_node_exporter_enabled`|[Node Exporter](https://prometheus.io/docs/guides/node-exporter/) is an addon of sorts to Prometheus that collects generic system information such as CPU, memory, filesystem, and even system temperatures | ||||
| `prometheus_postgres_exporter_enabled`|[Postgres Exporter](configuring-playbook-prometheus-postgres.md) is an addon of sorts to expose Postgres database metrics to Prometheus. | `prometheus_postgres_exporter_enabled`|[Postgres Exporter](configuring-playbook-prometheus-postgres.md) is an addon of sorts to expose Postgres database metrics to Prometheus. | ||||
| `matrix_prometheus_nginxlog_exporter_enabled`|[NGINX Log Exporter](configuring-playbook-prometheus-nginxlog.md) is an addon of sorts to expose NGINX logs to Prometheus. | `matrix_prometheus_nginxlog_exporter_enabled`|[NGINX Log Exporter](configuring-playbook-prometheus-nginxlog.md) is an addon of sorts to expose NGINX logs to Prometheus. | ||||
| `grafana_enabled`|[Grafana](https://grafana.com/) is the visual component. It shows (on the `stats.<your-domain>` subdomain) the dashboards with the graphs that we're interested in | |||||
| `grafana_enabled`|[Grafana](https://grafana.com/) is the visual component. It shows (on the `stats.example.com` subdomain) the dashboards with the graphs that we're interested in | |||||
| `grafana_anonymous_access`|By default you need to log in to see graphs. If you want to publicly share your graphs (e.g. when asking for help in [`#synapse:matrix.org`](https://matrix.to/#/#synapse:matrix.org?via=matrix.org&via=privacytools.io&via=mozilla.org)) you'll want to enable this option. | `grafana_anonymous_access`|By default you need to log in to see graphs. If you want to publicly share your graphs (e.g. when asking for help in [`#synapse:matrix.org`](https://matrix.to/#/#synapse:matrix.org?via=matrix.org&via=privacytools.io&via=mozilla.org)) you'll want to enable this option. | ||||
| `grafana_default_admin_user`<br>`grafana_default_admin_password`|By default Grafana creates a user with `admin` as the username and password. If you feel this is insecure and you want to change it beforehand, you can do that here | `grafana_default_admin_user`<br>`grafana_default_admin_password`|By default Grafana creates a user with `admin` as the username and password. If you feel this is insecure and you want to change it beforehand, you can do that here | ||||
| @@ -1,6 +1,6 @@ | |||||
| # Adjusting SSL certificate retrieval (optional, advanced) | # Adjusting SSL certificate retrieval (optional, advanced) | ||||
| By default, this playbook retrieves and auto-renews free SSL certificates from [Let's Encrypt](https://letsencrypt.org/) for the domains it needs (e.g. `matrix.<your-domain>` and others) | |||||
| By default, this playbook retrieves and auto-renews free SSL certificates from [Let's Encrypt](https://letsencrypt.org/) for the domains it needs (e.g. `matrix.example.com` and others) | |||||
| This guide is about using the integrated Traefik server and doesn't apply if you're using [your own webserver](configuring-playbook-own-webserver.md). | This guide is about using the integrated Traefik server and doesn't apply if you're using [your own webserver](configuring-playbook-own-webserver.md). | ||||
| @@ -26,7 +26,7 @@ While you will need some local disk space around, it's only to accommodate usage | |||||
| ## Installing | ## Installing | ||||
| After [creating the S3 bucket and configuring it](configuring-playbook-s3.md#bucket-creation-and-security-configuration), you can proceed to configure `s3-storage-provider` in your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`): | |||||
| After [creating the S3 bucket and configuring it](configuring-playbook-s3.md#bucket-creation-and-security-configuration), you can proceed to configure `s3-storage-provider` in your configuration file (`inventory/host_vars/matrix.example.com/vars.yml`): | |||||
| ```yaml | ```yaml | ||||
| matrix_synapse_ext_synapse_s3_storage_provider_enabled: true | matrix_synapse_ext_synapse_s3_storage_provider_enabled: true | ||||
| @@ -6,7 +6,7 @@ The playbook provides lots of customization variables you could use to change Sy | |||||
| Their defaults are defined in [`roles/custom/matrix-synapse/defaults/main.yml`](../roles/custom/matrix-synapse/defaults/main.yml) and they ultimately end up in the generated `/matrix/synapse/config/homeserver.yaml` file (on the server). This file is generated from the [`roles/custom/matrix-synapse/templates/synapse/homeserver.yaml.j2`](../roles/custom/matrix-synapse/templates/synapse/homeserver.yaml.j2) template. | Their defaults are defined in [`roles/custom/matrix-synapse/defaults/main.yml`](../roles/custom/matrix-synapse/defaults/main.yml) and they ultimately end up in the generated `/matrix/synapse/config/homeserver.yaml` file (on the server). This file is generated from the [`roles/custom/matrix-synapse/templates/synapse/homeserver.yaml.j2`](../roles/custom/matrix-synapse/templates/synapse/homeserver.yaml.j2) template. | ||||
| **If there's an existing variable** which controls a setting you wish to change, you can simply define that variable in your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`) and [re-run the playbook](installing.md) to apply the changes. | |||||
| **If there's an existing variable** which controls a setting you wish to change, you can simply define that variable in your configuration file (`inventory/host_vars/matrix.example.com/vars.yml`) and [re-run the playbook](installing.md) to apply the changes. | |||||
| Alternatively, **if there is no pre-defined variable** for a Synapse setting you wish to change: | Alternatively, **if there is no pre-defined variable** for a Synapse setting you wish to change: | ||||
| @@ -8,11 +8,11 @@ To configure the playbook, you need to have done the following things: | |||||
| You can then follow these steps inside the playbook directory: | You can then follow these steps inside the playbook directory: | ||||
| 1. create a directory to hold your configuration (`mkdir -p inventory/host_vars/matrix.<your-domain>`) | |||||
| 1. create a directory to hold your configuration (`mkdir -p inventory/host_vars/matrix.example.com`) | |||||
| 1. copy the sample configuration file (`cp examples/vars.yml inventory/host_vars/matrix.<your-domain>/vars.yml`) | |||||
| 1. copy the sample configuration file (`cp examples/vars.yml inventory/host_vars/matrix.example.com/vars.yml`) | |||||
| 1. edit the configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`) to your liking. You may also take a look at the various `roles/*/ROLE_NAME_HERE/defaults/main.yml` files and see if there's something you'd like to copy over and override in your `vars.yml` configuration file. | |||||
| 1. edit the configuration file (`inventory/host_vars/matrix.example.com/vars.yml`) to your liking. You may also take a look at the various `roles/*/ROLE_NAME_HERE/defaults/main.yml` files and see if there's something you'd like to copy over and override in your `vars.yml` configuration file. | |||||
| 1. copy the sample inventory hosts file (`cp examples/hosts inventory/hosts`) | 1. copy the sample inventory hosts file (`cp examples/hosts inventory/hosts`) | ||||
| @@ -11,11 +11,11 @@ There are 2 types of well-known service discovery that Matrix makes use of: | |||||
| ## Introduction to Federation Server Discovery | ## Introduction to Federation Server Discovery | ||||
| All services created by this playbook are meant to be installed on their own server (such as `matrix.<your-domain>`). | |||||
| All services created by this playbook are meant to be installed on their own server (such as `matrix.example.com`). | |||||
| As [per the Server-Server specification](https://matrix.org/docs/spec/server_server/r0.1.0.html#server-discovery), to use a Matrix user identifier like `@<username>:<your-domain>` while hosting services on a subdomain like `matrix.<your-domain>`, the Matrix network needs to be instructed of such delegation/redirection. | |||||
| As [per the Server-Server specification](https://matrix.org/docs/spec/server_server/r0.1.0.html#server-discovery), to use a Matrix user identifier like `@<username>:example.com` while hosting services on a subdomain like `matrix.example.com`, the Matrix network needs to be instructed of such delegation/redirection. | |||||
| Server delegation can be configured using DNS SRV records or by setting up a `/.well-known/matrix/server` file on the base domain (`<your-domain>`). | |||||
| Server delegation can be configured using DNS SRV records or by setting up a `/.well-known/matrix/server` file on the base domain (`example.com`). | |||||
| Both methods have their place and will continue to do so. You only need to use just one of these delegation methods. | Both methods have their place and will continue to do so. You only need to use just one of these delegation methods. | ||||
| For simplicity reasons, our setup advocates for the `/.well-known/matrix/server` method and guides you into using that. | For simplicity reasons, our setup advocates for the `/.well-known/matrix/server` method and guides you into using that. | ||||
| @@ -178,7 +178,7 @@ backend matrix-backend | |||||
| **For AWS CloudFront** | **For AWS CloudFront** | ||||
| 1. Add a custom origin with matrix.<your-domain> to your distribution | |||||
| 1. Add a custom origin with matrix.example.com to your distribution | |||||
| 1. Add two behaviors, one for `.well-known/matrix/client` and one for `.well-known/matrix/server` and point them to your new origin. | 1. Add two behaviors, one for `.well-known/matrix/client` and one for `.well-known/matrix/server` and point them to your new origin. | ||||
| Make sure to: | Make sure to: | ||||
| @@ -1,6 +1,6 @@ | |||||
| # Server Delegation | # Server Delegation | ||||
| To have a server on a subdomain (e.g. `matrix.<your-domain>`) handle Matrix federation traffic for the base domain (`<your-domain>`), we need to instruct the Matrix network of such a delegation. | |||||
| To have a server on a subdomain (e.g. `matrix.example.com`) handle Matrix federation traffic for the base domain (`example.com`), we need to instruct the Matrix network of such a delegation. | |||||
| By default, this playbook guides you into setting up [Server Delegation via a well-known file](#server-delegation-via-a-well-known-file). | By default, this playbook guides you into setting up [Server Delegation via a well-known file](#server-delegation-via-a-well-known-file). | ||||
| However, that method may have some downsides that are not to your liking. Hence this guide about alternative ways to set up Server Delegation. | However, that method may have some downsides that are not to your liking. Hence this guide about alternative ways to set up Server Delegation. | ||||
| @@ -13,7 +13,7 @@ It is a complicated matter, so unless you are affected by the [Downsides of well | |||||
| Serving a `/.well-known/matrix/server` file from the base domain is the most straightforward way to set up server delegation, but it suffers from some problems that we list in [Downsides of well-known-based Server Delegation](#downsides-of-well-known-based-server-delegation). | Serving a `/.well-known/matrix/server` file from the base domain is the most straightforward way to set up server delegation, but it suffers from some problems that we list in [Downsides of well-known-based Server Delegation](#downsides-of-well-known-based-server-delegation). | ||||
| As we already mention in [Configuring DNS](configuring-dns.md) and [Configuring Service Discovery via .well-known](configuring-well-known.md), | As we already mention in [Configuring DNS](configuring-dns.md) and [Configuring Service Discovery via .well-known](configuring-well-known.md), | ||||
| this playbook already properly guides you into setting up such delegation by means of a `/.well-known/matrix/server` file served from the base domain (`<your-domain>`). | |||||
| this playbook already properly guides you into setting up such delegation by means of a `/.well-known/matrix/server` file served from the base domain (`example.com`). | |||||
| If this is okay with you, feel free to not read ahead. | If this is okay with you, feel free to not read ahead. | ||||
| @@ -22,9 +22,9 @@ If this is okay with you, feel free to not read ahead. | |||||
| Server Delegation by means of a `/.well-known/matrix/server` file is the most straightforward, but suffers from the following downsides: | Server Delegation by means of a `/.well-known/matrix/server` file is the most straightforward, but suffers from the following downsides: | ||||
| - you need to have a working HTTPS server for the base domain (`<your-domain>`). If you don't have any server for the base domain at all, you can easily solve it by making the playbook [serve the base domain from the Matrix server](configuring-playbook-base-domain-serving.md). | |||||
| - you need to have a working HTTPS server for the base domain (`example.com`). If you don't have any server for the base domain at all, you can easily solve it by making the playbook [serve the base domain from the Matrix server](configuring-playbook-base-domain-serving.md). | |||||
| - any downtime on the base domain (`<your-domain>`) or network trouble between the matrix subdomain (`matrix.<your-domain>`) and the base `<domain>` may cause Matrix Federation outages. As the [Server-Server spec says](https://matrix.org/docs/spec/server_server/r0.1.0.html#server-discovery): | |||||
| - any downtime on the base domain (`example.com`) or network trouble between the matrix subdomain (`matrix.example.com`) and the base `<domain>` may cause Matrix Federation outages. As the [Server-Server spec says](https://matrix.org/docs/spec/server_server/r0.1.0.html#server-discovery): | |||||
| > Errors are recommended to be cached for up to an hour, and servers are encouraged to exponentially back off for repeated failures. | > Errors are recommended to be cached for up to an hour, and servers are encouraged to exponentially back off for repeated failures. | ||||
| @@ -45,25 +45,25 @@ To use DNS SRV record validation, you need to: | |||||
| - ensure that `/.well-known/matrix/server` is **not served** from the base domain, as that would interfere with DNS SRV record Server Delegation. To make the playbook **not** generate and serve the file, use the following configuration: `matrix_static_files_file_matrix_server_enabled: false`. | - ensure that `/.well-known/matrix/server` is **not served** from the base domain, as that would interfere with DNS SRV record Server Delegation. To make the playbook **not** generate and serve the file, use the following configuration: `matrix_static_files_file_matrix_server_enabled: false`. | ||||
| - ensure that you have a `_matrix._tcp` DNS SRV record for your base domain (`<your-domain>`) with a value of `10 0 8448 matrix.<your-domain>` | |||||
| - ensure that you have a `_matrix._tcp` DNS SRV record for your base domain (`example.com`) with a value of `10 0 8448 matrix.example.com` | |||||
| - ensure that you are serving the Matrix Federation API (tcp/8448) with a certificate for `<your-domain>` (not `matrix.<your-domain>`!). Getting this certificate to the `matrix.<your-domain>` server may be complicated. The playbook's automatic SSL obtaining/renewal flow will likely not work and you'll need to copy certificates around manually. See below. | |||||
| - ensure that you are serving the Matrix Federation API (tcp/8448) with a certificate for `example.com` (not `matrix.example.com`!). Getting this certificate to the `matrix.example.com` server may be complicated. The playbook's automatic SSL obtaining/renewal flow will likely not work and you'll need to copy certificates around manually. See below. | |||||
| For more details on [how to configure the playbook to work with SRV delegation](howto-srv-server-delegation.md) | For more details on [how to configure the playbook to work with SRV delegation](howto-srv-server-delegation.md) | ||||
| ### Obtaining certificates | ### Obtaining certificates | ||||
| How you can obtain a valid certificate for `<your-domain>` on the `matrix.<your-domain>` server is up to you. | |||||
| How you can obtain a valid certificate for `example.com` on the `matrix.example.com` server is up to you. | |||||
| If `<your-domain>` and `matrix.<your-domain>` are hosted on the same machine, you can let the playbook obtain the certificate for you, by following our [Obtaining SSL certificates for additional domains](configuring-playbook-ssl-certificates.md#obtaining-ssl-certificates-for-additional-domains) guide. | |||||
| If `example.com` and `matrix.example.com` are hosted on the same machine, you can let the playbook obtain the certificate for you, by following our [Obtaining SSL certificates for additional domains](configuring-playbook-ssl-certificates.md#obtaining-ssl-certificates-for-additional-domains) guide. | |||||
| If `<your-domain>` and `matrix.<your-domain>` are not hosted on the same machine, you can copy over the certificate files manually. | |||||
| If `example.com` and `matrix.example.com` are not hosted on the same machine, you can copy over the certificate files manually. | |||||
| Don't forget that they may get renewed once in a while, so you may also have to transfer them periodically. How often you do that is up to you, as long as the certificate files don't expire. | Don't forget that they may get renewed once in a while, so you may also have to transfer them periodically. How often you do that is up to you, as long as the certificate files don't expire. | ||||
| ### Serving the Federation API with your certificates | ### Serving the Federation API with your certificates | ||||
| Regardless of which method for obtaining certificates you've used, once you've managed to get certificates for your base domain onto the `matrix.<your-domain>` machine you can put them to use. | |||||
| Regardless of which method for obtaining certificates you've used, once you've managed to get certificates for your base domain onto the `matrix.example.com` machine you can put them to use. | |||||
| Based on your setup, you have different ways to go about it: | Based on your setup, you have different ways to go about it: | ||||
| @@ -82,7 +82,7 @@ Based on your setup, you have different ways to go about it: | |||||
| ### Serving the Federation API with your certificates and another webserver | ### Serving the Federation API with your certificates and another webserver | ||||
| **If you are using some other webserver**, you can set up reverse-proxying for the `tcp/8448` port by yourself. | **If you are using some other webserver**, you can set up reverse-proxying for the `tcp/8448` port by yourself. | ||||
| Make sure to use the proper certificates for `<your-domain>` (not for `matrix.<your-domain>`) when serving the `tcp/8448` port. | |||||
| Make sure to use the proper certificates for `example.com` (not for `matrix.example.com`) when serving the `tcp/8448` port. | |||||
| As recommended in our [Fronting the integrated reverse-proxy webserver with another reverse-proxy](./configuring-playbook-own-webserver.md#fronting-the-integrated-reverse-proxy-webserver-with-another-reverse-proxy) documentation section, we recommend you to expose the Matrix Federation entrypoint from traffic at a local port (e.g. `127.0.0.1:8449`), so your reverese-proxy should send traffic there. | As recommended in our [Fronting the integrated reverse-proxy webserver with another reverse-proxy](./configuring-playbook-own-webserver.md#fronting-the-integrated-reverse-proxy-webserver-with-another-reverse-proxy) documentation section, we recommend you to expose the Matrix Federation entrypoint from traffic at a local port (e.g. `127.0.0.1:8449`), so your reverese-proxy should send traffic there. | ||||
| @@ -28,9 +28,9 @@ To install Matrix services using this Ansible playbook, you need: | |||||
| - [`just`](https://github.com/casey/just) for running `just roles`, `just update`, etc. (see [`justfile`](../justfile)), although you can also run these commands manually | - [`just`](https://github.com/casey/just) for running `just roles`, `just update`, etc. (see [`justfile`](../justfile)), although you can also run these commands manually | ||||
| - An HTTPS-capable web server at the base domain name (`<your-domain>`) which is capable of serving static files. Unless you decide to [Serve the base domain from the Matrix server](configuring-playbook-base-domain-serving.md) or alternatively, to use DNS SRV records for [Server Delegation](howto-server-delegation.md). | |||||
| - An HTTPS-capable web server at the base domain name (`example.com`) which is capable of serving static files. Unless you decide to [Serve the base domain from the Matrix server](configuring-playbook-base-domain-serving.md) or alternatively, to use DNS SRV records for [Server Delegation](howto-server-delegation.md). | |||||
| - Properly configured DNS records for `<your-domain>` (details in [Configuring DNS](configuring-dns.md)). | |||||
| - Properly configured DNS records for `example.com` (details in [Configuring DNS](configuring-dns.md)). | |||||
| - Some TCP/UDP ports open. This playbook (actually [Docker itself](https://docs.docker.com/network/iptables/)) configures the server's internal firewall for you. In most cases, you don't need to do anything special. But **if your server is running behind another firewall**, you'd need to open these ports: | - Some TCP/UDP ports open. This playbook (actually [Docker itself](https://docs.docker.com/network/iptables/)) configures the server's internal firewall for you. In most cases, you don't need to do anything special. But **if your server is running behind another firewall**, you'd need to open these ports: | ||||
| @@ -34,7 +34,7 @@ ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=<your-usern | |||||
| /matrix/synapse/bin/register-user <your-username> <your-password> <admin access: 0 or 1> | /matrix/synapse/bin/register-user <your-username> <your-password> <admin access: 0 or 1> | ||||
| ``` | ``` | ||||
| **Note**: `<your-username>` is just a plain username (like `john`), not your full `@<username>:<your-domain>` identifier. | |||||
| **Note**: `<your-username>` is just a plain username (like `john`), not your full `@<username>:example.com` identifier. | |||||
| **You can then log in with that user** via the Element service that this playbook has created for you at a URL like this: `https://element.<domain>/`. | **You can then log in with that user** via the Element service that this playbook has created for you at a URL like this: `https://element.<domain>/`. | ||||
| @@ -8,7 +8,7 @@ You can reset a user's password via the Ansible playbook (make sure to edit the | |||||
| ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=<your-username> password=<your-password>' --tags=update-user-password | ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=<your-username> password=<your-password>' --tags=update-user-password | ||||
| ``` | ``` | ||||
| **Note**: `<your-username>` is just a plain username (like `john`), not your full `@<username>:<your-domain>` identifier. | |||||
| **Note**: `<your-username>` is just a plain username (like `john`), not your full `@<username>:example.com` identifier. | |||||
| **You can then log in with that user** via the Element service that this playbook has created for you at a URL like this: `https://element.<domain>/`. | **You can then log in with that user** via the Element service that this playbook has created for you at a URL like this: `https://element.<domain>/`. | ||||
| @@ -18,4 +18,4 @@ | |||||
| # to the host line below. | # to the host line below. | ||||
| [matrix_servers] | [matrix_servers] | ||||
| matrix.<your-domain> ansible_host=<your-server's external IP address> ansible_ssh_user=root | |||||
| matrix.example.com ansible_host=<your-server's external IP address> ansible_ssh_user=root | |||||
| @@ -4,7 +4,7 @@ This directory contains sample files that show you how to front the integrated [ | |||||
| ## Prerequisite configuration | ## Prerequisite configuration | ||||
| To get started, first follow the [front the integrated reverse-proxy webserver with another reverse-proxy](../../../docs/configuring-playbook-own-webserver.md#fronting-the-integrated-reverse-proxy-webserver-with-another-reverse-proxy) instructions and update your playbook's configuration (`inventory/host_vars/matrix.<your-domain>/vars.yml`). | |||||
| To get started, first follow the [front the integrated reverse-proxy webserver with another reverse-proxy](../../../docs/configuring-playbook-own-webserver.md#fronting-the-integrated-reverse-proxy-webserver-with-another-reverse-proxy) instructions and update your playbook's configuration (`inventory/host_vars/matrix.example.com/vars.yml`). | |||||
| ## Using the Apache configuration | ## Using the Apache configuration | ||||
| @@ -7,7 +7,7 @@ This directory contains a sample config that shows you how to front the integrat | |||||
| ## Prerequisite configuration | ## Prerequisite configuration | ||||
| To get started, first follow the [front the integrated reverse-proxy webserver with another reverse-proxy](../../../docs/configuring-playbook-own-webserver.md#fronting-the-integrated-reverse-proxy-webserver-with-another-reverse-proxy) instructions and update your playbook's configuration (`inventory/host_vars/matrix.<your-domain>/vars.yml`). | |||||
| To get started, first follow the [front the integrated reverse-proxy webserver with another reverse-proxy](../../../docs/configuring-playbook-own-webserver.md#fronting-the-integrated-reverse-proxy-webserver-with-another-reverse-proxy) instructions and update your playbook's configuration (`inventory/host_vars/matrix.example.com/vars.yml`). | |||||
| Then, adjust your Caddy `docker-compose.yaml` file (if you're using docker-compose for running your Caddy container). See [examples/reverse-proxies/caddy2-in-container/docker-compose.yaml](./docker-compose.yaml). | Then, adjust your Caddy `docker-compose.yaml` file (if you're using docker-compose for running your Caddy container). See [examples/reverse-proxies/caddy2-in-container/docker-compose.yaml](./docker-compose.yaml). | ||||
| @@ -5,7 +5,7 @@ This directory contains a sample config that shows you how to front the integrat | |||||
| ## Prerequisite configuration | ## Prerequisite configuration | ||||
| To get started, first follow the [front the integrated reverse-proxy webserver with another reverse-proxy](../../../docs/configuring-playbook-own-webserver.md#fronting-the-integrated-reverse-proxy-webserver-with-another-reverse-proxy) instructions and update your playbook's configuration (`inventory/host_vars/matrix.<your-domain>/vars.yml`). | |||||
| To get started, first follow the [front the integrated reverse-proxy webserver with another reverse-proxy](../../../docs/configuring-playbook-own-webserver.md#fronting-the-integrated-reverse-proxy-webserver-with-another-reverse-proxy) instructions and update your playbook's configuration (`inventory/host_vars/matrix.example.com/vars.yml`). | |||||
| ## Using the Caddyfile | ## Using the Caddyfile | ||||
| @@ -7,7 +7,7 @@ This page summarizes how to use Nginx Proxy Manager (NPM) to front the integrate | |||||
| ## Prerequisite configuration | ## Prerequisite configuration | ||||
| To get started, first follow the [front the integrated reverse-proxy webserver with another reverse-proxy](../../../docs/configuring-playbook-own-webserver.md#fronting-the-integrated-reverse-proxy-webserver-with-another-reverse-proxy) instructions and update your playbook's configuration (`inventory/host_vars/matrix.<your-domain>/vars.yml`). | |||||
| To get started, first follow the [front the integrated reverse-proxy webserver with another reverse-proxy](../../../docs/configuring-playbook-own-webserver.md#fronting-the-integrated-reverse-proxy-webserver-with-another-reverse-proxy) instructions and update your playbook's configuration (`inventory/host_vars/matrix.example.com/vars.yml`). | |||||
| If Matrix federation is enabled, then you will need to make changes to [NPM's Docker configuration](https://nginxproxymanager.com/guide/#quick-setup). By default NPM already exposes ports `80` and `443`, but you would also need to **additionally expose the Matrix Federation port** (as it appears on the public side): `8448`. | If Matrix federation is enabled, then you will need to make changes to [NPM's Docker configuration](https://nginxproxymanager.com/guide/#quick-setup). By default NPM already exposes ports `80` and `443`, but you would also need to **additionally expose the Matrix Federation port** (as it appears on the public side): `8448`. | ||||
| @@ -5,7 +5,7 @@ This directory contains a sample config that shows you how to use the [nginx](ht | |||||
| ## Prerequisite configuration | ## Prerequisite configuration | ||||
| To get started, first follow the [front the integrated reverse-proxy webserver with another reverse-proxy](../../../docs/configuring-playbook-own-webserver.md#fronting-the-integrated-reverse-proxy-webserver-with-another-reverse-proxy) instructions and update your playbook's configuration (`inventory/host_vars/matrix.<your-domain>/vars.yml`). | |||||
| To get started, first follow the [front the integrated reverse-proxy webserver with another reverse-proxy](../../../docs/configuring-playbook-own-webserver.md#fronting-the-integrated-reverse-proxy-webserver-with-another-reverse-proxy) instructions and update your playbook's configuration (`inventory/host_vars/matrix.example.com/vars.yml`). | |||||
| ## Using the nginx configuration | ## Using the nginx configuration | ||||
| @@ -7,7 +7,7 @@ | |||||
| # to connect them all together. It does so by overriding role variables. | # to connect them all together. It does so by overriding role variables. | ||||
| # | # | ||||
| # You can also override ANY variable (seen here or in any given role), | # You can also override ANY variable (seen here or in any given role), | ||||
| # by re-defining it in your own configuration file (`inventory/host_vars/matrix.<your-domain>`). | |||||
| # by re-defining it in your own configuration file (`inventory/host_vars/matrix.example.com`). | |||||
| ######################################################################## | ######################################################################## | ||||
| # # | # # | ||||