Перейти к содержанию

Обзор развертывания 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. Процесс включает следующие этапы:

  1. Установка пакета docker-ce и зависимостей (docker-ce-cli, containerd.io, docker-buildx-plugin, docker-compose-plugin) через репозиторий Docker.
  2. Создание необходимых директорий и файлов конфигурации.
  3. Загрузка образов контейнеров:
  4. postgres:15-alpine — база данных.
  5. matrixdotorg/synapse:latest — сервер Matrix.
  6. vectorim/element-web:latest — веб-интерфейс.
  7. jonasal/nginx-certbot:latest — прокси-сервер с поддержкой SSL.
  8. Запуск контейнеров в соответствии с файлами 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 имеет владельца с UID 991 и GID 991 с правами 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 up -d

Для запуска стека прокси-сервера:

docker compose -f /root/nginx/compose.yml up -d

Для остановки сервисов:

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.

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×