Установка Matrix Element + Admin UI

Шаг 0: DNS (самое важное, сделай первым)

В панели управления доменом johnkaine.fun добавь записи (TTL 300–3600):

ТипИмяЗначениеПримечание
Amatrix00.00.00.0 IP Сервераглавный Matrix
Aelement00.00.00.0 IP Сервераклиент Element Web
CNAMEjitsimatrix.Домензвонки (групповые)

Подожди минимум 10–15 минут, проверь:

dig matrix.johnkaine.fun +short
dig element.johnkaine.fun +short
dig jitsi.johnkaine.fun +short

Шаг 1: На твоём компьютере (не на сервере!)

  • Установи Ansible (если Linux/Ubuntu):
sudo apt update && sudo apt install ansible git -y
  • Скачай playbook:
git clone https://github.com/spantaleev/matrix-docker-ansible-deploy.git
cd matrix-docker-ansible-deploy
  • Создай конфиг:
mkdir -p inventory/host_vars/matrix.johnkaine.fun
cp examples/hosts inventory/hosts
cp examples/vars.yml inventory/host_vars/matrix.johnkaine.fun/vars.yml

Шаг 2: Редактируем файлы

(открой nano или любой редактор):

nano inventory/hosts
[matrix_servers]
matrix.johnkaine.fun ansible_host=95.215.56.111 ansible_user=root

[matrix_servers]
matrix.johnkaine.fun ansible_connection=local

самое важное открой файл vars.yml (Там все настройки)

nano inventory/host_vars/matrix.johnkaine.fun/vars.yml

Рабочий вариант, меняй домен и почту на свои

---
# The bare domain name which represents your Matrix identity.
# Matrix user IDs for your server will be of the form (`@alice:example.com`).
#
# Note: this playbook does not touch the server referenced here.
# Installation happens on another server ("matrix.example.com", see `matrix_server_fqn_matrix`).
#
# If you've deployed using the wrong domain, you'll have to run the Uninstalling step,
# because you can't change the Domain after deployment.
matrix_domain: johnkaine.fun

# FQDN (полное имя) для самого сервера Synapse
matrix_server_fqn_matrix: matrix.johnkaine.fun
# Обычно ставят поддомен matrix. — это стандарт

# FQDN для веб-клиента Element (очень рекомендуется)
matrix_server_fqn_element: element.johnkaine.fun
# Если хочешь, чтобы Element был на отдельном поддомене

# Почта для Let's Encrypt (Traefik сам получит бесплатный SSL)
traefik_config_certificates_resolvers_acme_email: "johnkaine@bk.ru"
# Обязательно укажи реальный email — придут уведомления, если сертификат скоро истечёт

# ──────────────────────────────────────────────────────────────
# То, что ты просил включить
# ──────────────────────────────────────────────────────────────

matrix_synapse_admin_enabled: true          # Synapse Admin UI будет на https://matrix.johnkaine.fun/synapse-admin/

jitsi_enabled: true                         # Включает Jitsi + автоматически Coturn (TURN сервер для звонков)


# The Matrix homeserver software to install.
# See:
#  - `roles/custom/matrix-base/defaults/main.yml` for valid options
#  - the `docs/configuring-playbook-IMPLEMENTATION_NAME.md` documentation page, if one is available for your implementation choice
#
# By default, we use Synapse, because it's the only full-featured Matrix server at the moment.
#
# Note that the homeserver implementation of a server will not be able to be changed without data loss.
matrix_homeserver_implementation: synapse

# A secret used as a base, for generating various other secrets.
# You can put any string here, but generating a strong one is preferred. You can create one with a command like `pwgen -s 64 1`.
matrix_homeserver_generic_secret_key: 'fe5d6de57ac498f31164cffca9e0714bb0fb5cffcf00776bb489be850fca'

# By default, the playbook manages its own Traefik (https://doc.traefik.io/traefik/) reverse-proxy server.
# It will retrieve SSL certificates for you on-demand and forward requests to all other components.
# For alternatives, see `docs/configuring-playbook-own-webserver.md`.
matrix_playbook_reverse_proxy_type: playbook-managed-traefik

# Controls whether container networks will be created with IPv6 support.
#
# If you also have IPv6 support on your server/network and AAAA DNS records pointing to the server,
# enabling this will effectively give you full public IPv6 connectivity (powered by NAT66).
#
# We recommend leaving this enabled even if you don't currently have IPv6 connectivity on your server/network.
# This way, once you eventually get IPv6 connectivity, you won't have to change anything (besides DNS records).
#
# Flipping this setting later on requires manual work (stopping services, deleting and recreating all container networks).
#
# In the future, this setting will likely default to `true`, so if you really want IPv6 disabled, explicitly set this to `false`.
#
# People managing Docker themselves and running an older Docker version will need additional configuration.
#
# Learn more in `docs/configuring-ipv6.md`.
systemd_docker_base_ipv6_enabled: true

