matrix-docker-ansible-deploy/docs/prerequisites.md
Slavi Pantaleev c07c927d9f Automatically enable openid listeners when ma1sd enabled
ma1sd requires the openid endpoints for certain functionality.
Example: 90b2b5301c/src/main/java/io/kamax/mxisd/auth/AccountManager.java (L67-L99)

If federation is disabled, we still need to expose these openid APIs on the
federation port.

Previously, we were doing similar magic for Dimension.
As per its documentation, when running unfederated, one is to enable
the openid listener as well. As per their recommendation, people
are advised to do enable it on the Client-Server API port
and use the `federationUrl` variable to override where the federation
port is (making federation requests go to the Client-Server API).

Because ma1sd always uses the federation port (unless you do some
DNS overwriting magic using its configuration -- which we'd rather not
do), it's better if we just default to putting the `openid` listener
where it belongs - on the federation port.

With this commit, we retain the "automatically enable openid APIs" thing
we've been doing for Dimension, but move it to the federation port instead.
We also now do the same thing when ma1sd is enabled.
2020-12-08 16:59:20 +02:00

3.4 KiB

Prerequisites

This playbook doesn't support running on ARM (see this issue), however a minimal subset of the tools can be built on the host, which may result in a working configuration, even on a Raspberry pi (see Alternative Architectures). We only strive to support released stable versions of distributions, not betas or pre-releases. This playbook can take over your whole server or co-exist with other services that you have there.

  • root access to your server (or a user capable of elevating to root via sudo).

  • Python being installed on the server. Most distributions install Python by default, but some don't (e.g. Ubuntu 18.04) and require manual installation (something like apt-get install python).

  • A cron-like tool installed on the server such as cron or anacron to automatically schedule the Let's Encrypt SSL certificates's renewal. This can be ignored if you use your own SSL certificates.

  • The Ansible program being installed on your own computer. It's used to run this playbook and configures your server for you. Take a look at our guide about Ansible for more information, as well as version requirements and alternative ways to run Ansible.

  • Either the dig tool or python-dns installed on your own computer. Used later on, by the playbook's services check feature.

  • 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 or alternatively, to use DNS SRV records for Server Delegation.

  • Properly configured DNS records for <your-domain> (details in Configuring DNS).

  • Some TCP/UDP ports open. This playbook 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:

    • 80/tcp: HTTP webserver
    • 443/tcp: HTTPS webserver
    • 3478/tcp: TURN over TCP (used by Coturn)
    • 3478/udp: TURN over UDP (used by Coturn)
    • 5349/tcp: TURN over TCP (used by Coturn)
    • 5349/udp: TURN over UDP (used by Coturn)
    • 8448/tcp: Matrix Federation API HTTPS webserver. In some cases, this may necessary even with federation disabled. Integration Servers (like Dimension) and Identity Servers (like ma1sd) may need to access openid APIs on the federation port.
    • the range 49152-49172/udp: TURN over UDP
    • 4443/tcp: Jitsi Harvester fallback
    • 10000/udp: Jitsi video RTP. Depending on your firewall/NAT setup, incoming RTP packets on port 10000 may have the external IP of your firewall as destination address, due to the usage of STUN in JVB (see matrix_jitsi_jvb_stun_servers).

When ready to proceed, continue with Configuring DNS.