matrix-docker-ansible-deploy/docs/prerequisites.md

62 lines
6.1 KiB
Markdown
Raw Normal View History

# Prerequisites
<sup>Prerequisites > [Configuring your DNS settings](configuring-dns.md) > [Getting the playbook](getting-the-playbook.md) > [Configuring the playbook](configuring-playbook.md) > [Installing](installing.md)</sup>
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.
2021-01-21 10:39:03 +00:00
Add "Quick start" guide (#3801) * Add docs/quick-start.md Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org> * Add description about keeping the playbook and services up-to-date Also: move descriptions about difference between the playbook tags (setup-all and install-all) and about the just "recipe" from installing.md to maintenance-upgrading-services.md Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org> * Replace <your-username> with YOUR_USERNAME_HERE This is a common expression and should avoid misunderstanding that `<` and `>` would need to be included Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org> * Replace <your-password> with YOUR_PASSWORD_HERE Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org> * Change the link to 'Quick start' on the breadcrumbs from README.md to quick-start.md Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org> * Add a link to quick-start.md on the "Getting started" section Since I am not quite sure whether the link to prerequisites.md should be replaced in favor of this link, this commit leaves it as it is for now. Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org> * Add a link to quick-start.md on docs/README.md Since I am not quite sure whether the link to prerequisites.md should be replaced in favor of this link, this commit leaves it as it is for now. Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org> * Add note about using "example.com" as an example domain Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org> * Remove backticks from command examples to register a user Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org> * Apply suggestions from code review Co-authored-by: Slavi Pantaleev <slavi@devture.com> * Improve notes for instruction to create a user account Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org> * Add details about delegation to installing.md and quick-start.md Some information is omitted on quick-start.md in favor of installing.md to keep the quick start guide simple. Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org> * Update docs/quick-start.md: add the breadcrumb header Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org> * Edit docs/quick-start.md: run the setup command with install-all by default Refer docs/maintenance-upgrading-services.md Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org> * Revert "Update docs/quick-start.md: add the breadcrumb header" This reverts commit 9a6e1cf14c7638953fc8fbb8b487ea0afd0a41ad. As the quick start guide is standalone. * Update docs/quick-start.md: add headers inside the install section These headers should make it perfectly clear that there are two steps to be done to install with the playbook Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org> * Update quick-start.md * Update docs/registering-users.md: notes for manual user registeration Copy the same notes from quick-start.md Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org> * Reword some things in quick start * Add alternative to `just roles` * Update docs/configuring-dns.md: sync with docs/quick-start.md Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org> * Update docs/quick-start.md: add a link to docs/registering-users.md for an instruction to add user accounts Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org> * Update docs/registering-users.md and docs/updating-users-passwords.md: remove "your" from username and password placeholders These documentations, unlike docs/installing.md and docs/quick-start.md, describe how to handle users (registering them or changing their passwords), some of whom are yours, while others are not. Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org> * Update docs/installing.md: add "your" to make it clear that it is "your" account that is going to be created Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org> * Update docs/installing.md and docs/quick-start.md: mention "make roles" This commit adds mentions to "make roles" and a note about the preference of ansible-playbook commands over the just "recipes". quick-start.md intends to be referred by those who have never used the playbook to set up a server, so it is safer to regard that it is not clear to them what exactly the just "recipes" are made of, ie. it takes some time and experience until someone understands simplicity of them. For beginners, I believe that we should prefer the basics over simplicity, from the educational point of view. If someone feels tired of using the same command repetitively, then the person will have been already well accustomed to the way how the playbook works and how the server is supposed to be maintained, and the person is "qualified" to use the just "recipes", and should be able to use them with confidence, distinguishing the playbook tags from the "recipes", for example, from "just install-all" and "ansible-playbook -i inventory/hosts setup.yml --tags=install-all". Such level of familiarity and experience should not be expected on the quick start guide. Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org> * Update instructions to update Ansible roles Also: move the detailed explanation about "just roles" from installing.md to maintenance-upgrading-services.md TBD: create a dedicated documentation for the "just" program and the concept of its "recipe" (shortcut of commands) Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org> * Add a note about cases to create multiple accounts/users Since one of the quick start guide's goals is to set up an own user account, this commit adds the note about creating multiple accounts/users to installing.md and registering-users.md only. It should be fine as registering-users.md is linked from quick-start.md Also: - On installing.md and quick-start.md, change instruction from what encourages to select "admin=yes" or "admin=no" to what encourages to use "admin=yes", since your user account will be the sole user on the server, as long as you set up the server by following the documentation - Remove the link to registering-users.md from quick-start.md as the documentation is already linked above, under the header of the section - Sync docs/installing.md with other documentation Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org> * Remove a line about setting "admin=yes" to reduce the amount of information Because quick-start.md is getting longer with much information, it removes the note in favor of the linked registering-users.md documentation. The note is available on installing.md as well, and details about adding user accounts for other people can (and should) be checked on those documentations. Also, this commit edits lines above these notes to make it clear that your user account will be an administrator of the server. With this commit, the amount of the information about adding user accounts will be: registering-users.md > installing.md > quick-start.md Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org> * Fix a broken anchor link on docs/installing.md Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org> * Replace repetitive information about upgrading with an anchor link to docs/maintenance-upgrading-services.md Because details to update/upgrade the Matrix services is not necessary for quick start and the amount of information should be reduced from the viewpoint of maintainability, this commit removes details to update/upgrade from quick-start.md Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org> * Update docs/quick-start.md: add a note about keeping it tidy and simple Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org> * Update docs/maintenance-checking-services.md and docs/quick-start.md: add instruction to use federation tester against the base domain Per Slavi's suggestion. Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org> * Update docs/installing.md and docs/quick-start.md: replace commands to finalize the installation Per Slavi's suggestion. Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org> * Clarify install-matrix-static-files to avoid confusion with install-all; Minor consistency improvements --------- Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org> Co-authored-by: Suguru Hirahara <acioustick@noreply.codeberg.org> Co-authored-by: Slavi Pantaleev <slavi@devture.com>
2024-11-23 07:59:29 +00:00
We will be using `example.com` as the domain in the following instruction. Please remember to replace it with your own domain before running any commands.
**Note**: if you do not have an existing Matrix server and want to start quickly with "opinionated defaults", we suggest you to follow ⚡ **[Quick start](quick-start.md)** installation guide.
## Your local computer
- [Ansible](http://ansible.com/) program. It's used to run this playbook and configures your server for you. Take a look at [our guide about Ansible](ansible.md) for more information, as well as [version requirements](ansible.md#supported-ansible-versions) and alternative ways to run Ansible.
- [passlib](https://passlib.readthedocs.io/en/stable/index.html) Python library. See [this official documentation](https://passlib.readthedocs.io/en/stable/install.html#installation-instructions) for an instruction to install it. On most distros, you need to install some `python-passlib` or `py3-passlib` package, etc.
- [`git`](https://git-scm.com/) as the recommended way to download the playbook. `git` may also be required on the server if you will be [self-building](self-building.md) components.
- [`just`](https://github.com/casey/just) for running `just roles`, `just update`, etc. (see [`justfile`](../justfile)), although you can also run these commands manually. Take at look at this documentation for more information: [Running `just` commands](just.md).
- 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 adopted [`pwgen`](https://linux.die.net/man/1/pwgen) (running `pwgen -s 64 1`). [Password Tech](https://pwgen-win.sourceforge.io/), 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.
## Server
- (Recommended) An **x86** server ([What kind of server specs do I need?](faq.md#what-kind-of-server-specs-do-i-need)) running one of these operating systems that make use of [systemd](https://systemd.io/):
- **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](ansible.md#supported-ansible-versions) 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.
2021-01-13 17:39:08 +00:00
This playbook somewhat supports running on non-`amd64` architectures like ARM. See [Alternative Architectures](alternative-architectures.md).
2021-01-13 17:39:08 +00:00
If your distro runs within an [LXC container](https://linuxcontainers.org/), you may hit [this issue](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/703). 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 to `root` via `sudo`).
- [Python](https://www.python.org/). 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](https://docs.ansible.com/ansible/latest/reference_appendices/interpreter_discovery.html) (2 vs 3) and you may need to explicitly specify the interpreter path in `inventory/hosts` during installation (e.g. `ansible_python_interpreter=/usr/bin/python3`)
- [sudo](https://www.sudo.ws/), even when you've configured Ansible to log in as `root`. Some distributions, like a minimal Debian net install, do not include the `sudo` 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](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 `example.com` (details in [Configuring DNS](configuring-dns.md)).
2022-10-20 08:48:56 +00:00
- 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:
- `80/tcp`: HTTP webserver
- `443/tcp` and `443/udp`: 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` and `8448/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 access `openid` 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.
---------------------------------------------
[▶️](configuring-dns.md) When ready to proceed, continue with [Configuring DNS](configuring-dns.md).