# A Postgres password to use for the superuser Postgres user (called `matrix` by default).
#
# The playbook creates additional Postgres users and databases (one for each enabled service) using this superuser account.
#
# Changing this value subsequently requires manual work.
# The value used here must be shorter than 100 characters.
postgres_connection_password: '3b50337eb7b3f4a8474afe834889f28212f109968e9fb'

# You can limit heavy room joins on constrained hosts.
# See:
# docs/configuring-playbook-synapse.md#limit-joining-heavy-rooms-on-constrained-hosts
#
# matrix_synapse_limit_remote_rooms_enabled: true
# matrix_synapse_limit_remote_rooms_complexity: 1.0
# matrix_synapse_limit_remote_rooms_admins_can_join: false

Сохрани.

✅ Решение 1 (самое простое)

Установи sshpass на машине, где запускаешь ansible:

Debian / Ubuntu

apt update
apt install sshpass

Шаг 3: Запуск установки

Выполни по очереди:

# 1. Установка всех ролей
ansible-galaxy install -r requirements.yml -p roles/galaxy/ --force

# 2. Полная установка (может идти 20–40 минут)
ansible-playbook -i inventory/hosts setup.yml --tags=install-all,start --ask-pass -vv

Если просит пароль SSH или sudo — добавь флаги:

—ask-pass —ask-become-pass

Шаг 4: Создаём админа

ansible-playbook -i inventory/hosts setup.yml \
  --extra-vars='username=твой_логин password=СИЛЬНЫЙ_ПАРОЛЬ admin=yes' \
  --tags=register-user

Полезное

✅ Минимально необходимая команда

Если ты менял vars (регистрация, токены и т.д.), то достаточно:

ansible-playbook -i inventory/hosts setup.yml --tags=setup-synapse,start

Привет, брат! Обновлять твой Matrix-сервер (всё, что установлено через matrix-docker-ansible-deploy) очень просто и рекомендуется делать регулярно — примерно раз в 1–2 недели или когда выходят важные фиксы/обновления (Synapse, Element, Jitsi, Borg и т.д.). Это обновит:

  • Сам playbook (код Ansible)
  • Все роли (внешние зависимости)
  • Контейнеры Docker (новые версии образов)
  • Конфиги, если нужно
  • Бэкапы Borg тоже останутся целыми

Важно перед обновлением:

  • Сделай свежий бэкап вручную (если не доверяешь автоматическому):textsystemctl start matrix-backup-borg.service journalctl -u matrix-backup-borg.service -f # подожди завершения
  • Посмотри CHANGELOG.md в репозитории (git log или на GitHub) — иногда бывают breaking changes (редко, но бывают). Если что-то критическое — почитай заранее.

Стандартный процесс обновления (самый простой и рекомендуемый)

Выполняй эти команды на твоём локальном компьютере (где лежит клон репозитория), в директории проекта:

Bash

cd ~/matrix-docker-ansible-deploy   # или куда ты клонировал

# 1. Обнови сам playbook (git pull) и все роли
git pull
just roles   # или ansible-galaxy install -r requirements.yml --force   (если нет just)

# 2. Запусти обновление всего (это обновит контейнеры, конфиги, перезапустит нужное)
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start

# Если хочешь быстрее (только обновление, без полной переустановки)
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start   # обычно хватает

Варианты команд (если нет just):

Bash

# Вместо just roles
ansible-galaxy install -r requirements.yml --force

Как создать бэкап

1. Самый простой способ — ручной бэкап одной командой

docker exec --env-file=/matrix/postgres/env-postgres-psql \
  matrix-postgres \
  pg_dumpall -h matrix-postgres \
  | gzip -c > /matrix/matrix-postgres-$(date +%Y-%m-%d_%H-%M).sql.gz

Как востоновить бэкап

Перенеси файлы на новый сервер, можно просто папку перенести

  • inventory

Шаг 1. Установи «пустой» Matrix-сервер (без данных)

На новом сервере

  • Установи Ansible (если Linux/Ubuntu):
sudo apt update && sudo apt install ansible git -y
  • Скачай playbook:
git clone https://github.com/spantaleev/matrix-docker-ansible-deploy.git
cd matrix-docker-ansible-deploy
  • Создай конфиг:
mkdir -p inventory/host_vars/matrix.johnkaine.fun
cp examples/hosts inventory/hosts
cp examples/vars.yml inventory/host_vars/matrix.johnkaine.fun/vars.yml
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start

Шаг 2. Восстанови дамп

Останови postgres (чтобы избежать конфликтов):

systemctl stop matrix-postgres

или

docker stop matrix-postgres

Очисти старую (пустую) data-директорию postgres (если хочешь быть на 100% уверенным):

rm -rf /matrix/postgres/data/*

Запусти postgres обратно:

systemctl start matrix-postgres

Или

docker start matrix-postgres

Теперь импортируй дамп (pg_dumpall восстанавливает роли, базы и всё содержимое):

gunzip -c /matrix/matrix-postgres-2026-03-21_XX-XX.sql.gz \
  | docker exec -i matrix-postgres psql -h matrix-postgres -U postgres

Шаг 4. Запусти весь сервер и проверь

ansible-playbook -i inventory/hosts setup.yml --tags=start