Шаг 0: DNS (самое важное, сделай первым)
В панели управления доменом johnkaine.fun добавь записи (TTL 300–3600):
| Тип | Имя | Значение | Примечание |
|---|---|---|---|
| A | matrix | 00.00.00.0 IP Сервера | главный Matrix |
| A | element | 00.00.00.0 IP Сервера | клиент Element Web |
| CNAME | jitsi | matrix.Домен | звонки (групповые) |
Подожди минимум 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 тоже останутся целыми
Важно перед обновлением:
- Сделай свежий бэкап вручную (если не доверяешь автоматическому):text
systemctl 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