diff --git a/README.md b/README.md index b1fcec35f..a55def0f7 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,8 @@ While the [list of supported services](#-supported-services) and documentation i - Starting with the basics. You can always add/remove or tweak services later on. - Following our guided installation, starting with the [Prerequisites](./docs/prerequisites.md) documentation page +If you have never configured Matrix services, follow the [**quick start**](./docs/quick-start.md) guide to set up minimum core services on your server. + ## ✔ Supported services Using this playbook, you can get the following list of services configured on your server. Basically, this playbook aims to get you up-and-running with all the necessities around Matrix, without you having to do anything else. diff --git a/docs/README.md b/docs/README.md index 32ad1cfe5..1b681bc88 100644 --- a/docs/README.md +++ b/docs/README.md @@ -2,6 +2,8 @@ - [FAQ](faq.md) - lots of questions and answers. Jump to [Prerequisites](prerequisites.md) to avoid reading too much and to just start a guided installation. +- [Quick start](quick-start.md) - follow the guide to set up minimum core services on your server + - [Prerequisites](prerequisites.md) - go here to a guided installation using this Ansible playbook - [Configuring your DNS settings](configuring-dns.md) diff --git a/docs/configuring-dns.md b/docs/configuring-dns.md index ac0dbd19b..2e2cd6bae 100644 --- a/docs/configuring-dns.md +++ b/docs/configuring-dns.md @@ -1,6 +1,6 @@ # Configuring your DNS settings -⚡️[Quick start](README.md) | [Prerequisites](prerequisites.md) > Configuring your DNS settings > [Getting the playbook](getting-the-playbook.md) > [Configuring the playbook](configuring-playbook.md) > [Installing](installing.md) +⚡️[Quick start](quick-start.md) | [Prerequisites](prerequisites.md) > Configuring your DNS settings > [Getting the playbook](getting-the-playbook.md) > [Configuring the playbook](configuring-playbook.md) > [Installing](installing.md) To set up Matrix on your domain, you'd need to do some DNS configuration. @@ -36,7 +36,7 @@ The `element.example.com` subdomain is necessary, because this playbook installs Be mindful as to how long it will take for the DNS records to propagate. -If you are using Cloudflare DNS, make sure to disable the proxy and set all records to `DNS only`. Otherwise, fetching certificates will fail. +If you are using Cloudflare DNS, make sure to disable the proxy and set all records to "DNS only". Otherwise, fetching certificates will fail. ## DNS settings for optional services/features diff --git a/docs/configuring-playbook.md b/docs/configuring-playbook.md index 50cb3ec60..c2eef40b8 100644 --- a/docs/configuring-playbook.md +++ b/docs/configuring-playbook.md @@ -1,6 +1,6 @@ # Configuring the playbook -⚡️[Quick start](README.md) | [Prerequisites](prerequisites.md) > [Configuring your DNS settings](configuring-dns.md) > [Getting the playbook](getting-the-playbook.md) > Configuring the playbook > [Installing](installing.md) +⚡️[Quick start](quick-start.md) | [Prerequisites](prerequisites.md) > [Configuring your DNS settings](configuring-dns.md) > [Getting the playbook](getting-the-playbook.md) > Configuring the playbook > [Installing](installing.md) If you've configured your DNS records and retrieved the playbook's source code to your computer, you can start configuring the playbook. To do so, follow these steps inside the playbook directory: diff --git a/docs/getting-the-playbook.md b/docs/getting-the-playbook.md index f25d78bfb..07d5154f5 100644 --- a/docs/getting-the-playbook.md +++ b/docs/getting-the-playbook.md @@ -1,6 +1,6 @@ # Getting the playbook -⚡️[Quick start](README.md) | [Prerequisites](prerequisites.md) > [Configuring your DNS settings](configuring-dns.md) > Getting the playbook > [Configuring the playbook](configuring-playbook.md) > [Installing](installing.md) +⚡️[Quick start](quick-start.md) | [Prerequisites](prerequisites.md) > [Configuring your DNS settings](configuring-dns.md) > Getting the playbook > [Configuring the playbook](configuring-playbook.md) > [Installing](installing.md) This Ansible playbook is meant to be executed on your own computer (not the Matrix server). diff --git a/docs/installing.md b/docs/installing.md index f6b61d5ef..4fa1766de 100644 --- a/docs/installing.md +++ b/docs/installing.md @@ -1,16 +1,19 @@ # Installing -⚡️[Quick start](README.md) | [Prerequisites](prerequisites.md) > [Configuring your DNS settings](configuring-dns.md) > [Getting the playbook](getting-the-playbook.md) > [Configuring the playbook](configuring-playbook.md) > Installing +⚡️[Quick start](quick-start.md) | [Prerequisites](prerequisites.md) > [Configuring your DNS settings](configuring-dns.md) > [Getting the playbook](getting-the-playbook.md) > [Configuring the playbook](configuring-playbook.md) > Installing If you've configured your DNS records and the playbook, you can start the installation procedure. ## Update Ansible roles -Before installing, you need to update the Ansible roles in this playbook by running `just roles`. +Before installing, you need to update the Ansible roles that this playbook uses and fetches from outside. -`just roles` is a shortcut (a `roles` target defined in [`justfile`](../justfile) and executed by the [`just`](https://github.com/casey/just) utility) which ultimately runs [agru](https://github.com/etkecc/agru) or [ansible-galaxy](https://docs.ansible.com/ansible/latest/cli/ansible-galaxy.html) (depending on what is available in your system) to download Ansible roles. If you don't have `just`, you can also manually run the `roles` commands seen in the `justfile`. +To update your playbook directory and all upstream Ansible roles (defined in the `requirements.yml` file), run: -There's another shortcut (`just update`) which updates the playbook (`git pull`) and updates roles (`just roles`) at the same time. +- either: `just update` +- or: a combination of `git pull` and `just roles` (or `make roles` if you have `make` program on your computer instead of `just`) + +If you don't have either `just` tool or `make` program, you can run the `ansible-galaxy` tool directly: `rm -rf roles/galaxy; ansible-galaxy install -r requirements.yml -p roles/galaxy/ --force` ## Install Matrix server and services @@ -74,18 +77,21 @@ As you have configured your brand new server and the client, you need to **creat After creating the user account, you can log in to it with [Element Web](configuring-playbook-client-element-web.md) that this playbook has installed for you at this URL: `https://element.example.com/`. -To register a user via this Ansible playbook, run the command below on your local computer. +To create your user account (as an administrator of the server) via this Ansible playbook, run the command below on your local computer. **Notes**: -- Before running it, make sure to edit `YOUR_USERNAME_HERE` and `YOUR_PASSWORD_HERE` -- In the command below, `YOUR_USERNAME_HERE` is just a plain username (like `john`), not your full `@user:example.com` identifier +- Make sure to adjust `YOUR_USERNAME_HERE` and `YOUR_PASSWORD_HERE` +- For `YOUR_USERNAME_HERE`, use a plain username like `john`, not your full identifier (`@user:example.com`) +- Use `admin=yes` to make your user account an administrator of the Matrix server ```sh -ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=YOUR_USERNAME_HERE password=YOUR_PASSWORD_HERE admin=' --tags=register-user +ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=YOUR_USERNAME_HERE password=YOUR_PASSWORD_HERE admin=yes' --tags=register-user -# Example: `ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=john password=secret-password admin=yes' --tags=register-user` +# Example: ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=john password=secret-password admin=yes' --tags=register-user ``` +Feel free to create as many accounts (for friends, family, etc.) as you want. Still, perhaps you should grant full administrative access to your account only (with `admin=yes`), and others should be created with `admin=no`. + For more information, see the documentation for [registering users](registering-users.md). ## Finalize the installation @@ -94,20 +100,21 @@ Now you've configured Matrix services and your user account, you need to **final This is required for federation to work! Without a proper configuration, your server will effectively not be part of the Matrix network. -If you need the base domain for anything else such as hosting a website, you have to configure it manually, following the procedure described on the linked documentation. +To configure the delegation, you have these two options. Choose one of them according to your situation. -However, if you do not need the base domain for anything else, the easiest way of configuring it is to [serve the base domain](configuring-playbook-base-domain-serving.md) from the integrated web server. It will enable you to use a Matrix user identifier like `@:example.com` while hosting services on a subdomain like `matrix.example.com`. +- If you can afford to point the base domain at the Matrix server, follow the instructions below which guide you into [serving the base domain](configuring-playbook-base-domain-serving.md) from the integrated web server. It will enable you to use a Matrix user identifier like `@:example.com` while hosting services on a subdomain like `matrix.example.com`. +- Alternatively, if you're using the base domain for other purposes and cannot point it to the Matrix server (and thus cannot "serve the base domain" from it), you most likely need to [manually install well-known files on the base domain's server](configuring-well-known.md#manually-installing-well-known-files-on-the-base-domains-server), but feel free to familiarize yourself with all [server delegation (redirection) options](howto-server-delegation.md). -To configure server delegation in this way, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: +To have the base domain served from the integrated web server, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: ```yaml matrix_static_files_container_labels_base_domain_enabled: true ``` -After configuring the playbook, run the installation command: +After configuring the playbook, run the command below: ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=install-all,start +ansible-playbook -i inventory/hosts setup.yml --tags=install-matrix-static-files,start ``` ## Things to do next @@ -125,8 +132,12 @@ After finilizing the installation, you can: ### Maintaining your setup in the future -Feel free to **re-run the setup command any time** you think something is off with the server configuration. Ansible will take your configuration and update your server to match. To update the playbook and the Ansible roles in the playbook, simply run `just roles`. +While this playbook helps you to set up Matrix services and maintain them, it will **not** automatically run the maintenance task for you. You will need to update the playbook and re-run it **manually**. -Note that if you remove components from `vars.yml`, or if we switch some component from being installed by default to not being installed by default anymore, you'd need to run the setup command with `--tags=setup-all` instead of `--tags=install-all`. See [this page on the playbook tags](playbook-tags.md) for more information. +The upstream projects, which this playbook makes use of, occasionally if not often suffer from security vulnerabilities. -A way to invoke these `ansible-playbook` commands with less typing in the future is to use [just](https://github.com/casey/just) to run the "recipe": `just install-all` or `just setup-all`. See [our `justfile`](../justfile) for more information. +Since it is unsafe to keep outdated services running on the server connected to the internet, please consider to update the playbook and re-run it periodically, in order to keep the services up-to-date. + +For more information about upgrading or maintaining services with the playbook, take at look at this page: [Upgrading the Matrix services](maintenance-upgrading-services.md) + +Feel free to **re-run the setup command any time** you think something is off with the server configuration. Ansible will take your configuration and update your server to match. diff --git a/docs/maintenance-checking-services.md b/docs/maintenance-checking-services.md index 151a5778b..457cd0f47 100644 --- a/docs/maintenance-checking-services.md +++ b/docs/maintenance-checking-services.md @@ -10,4 +10,4 @@ ansible-playbook -i inventory/hosts setup.yml --tags=self-check If it's all green, everything is probably running correctly. -Besides this self-check, you can also check your server using the [Federation Tester](https://federationtester.matrix.org/). +Besides this self-check, you can also check whether your server federates with the Matrix network by using the [Federation Tester](https://federationtester.matrix.org/) against your base domain (`example.com`), not the `matrix.example.com` subdomain. diff --git a/docs/maintenance-upgrading-services.md b/docs/maintenance-upgrading-services.md index ea7ffb4d7..4985987ab 100644 --- a/docs/maintenance-upgrading-services.md +++ b/docs/maintenance-upgrading-services.md @@ -2,17 +2,39 @@ This playbook not only installs the various Matrix services for you, but can also upgrade them as new versions are made available. +While this playbook helps you to set up Matrix services and maintain them, it will **not** automatically run the maintenance task for you. You will need to update the playbook and re-run it **manually**. + +The upstream projects, which this playbook makes use of, occasionally if not often suffer from security vulnerabilities (for example, see [here](https://github.com/element-hq/element-web/security) for known ones on Element Web). + +Since it is unsafe to keep outdated services running on the server connected to the internet, please consider to update the playbook and re-run it periodically, in order to keep the services up-to-date. + +The developers of this playbook strive to maintain the playbook updated, so that you can re-run the playbook to address such vulnerabilities. It is **your responsibility** to keep your server and the services on it up-to-date. + If you want to be notified when new versions of Synapse are released, you should join the Synapse Homeowners room: [#homeowners:matrix.org](https://matrix.to/#/#homeowners:matrix.org). -To upgrade services: +## Steps to upgrade the Matrix services + +Before updating the playbook and the Ansible roles in the playbook, take a look at [the changelog](../CHANGELOG.md) to see if there have been any backward-incompatible changes that you need to take care of. + +If it looks good to you, go to the `matrix-docker-ansible-deploy` directory, then: - update your playbook directory and all upstream Ansible roles (defined in the `requirements.yml` file) using: - either: `just update` - - or: a combination of `git pull` and `just roles` (or `make roles`) + - or: a combination of `git pull` and `just roles` (or `make roles` if you have `make` program on your computer instead of `just`) -- take a look at [the changelog](../CHANGELOG.md) to see if there have been any backward-incompatible changes that you need to take care of + `just update` and `just roles` are shortcuts (their targets are defined in [`justfile`](../justfile) and executed by the [`just`](https://github.com/casey/just) utility) which ultimately run [agru](https://github.com/etkecc/agru) or [ansible-galaxy](https://docs.ansible.com/ansible/latest/cli/ansible-galaxy.html) (depending on what is available in your system) to download Ansible roles, after upgrading the playbook (in case of `just update`). -- re-run the [playbook setup](installing.md) and restart all services: `just install-all` or `just setup-all` + If you don't have either `just` tool or `make` program, you can run the `ansible-galaxy` tool directly: `rm -rf roles/galaxy; ansible-galaxy install -r requirements.yml -p roles/galaxy/ --force` + +- re-run the [playbook setup](installing.md#maintaining-your-setup-in-the-future) and restart all services: + + ```sh + ansible-playbook -i inventory/hosts setup.yml --tags=install-all,start + ``` + +Note that if you remove components from `vars.yml`, or if we switch some component from being installed by default to not being installed by default anymore, you'd need to run the setup command with `--tags=setup-all` instead of `--tags=install-all`. See [this page on the playbook tags](playbook-tags.md) for more information. + +A way to invoke these `ansible-playbook` commands with less typing is to use [just](https://github.com/casey/just) to run the "recipe": `just install-all` or `just setup-all`. See [our `justfile`](../justfile) for more information. If you don't have `just`, you can also manually run the commands seen in the `justfile`. **Note**: major version upgrades to the internal PostgreSQL database are not done automatically. To upgrade it, refer to the [upgrading PostgreSQL guide](maintenance-postgres.md#upgrading-postgresql). diff --git a/docs/prerequisites.md b/docs/prerequisites.md index 744227823..1e39d9f6e 100644 --- a/docs/prerequisites.md +++ b/docs/prerequisites.md @@ -1,9 +1,11 @@ # Prerequisites -⚡️[Quick start](README.md) | Prerequisites > [Configuring your DNS settings](configuring-dns.md) > [Getting the playbook](getting-the-playbook.md) > [Configuring the playbook](configuring-playbook.md) > [Installing](installing.md) +⚡️[Quick start](quick-start.md) | Prerequisites > [Configuring your DNS settings](configuring-dns.md) > [Getting the playbook](getting-the-playbook.md) > [Configuring the playbook](configuring-playbook.md) > [Installing](installing.md) 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. +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. + ## 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. diff --git a/docs/quick-start.md b/docs/quick-start.md new file mode 100644 index 000000000..11af61f11 --- /dev/null +++ b/docs/quick-start.md @@ -0,0 +1,202 @@ +# Quick start + + + +This page explains how to use this Ansible playbook to install Matrix services on your server with a minimal set of core services. + +We will be using `example.com` as the "base domain" in the following instruction. + +By following the instruction on this page, you will set up: + +- **your own Matrix server** on a `matrix.example.com` server, which is configured to present itself as `example.com` +- **your user account** like `@user:example.com` on the server +- a **self-hosted Matrix client**, [Element Web](configuring-playbook-client-element-web.md) with the default subdomain at `element.example.com` +- Matrix delegation, so that your `matrix.example.com` server (presenting itself as `example.com`) can join the Matrix Federation and communicate with any other server in the Matrix network + +Please remember to replace `example.com` with your own domain before running any commands. + +## Prerequisites + +This section is optimized for this quick-start guide and is derived from the following full-documentation page: [Prerequisites](prerequisites.md) + +At first, **check prerequisites** and prepare for installation by setting up programs [on your own computer](prerequisites.md#your-local-computer) and [your server](prerequisites.md#server). You also need `root` access on your server (a user that could elevate to `root` via `sudo` also works). + + + +If you encounter an error during installation, please make sure that you have installed and configured programs correctly. + +One of the main reasons of basic errors is using an incompatible version of required software such as Ansible. Take a look at [our guide about Ansible](ansible.md) for more information. In short: installing the latest available version is recommended. + +## Configure your DNS settings + +This section is optimized for this quick-start guide and is derived from the following full-documentation page: [Configuring your DNS settings](configuring-dns.md) + +After installing and configuring prerequisites, you will need to **configure DNS records**. + +To configure Matrix services in the default settings, go to your DNS service provider, and adjust DNS records as below. + +| Type | Host | Priority | Weight | Port | Target | +| ----- | ---------------------------- | -------- | ------ | ---- | ---------------------| +| A | `matrix` | - | - | - | `matrix-server-IP` | +| CNAME | `element` | - | - | - | `matrix.example.com` | + +As the table illustrates, you need to create 2 subdomains (`matrix.example.com` and `element.example.com`) and point both of them to your server's IP address (DNS `A` record or `CNAME` record is fine). + +It might take some time for the DNS records to propagate after creation. + +**💡 Note**: if you are using Cloudflare DNS, make sure to disable the proxy and set all records to "DNS only" + +## Get the playbook + +This section is optimized for this quick-start guide and is derived from the following full-documentation page: [Getting the playbook](getting-the-playbook.md) + +Next, let's **get the playbook's source code**. + +We recommend to do so with [git](https://git-scm.com/) as it enables you to keep it up to date with the latest source code. While it is possible to download the playbook as a ZIP archive, it is not recommended. + +To get the playbook with git, install git on your computer, go to a directory, and run the command: + +```sh +git clone https://github.com/spantaleev/matrix-docker-ansible-deploy.git +``` + +It will fetch the playbook to a new `matrix-docker-ansible-deploy` directory underneath the directory you are currently in. + +## Configure the playbook + +This section is optimized for this quick-start guide and is derived from the following full-documentation page: [Configuring the playbook](configuring-playbook.md) + +Now that the playbook was fetched, it is time to **configure** it per your needs. + +To install Matrix services with this playbook, you would at least need 2 configuration files. + +For your convenience, we have prepared example files of them ([`vars.yml`](../examples/vars.yml) and [`hosts`](../examples/hosts)). + +To start quickly based on these example files, go into the `matrix-docker-ansible-deploy` directory and follow the instructions below: + +1. Create a directory to hold your configuration: `mkdir -p inventory/host_vars/matrix.example.com` where `example.com` is your "base domain" +2. Copy the sample configuration file: `cp examples/vars.yml inventory/host_vars/matrix.example.com/vars.yml` +3. Copy the sample inventory hosts file: `cp examples/hosts inventory/hosts` +4. Edit the configuration file (`inventory/host_vars/matrix.example.com/vars.yml`) +5. Edit the inventory hosts file (`inventory/hosts`) + +Before editing these 2 files, make sure to read explanations on them to understand what needs to be configured. + +**💡 Notes:** +- If you are not in control of anything on the base domain, you would need to set additional configuration on `vars.yml`. For more information, see [How do I install on matrix.example.com without involving the base domain?](faq.md#how-do-i-install-on-matrix-example-com-without-involving-the-base-domain) on our FAQ. +- Certain configuration decisions (like the base domain configured in `matrix_domain` and homeserver implementation configured in `matrix_homeserver_implementation`) are final. If you make the wrong choice and wish to change it, you'll have to run the Uninstalling step and start over. +- Instead of configuring a lot of things all at once, we recommend starting with the basic (default) settings in order to get yourself familiar with how the playbook works. After making sure that everything works as expected, you can add (and remove) advanced settings / features and run the playbook as many times as you wish. + +## Install + +This section is optimized for this quick-start guide and is derived from the following full-documentation page: [Installing](installing.md) + +After editing `vars.yml` and `hosts` files, let's start the **installation** procedure. + +### Update Ansible roles + +Before installing, you need to update the Ansible roles that this playbook uses and fetches from outside. + +To update your playbook directory and all upstream Ansible roles, run: + +- either: `just update` +- or: a combination of `git pull` and `just roles` (or `make roles` if you have `make` program on your computer instead of `just`) + +If you don't have either `just` tool or `make` program, you can run the `ansible-galaxy` tool directly: `rm -rf roles/galaxy; ansible-galaxy install -r requirements.yml -p roles/galaxy/ --force` + +### Run installation command + +Then, run the command below to start installation: + +````sh +ansible-playbook -i inventory/hosts setup.yml --tags=install-all,ensure-matrix-users-created,start +```` + +If you **don't** use SSH keys for authentication, but rather a regular password, you may need to add `--ask-pass` to the command. + +If you **do** use SSH keys for authentication, **and** use a non-root user to *become* root (sudo), you may need to add `-K` (`--ask-become-pass`) to the command. + +Wait until the command completes. If it's all green, everything should be running properly. + +## Create your user account + +This section is optimized for this quick-start guide and is derived from the following full-documentation page: [Registering users](registering-users.md) + +As you have configured your brand new server and the client, you need to **create your user account** on your Matrix server. + +To create your user account (as an administrator of the server) via this Ansible playbook, run the command below on your local computer. + +**💡 Notes**: +- Make sure to adjust `YOUR_USERNAME_HERE` and `YOUR_PASSWORD_HERE` +- For `YOUR_USERNAME_HERE`, use a plain username like `john`, not your full identifier (`@user:example.com`) + +```sh +ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=YOUR_USERNAME_HERE password=YOUR_PASSWORD_HERE admin=yes' --tags=register-user + +# Example: ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=john password=secret-password admin=yes' --tags=register-user +``` + + + +## Finalize server installation + +This section is optimized for this quick-start guide and is derived from the following full-documentation page: [Server Delegation](howto-server-delegation.md) + +Now that you've configured Matrix services and your user account, you need to **finalize the installation process** by [setting up Matrix delegation (redirection)](howto-server-delegation.md), so that your Matrix server (`matrix.example.com`) can present itself as the base domain (`example.com`) in the Matrix network. + +**This is required for federation to work!** Without a proper configuration, your server will effectively not be part of the Matrix network. + +To configure the delegation, you have these two options. Choose one of them according to your situation. + +- If you can afford to point the base domain at the Matrix server, follow the instruction below which guides you into [serving the base domain](configuring-playbook-base-domain-serving.md) from the integrated web server. +- Alternatively, if you're using the base domain for other purposes and cannot point it to the Matrix server (and thus cannot "serve the base domain" from it), you most likely need to [manually install well-known files on the base domain's server](configuring-well-known.md#manually-installing-well-known-files-on-the-base-domains-server). + +To have the base domain served from the integrated web server, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: + +```yaml +matrix_static_files_container_labels_base_domain_enabled: true +``` + +After configuring the playbook, run the command below and wait until it finishes: + +```sh +ansible-playbook -i inventory/hosts setup.yml --tags=install-matrix-static-files,start +``` + +💡 Running the `install-matrix-static-files` playbook tag (as done here) is an optimized version of running [the full setup command](#run-the-installation-command). + +After the command finishes, you can also check whether your server federates with the Matrix network by using the [Federation Tester](https://federationtester.matrix.org/) against your base domain (`example.com`), not the `matrix.example.com` subdomain. + +If you think something is off with the server configuration, feel free to [re-run the full setup command](#run-the-installation-command) any time. + +## Log in to your user account + +Finally, let's make sure that you can log in to the created account with the specified password. + +You should be able to log in to it with your own [Element Web](configuring-playbook-client-element-web.md) client which you have set up at `element.example.com` by running the playbook. Open the URL (`https://element.example.com`) in a web browser and enter your credentials to log in. + +**If you successfully logged in to your account, installing and configuring is complete**🎉 + +Come say Hi👋 in our support room - [#matrix-docker-ansible-deploy:devture.com](https://matrix.to/#/#matrix-docker-ansible-deploy:devture.com). You might learn something or get to help someone else new to Matrix hosting. + +## Things to do next + +Once you get familiar with the playbook, you might probably want to set up additional services such as a bridge on your server. + +As this page intends to be a quick start guide which explains how to start the core Matrix services, it does not cover a topic like how to set them up. Take a look at the list of [things to do next](installing.md#things-to-do-next) to learn more. + +### ⚠️Keep the playbook and services up-to-date + +While this playbook helps you to set up Matrix services and maintain them, it will **not** automatically run the maintenance task for you. You will need to update the playbook and re-run it **manually**. + +Since it is unsafe to keep outdated services running on the server connected to the internet, please consider to update the playbook and re-run it periodically, in order to keep the services up-to-date. + +For more information about upgrading or maintaining services with the playbook, take at look at this page: [Upgrading the Matrix services](maintenance-upgrading-services.md) diff --git a/docs/registering-users.md b/docs/registering-users.md index 20a4c0a67..a60278aca 100644 --- a/docs/registering-users.md +++ b/docs/registering-users.md @@ -1,6 +1,6 @@ # Registering users -This documentation page tells you how to create user account on your Matrix server. +This documentation page tells you how to create user accounts on your Matrix server. Table of contents: @@ -14,7 +14,10 @@ Table of contents: ## Registering users manually -**Note**: in the commands below, `` is just a plain username (like `john`), not your full `@:example.com` identifier. +**Notes**: +- Make sure to adjust `USERNAME_HERE` and `PASSWORD_HERE` +- For `USERNAME_HERE`, use a plain username like `john`, not a full identifier (`@user:example.com`) +- Use `admin=yes` or `admin=no` depending on whether you wish to make the user an administrator of the Matrix server After registering a user (using one of the methods below), **you can log in with that user** via the [Element Web](configuring-playbook-client-element-web.md) service that this playbook has installed for you at a URL like this: `https://element.example.com/`. @@ -22,10 +25,10 @@ After registering a user (using one of the methods below), **you can log in with It's best to register users via the Ansible playbook, because it works regardless of homeserver implementation (Synapse, Dendrite, etc) or usage of [Matrix Authentication Service](configuring-playbook-matrix-authentication-service.md) (MAS). -To register a user via this Ansible playbook (make sure to edit the `` and `` part below): +To register a user via this Ansible playbook: ```sh -just register-user +just register-user USERNAME_HERE PASSWORD_HERE # Example: `just register-user john secret-password yes` ``` @@ -33,11 +36,13 @@ just register-user **or** by invoking `ansible-playbook` manually: ```sh -ansible-playbook -i inventory/hosts setup.yml --extra-vars='username= password= admin=' --tags=register-user +ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=USERNAME_HERE password=PASSWORD_HERE admin=' --tags=register-user -# Example: `ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=john password=secret-password admin=yes' --tags=register-user` +# Example: ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=john password=secret-password admin=yes' --tags=register-user ``` +Feel free to register as many users (for friends, family, etc.) as you want. Still, perhaps you should grant full administrative access to your user account only (with `admin=yes`), and others should be created with `admin=no`. + ⚠️ **Warning**: If you're registering users against Matrix Authentication Service, do note that it [still insists](https://github.com/element-hq/matrix-authentication-service/issues/1505) on having a verified email address for each user. Upon a user's first login, they will be asked to confirm their email address. This requires that email sending is [configured](./configuring-playbook-email.md). You can also consult the [Working around email deliverability issues](./configuring-playbook-matrix-authentication-service.md#working-around-email-deliverability-issues) section for more information. ### Registering users manually for Synapse @@ -45,7 +50,7 @@ ansible-playbook -i inventory/hosts setup.yml --extra-vars='username= +/matrix/synapse/bin/register-user USERNAME_HERE PASSWORD_HERE # Example: `/matrix/synapse/bin/register-user john secret-password 1` ``` @@ -55,7 +60,7 @@ If you're using the [Synapse](configuring-playbook-synapse.md) homeserver implem If you're using the [Dendrite](./configuring-playbook-dendrite.md) homeserver implementation, you can register users via the command-line after **SSH**-ing to your server (requires that [all services have been started](installing.md#install-matrix-server-and-services)): ```sh -/matrix/dendrite/bin/create-account +/matrix/dendrite/bin/create-account USERNAME_HERE PASSWORD_HERE # Example: `/matrix/dendrite/bin/create-account john secret-password 1` ``` @@ -65,7 +70,7 @@ If you're using the [Dendrite](./configuring-playbook-dendrite.md) homeserver im If you're using the [Matrix Authentication Service](./configuring-playbook-matrix-authentication-service.md) and your existing homeserver (most likely [Synapse](./configuring-playbook-synapse.md)) is delegating authentication to it, you can register users via the command-line after **SSH**-ing to your server (requires that [all services have been started](installing.md#install-matrix-server-and-services)): ```sh -/matrix/matrix-authentication-service/bin/register-user +/matrix/matrix-authentication-service/bin/register-user USERNAME_HERE PASSWORD_HERE # Example: `/matrix/matrix-authentication-service/bin/register-user john secret-password 1` ``` diff --git a/docs/updating-users-passwords.md b/docs/updating-users-passwords.md index c1c69cf7d..6461e1198 100644 --- a/docs/updating-users-passwords.md +++ b/docs/updating-users-passwords.md @@ -2,14 +2,16 @@ ## Option 1 (if you are using the integrated Postgres database): -You can reset a user's password via the Ansible playbook (make sure to edit the `` and `` part below): +**Notes**: +- Make sure to adjust `USERNAME_HERE` and `PASSWORD_HERE` +- For `USERNAME_HERE`, use a plain username like `john`, not a full identifier (`@user:example.com`) + +You can reset a user's password via the Ansible playbook: ``` -ansible-playbook -i inventory/hosts setup.yml --extra-vars='username= password=' --tags=update-user-password +ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=USERNAME_HERE password=PASSWORD_HERE' --tags=update-user-password ``` -**Note**: `` is just a plain username (like `john`), not your full `@:example.com` identifier. - **You can then log in with that user** via Element Web that this playbook has created for you at a URL like this: `https://element.example.com/`.