Matrix (An open network for secure, decentralized communication) server setup using Ansible and Docker
Purpose
This Ansible playbook is meant to help you run your own Matrix homeserver, along with the various services related to that.
That is, it lets you join the Matrix network using your own @<username>:<your-domain>
identifier, all hosted on your own server (see prerequisites).
We run all services in Docker containers (see the container images we use), which lets us have a predictable and up-to-date setup, across multiple supported distros (see prerequisites) and architectures (x86/amd64 being recommended).
Installation (upgrades) and some maintenance tasks are automated using Ansible (see our Ansible guide).
Supported services
Using this playbook, you can get the following services configured on your server:
-
(optional, default) a Synapse homeserver - storing your data and managing your presence in the Matrix network
-
(optional) Amazon S3 storage for Synapse's content repository (
media_store
) files using Goofys -
(optional, default) PostgreSQL database for Synapse. Using an external PostgreSQL server is also possible.
-
(optional, default) a coturn STUN/TURN server for WebRTC audio/video calls
-
(optional, default) free Let's Encrypt SSL certificate, which secures the connection to the Synapse server and the Element web UI
-
(optional, default) an Element (formerly Riot) web UI, which is configured to connect to your own Synapse server by default
-
(optional, default) an ma1sd Matrix Identity server
-
(optional, default) an Exim mail server, through which all Matrix services send outgoing email (can be configured to relay through another SMTP server)
-
(optional, default) an nginx web server, listening on ports 80 and 443 - standing in front of all the other services. Using your own webserver is possible
-
(optional, advanced) the matrix-synapse-rest-auth REST authentication password provider module
-
(optional, advanced) the matrix-synapse-shared-secret-auth password provider module
-
(optional, advanced) the matrix-synapse-ldap3 LDAP Auth password provider module
-
(optional, advanced) the synapse-simple-antispam spam checker module
-
(optional, advanced) the Matrix Corporal reconciliator and gateway for a managed Matrix server
-
(optional) the mautrix-telegram bridge for bridging your Matrix server to Telegram
-
(optional) the mautrix-whatsapp bridge for bridging your Matrix server to Whatsapp
-
(optional) the mautrix-facebook bridge for bridging your Matrix server to Facebook
-
(optional) the mautrix-hangouts bridge for bridging your Matrix server to Google Hangouts
-
(optional) the mautrix-signal bridge for bridging your Matrix server to Signal
-
(optional) the matrix-appservice-irc bridge for bridging your Matrix server to IRC
-
(optional) the matrix-appservice-discord bridge for bridging your Matrix server to Discord
-
(optional) the matrix-appservice-slack bridge for bridging your Matrix server to Slack
-
(optional) the matrix-appservice-webhooks bridge for slack compatible webhooks (ConcourseCI, Slack etc. pp.)
-
(optional) the matrix-sms-bridge for bridging your Matrix server to SMS - see docs/configuring-playbook-bridge-matrix-bridge-sms.md for setup documentation
-
(optional) the mx-puppet-skype for bridging your Matrix server to Skype - see docs/configuring-playbook-bridge-mx-puppet-skype.md for setup documentation
-
(optional) the mx-puppet-slack for bridging your Matrix server to Slack - see docs/configuring-playbook-bridge-mx-puppet-slack.md for setup documentation
-
(optional) the mx-puppet-instagram bridge for Instagram-DMs (Instagram) - see docs/configuring-playbook-bridge-mx-puppet-instagram.md for setup documentation
-
(optional) the mx-puppet-twitter bridge for Twitter-DMs (Twitter - see docs/configuring-playbook-bridge-mx-puppet-twitter.md for setup documentation
-
(optional) the mx-puppet-discord bridge for Discord) - see docs/configuring-playbook-bridge-mx-puppet-discord.md for setup documentation
-
(optional) the mx-puppet-steam bridge for Steam) - see docs/configuring-playbook-bridge-mx-puppet-steam.md for setup documentation
-
(optional) Email2Matrix for relaying email messages to Matrix rooms - see docs/configuring-playbook-email2matrix.md for setup documentation
-
(optional) Dimension, an open source integrations manager for matrix clients - see docs/configuring-playbook-dimension.md for setup documentation
-
(optional) Etherpad, an open source collaborative text editor - see docs/configuring-playbook-etherpad.md for setup documentation
-
(optional) Jitsi, an open source video-conferencing platform - see docs/configuring-playbook-jitsi.md for setup documentation
-
(optional) matrix-reminder-bot for scheduling one-off & recurring reminders and alarms - see docs/configuring-playbook-bot-matrix-reminder-bot.md for setup documentation
-
(optional) synapse-admin, a web UI tool for administrating users and rooms on your Matrix server - see docs/configuring-playbook-synapse-admin.md for setup documentation
-
(optional) matrix-registration, a simple python application to have a token based matrix registration - see docs/configuring-playbook-matrix-registration.md for setup documentation
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.
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.
Support
-
Matrix room: #matrix-docker-ansible-deploy:devture.com
-
IRC channel:
#matrix-docker-ansible-deploy
on the Freenode IRC network (irc.freenode.net) -
Github issues: spantaleev/matrix-docker-ansible-deploy/issues