⚡️Quick start | Prerequisites > Configuring your DNS settings > Getting the playbook > Configuring the playbook > Installing
To install Matrix services using this Ansible playbook, you need to prepare several requirements both on your local computer (where you will run the playbook to configure the server) and the server (where the playbook will install the Matrix services for you). These requirements need to be set up manually before proceeding to the next step.
-
Ansible program. 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.
-
passlib Python library. See this official documentation for an instruction to install it. On most distros, you need to install some
python-passlib
orpy3-passlib
package, etc. -
git
as the recommended way to download the playbook.git
may also be required on the server if you will be self-building components. -
just
for runningjust roles
,just update
, etc. (seejustfile
), although you can also run these commands manually -
Strong password (random strings) generator. The playbook often requires you to create a strong password and use it for settings on
vars.yml
, components, etc. As any tools should be fine, this playbook has adoptedpwgen
(runningpwgen -s 64 1
). Password Tech, formerly known as "PWGen for Windows", is available as free and open source password generator for Windows. Generally, using a random generator available on the internet is not recommended.
-
(Recommended) An x86 server (What kind of server specs do I need?) running one of these operating systems that make use of systemd:
- Archlinux
- CentOS, Rocky Linux, AlmaLinux, or possibly other RHEL alternatives (although your mileage may vary)
- Debian (10/Buster or newer)
- Ubuntu (18.04 or newer, although 20.04 may be problematic if you run the Ansible playbook on it)
Generally, newer is better. 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.
This playbook somewhat supports running on non-
amd64
architectures like ARM. See Alternative Architectures.If your distro runs within an LXC container, you may hit this issue. It can be worked around, if absolutely necessary, but we suggest that you avoid running from within an LXC container.
-
root
access to your server (or a user capable of elevating toroot
viasudo
). -
Python. Most distributions install Python by default, but some don't (e.g. Ubuntu 18.04) and require manual installation (something like
apt-get install python3
). On some distros, Ansible may incorrectly detect the Python version (2 vs 3) and you may need to explicitly specify the interpreter path ininventory/hosts
during installation (e.g.ansible_python_interpreter=/usr/bin/python3
) -
sudo, even when you've configured Ansible to log in as
root
. Some distributions, like a minimal Debian net install, do not include thesudo
package by default. -
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 or alternatively, to use DNS SRV records for Server Delegation. -
Properly configured DNS records for
example.com
(details in Configuring DNS). -
Some TCP/UDP ports open. This playbook (actually Docker itself) 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 webserver443/tcp
and443/udp
: HTTPS webserver3478/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
and8448/udp
: 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 accessopenid
APIs on the federation port.- the range
49152-49172/udp
: TURN over UDP - potentially some other ports, depending on the additional (non-default) services that you enable in the configuring the playbook step (later on). Consult each service's documentation page in
docs/
for that.