Обзор развертывания Matrix на сервере¶
Предпосылки и предварительные требования¶
Для успешного развертывания приложения необходимо наличие сервера с операционной системой на базе Debian или Ubuntu. Требуется доступ к серверу с правами суперпользователя (root) или возможность выполнения команд через sudo.
Необходимые сетевые требования: - Открытые порты 80 и 443 для веб-трафика и работы сертификатов SSL. - Открытый порт 8448 для альтернативного SSL-соединения. - Доступ к внешним ресурсам для загрузки образов Docker и получения сертификатов.
Структура файлов и каталогов¶
Приложение использует следующую структуру каталогов для хранения конфигураций, данных и сертификатов:
/root/nginx— каталог для конфигурации прокси-сервера и скриптов запуска./root/nginx/compose.yml— файл конфигурации для стека Nginx и Certbot./data/nginx/user_conf.d— каталог для конфигурационных файлов виртуальных хостов Nginx./data/nginx/nginx-certbot.env— файл переменных окружения для Certbot./root/nginx— корневая директория проекта Matrix (переменнаяmatrix_base_dir)./root/nginx/files— каталог для хранения данных сервера Synapse (медиафайлы, ключи, PID-файл)./root/nginx/schemas— каталог для схем базы данных./root/nginx/docker-compose.yml— файл конфигурации контейнеров приложения./root/nginx/files/homeserver.yaml— основной файл конфигурации сервера Synapse./root/nginx/element-config.json— файл конфигурации веб-клиента Element.
Процесс установки приложения¶
Установка выполняется через развертывание контейнеров Docker с использованием docker-compose. Процесс включает следующие этапы:
- Установка пакета
docker-ceи зависимостей (docker-ce-cli,containerd.io,docker-buildx-plugin,docker-compose-plugin) через репозиторий Docker. - Создание необходимых директорий и файлов конфигурации.
- Загрузка образов контейнеров:
postgres:15-alpine— база данных.matrixdotorg/synapse:latest— сервер Matrix.vectorim/element-web:latest— веб-интерфейс.jonasal/nginx-certbot:latest— прокси-сервер с поддержкой SSL.- Запуск контейнеров в соответствии с файлами
docker-compose.ymlиcompose.yml.
Базы данных¶
Приложение использует базу данных PostgreSQL версии 15 в контейнере.
Настройки подключения: - Имя пользователя: synapse - Пароль: synapse - Имя базы данных: synapse - Хост подключения: db (имя контейнера) - Кодировка: UTF-8 - Локаль сортировки: C
Данные базы данных хранятся в именованном томе Docker postgres-data, который монтируется в /var/lib/postgresql/data внутри контейнера.
Контейнеры Docker и их запуск¶
Развертывание осуществляется через два файла конфигурации docker-compose.yml.
Первый файл (/root/nginx/docker-compose.yml) управляет основными сервисами приложения:
- db: Контейнер с PostgreSQL.
- synapse: Контейнер с сервером Synapse. Монтирует локальный каталог
./filesв/data. Открывает порт8008. - element: Контейнер с веб-клиентом Element. Монтирует файл конфигурации
./element-config.jsonв/app/config.json. Открывает порт8080только на локальном интерфейсе (127.0.0.1).
Второй файл (/root/nginx/compose.yml) управляет стеком прокси-сервера:
- nginx: Контейнер с Nginx и Certbot. Использует режим сети
host. Монтирует томnginx_secretsдля сертификатов Let's Encrypt и каталог конфигураций/data/nginx/user_conf.d.
Запуск контейнеров выполняется командами:
docker compose -f /root/nginx/docker-compose.yml pull
docker compose -f /root/nginx/docker-compose.yml up -d
docker compose -f /root/nginx/compose.yml up -d
Прокси серверы¶
Для обработки входящего трафика и управления SSL-сертификатами используется контейнер Nginx с Certbot.
Конфигурация виртуального хоста размещается в файле /data/nginx/user_conf.d/<домен>.conf.
Настройки проксирования: - Запросы к путям /_matrix и /_synapse/client перенаправляются на http://127.0.0.1:8008 (Synapse). - Остальные запросы перенаправляются на http://127.0.0.1:8080 (Element). - Максимальный размер тела запроса для API установлен в 50M.
SSL-сертификаты автоматически выдаются и обновляются через Let's Encrypt. Путь к сертификатам: /etc/letsencrypt/live/<домен>/.
Настройки прав¶
Права доступа к файлам и директориям настроены следующим образом:
- Директория
/root/nginxи поддиректории имеют владельцаrootи группуrootс правами0755. - Директория
/root/nginx/filesимеет владельца с UID991и GID991с правами0755. Это соответствует пользователю внутри контейнера Synapse. - Файл конфигурации
/root/nginx/files/homeserver.yamlимеет владельца991:991и права0644. - Файл конфигурации
/root/nginx/element-config.jsonимеет владельцаroot:rootи права0644. - Файл конфигурации Nginx
/data/nginx/user_conf.d/<домен>.confимеет владельцаroot:rootи права0644.
Запуск, остановка и обновление¶
Управление сервисами осуществляется через команды docker compose.
Для запуска стека приложения:
Для запуска стека прокси-сервера:
Для остановки сервисов:
docker compose -f /root/nginx/docker-compose.yml down
docker compose -f /root/nginx/compose.yml down
Для обновления образов и перезапуска:
docker compose -f /root/nginx/docker-compose.yml pull
docker compose -f /root/nginx/docker-compose.yml up -d
docker compose -f /root/nginx/compose.yml pull
docker compose -f /root/nginx/compose.yml up -d
Проверка здоровья сервера Synapse выполняется запросом к адресу http://127.0.0.1:8008/health.