Matrix (An open network for secure, decentralized communication) server setup using Ansible and Docker https://github.com/spantaleev/matrix-docker-ansible-deploy
Find a file
Slavi Pantaleev dd797ba6a7 Fix Postgres database importing/upgrading conflicts
We were running into conflicts, because having initialized
the roles (users) and databases, trying to import leads to
errors (role XXX already exists, etc.).

We were previously ignoring the Synapse database (`homeserver`)
when upgrading/importing, because that one gets created by default
whenever the container starts.

For our additional databases, it's a similar situation now.
It's not created by default as soon as Postgres starts with an empty
database, but rather we create it as part of running the playbook.

So we either need to skip those role/database creation statements
while upgrading/importing, or to avoid creating the additional database
and rely on the import for that. I've gone for the former, because
it's already similar to what we were doing and it's simpler
(it lets `setup_postgres.yml` be the same in all scenarios).
2020-12-14 22:28:20 +02:00
.github Create FUNDING.yml 2020-12-01 15:11:37 +02:00
docs Rename some doc files and commands related to importing 2020-12-14 01:51:00 +02:00
examples Do not expose /_synapse/admin publicly by default 2020-10-26 10:36:38 +02:00
group_vars Fix Postgres database importing/upgrading conflicts 2020-12-14 22:28:20 +02:00
inventory Rename script file 2020-04-08 10:05:43 +03:00
roles Fix Postgres database importing/upgrading conflicts 2020-12-14 22:28:20 +02:00
.editorconfig Add comment about trailing whitespace in Markdown 2019-02-01 11:00:25 +02:00
.gitignore Adding '.python-version' to .gitignore 2020-10-06 11:42:32 +02:00
ansible.cfg Move pipelining option to proper section 2019-09-01 01:59:41 +02:00
CHANGELOG.md Remove synapse-janitor support 2020-12-11 23:24:42 +02:00
LICENSE Add LICENSE file 2018-08-17 09:01:06 +03:00
README.md Add donation and support room badges 2020-12-01 15:24:07 +02:00
setup.yml Added containerization 2020-10-16 21:21:58 -07:00

Support room on Matrix donate

Matrix (An open network for secure, decentralized communication) server setup using Ansible and Docker

Purpose

This Ansible playbook is meant to easily let you run your own Matrix homeserver.

That is, it lets you join the Matrix network with your own @<username>:<your-domain> identifier, all hosted on your own server.

Using this playbook, you can get the following services configured on your server:

Basically, this playbook aims to get you up-and-running with all the basic necessities around Matrix, without you having to do anything else.

Note: the list above is exhaustive. It includes optional or even some advanced components that you will most likely not need. Sticking with the defaults (which install a subset of the above components) is the best choice, especially for a new installation. You can always re-run the playbook later to add or remove components.

What's different about this Ansible playbook?

This is similar to the EMnify/matrix-synapse-auto-deploy Ansible deployment, but:

  • this one is a complete Ansible playbook (instead of just a role), so it's easier to run - especially for folks not familiar with Ansible

  • this one installs and hooks together a lot more Matrix-related services for you (see above)

  • this one can be executed more than once without causing trouble

  • works on various distros: CentOS (7.0+), Debian-based distributions (Debian 9/Stretch+, Ubuntu 16.04+), Archlinux

  • this one installs everything in a single directory (/matrix by default) and doesn't "contaminate" your server with files all over the place

  • this one doesn't necessarily take over ports 80 and 443. By default, it sets up nginx for you there, but you can also use your own webserver

  • this one runs everything in Docker containers, so it's likely more predictable and less fragile (see Docker images used by this playbook)

  • this one retrieves and automatically renews free Let's Encrypt SSL certificates for you

  • this one optionally can store the media_store content repository files on Amazon S3 (but defaults to storing files on the server's filesystem)

  • this one optionally allows you to use an external PostgreSQL server for Synapse's database (but defaults to running one in a container)

  • helps you import data from a previous installation (so you can migrate your manual virtualenv/Docker setup to a more managed one)

Installation

To configure and install Matrix on your own server, follow the README in the docs/ directory.

Changes

This playbook evolves over time, sometimes with backward-incompatible changes.

When updating the playbook, refer to the changelog to catch up with what's new.

Docker images used by this playbook

This playbook sets up your server using the following Docker images:

Deficiencies

This Ansible playbook can be improved in the following ways:

  • setting up automatic backups to one or more storage providers

Support