Обзор развертывания панели Element на сервере¶
Предварительные требования и базовые условия¶
Для развертывания требуется серверная среда на базе Linux со следующими спецификациями и привилегиями:
-
Операционная система: Ubuntu (подтверждается через проверки
ansible_distributionи кодового имениlsb). -
Привилегии: Для установки системных пакетов, настройки межсетевого экрана (firewall) и управления службами Docker требуется доступ root или права
sudo. -
Docker Engine: Должны быть установлены пакет
docker-ceи связанные CLI-инструменты. -
Сетевой доступ: Сервер должен иметь исходящий доступ в Интернет для загрузки образов Docker и получения сертификатов SSL.
FQDN конечной панели¶
Приложение доступно через полностью квалифицированное доменное имя (FQDN), сформированное с использованием префикса element и идентификатора сервера в домене hostkey.in. Формат:
element<Server ID>.hostkey.in:443
Обратите внимание, что для конечного доступа используется стандартный порт HTTPS (443), в то время как прокси-сервер также слушает порт 8448 для внутренней или специфичной конфигурации маршрутизации.
Структура файлов и каталогов¶
Приложение использует специфичную структуру каталогов для разделения конфигурационных файлов, данных и файлов исполнения (runtime files). Основной базовый каталог для стека Matrix расположен по адресу:
-
Базовый каталог:
/opt/matrix -
Данные и медиа Synapse:
/opt/matrix/files -
Схемы баз данных:
/opt/matrix/schemas -
Конфигурация Element:
/opt/matrix/element-config.json -
Определение Docker Compose:
/opt/matrix/docker-compose.yml -
Конфигурация Synapse:
/opt/matrix/files/homeserver.yaml
Компоненты прокси-сервера и SSL-сертификаты используют следующие пути:
-
Каталог конфигурации Nginx:
/root/nginx -
Определение Compose:
/root/nginx/compose.yml -
Конфигурация пользователя Nginx:
/data/nginx/user_conf.d -
SSL-сертификаты:
/etc/letsencrypt/live/<domain> -
Volume секретов Nginx: Управляется внешним образом как
nginx_secrets.
Процесс установки приложения¶
Приложение разворачивается с использованием контейнеров Docker, оркестрируемых через Docker Compose. Установка включает следующие этапы:
-
Установка Docker: Если отсутствует, движок Docker (
docker-ce,docker-ce-cli,containerd.io) и плагин Docker Compose устанавливаются через официальный репозиторий Docker. -
Инициализация каталогов: Скрипт проверяет существование каталога
/opt/matrixи его подкаталогов (files,schemas) с надлежащим владением. -
Развертывание конфигурации:
-
Конфигурация Synapse (
homeserver.yaml) размещается в/opt/matrix/files. -
Конфигурация клиента Element (
element-config.json) размещается в/opt/matrix. -
Файл Docker Compose генерируется в
/opt/matrix/docker-compose.yml.
-
-
Развертывание контейнеров:
-
Образы загружаются из реестра (
matrixdotorg/synapse,vectorim/element-web,postgres). -
Стек запускается с использованием Docker Compose.
-
Выполняется проверка работоспособности (health check) по эндпоинту Synapse (
http://127.0.0.1:8008/health) для подтверждения готовности службы.
-
Контейнеры Docker и их развертывание¶
Стек приложения состоит из трех основных контейнеров, определенных в файле docker-compose.yml, расположенном в /opt/matrix.
| Имя контейнера | Образ | Описание |
|---|---|---|
db | postgres:15-alpine | База данных PostgreSQL для хранения данных Matrix. |
synapse | matrixdotorg/synapse:latest | Бэкенд сервера Matrix (homeserver). |
element | vectorim/element-web:latest | Веб-интерфейс клиента Element. |
Для управления стеком используются следующие команды:
-
Загрузка образов:
docker compose pull --project-directory /opt/matrix -
Запуск стека:
docker compose up -d --project-directory /opt/matrix
Контейнер element работает на порту 80 и доступен только из localhost (127.0.0.1:8080), полагаясь на прокси-сервер Nginx для внешнего доступа. Контейнер synapse открывает порт 8008 для localhost.
Прокси-серверы¶
Трафик к приложению обрабатывается отдельным стеком Nginx, работающим в контейнере Docker с параметром network_mode: host. Этот стек использует jonasal/nginx-certbot для управления SSL-сертификатами и маршрутизацией.
Конфигурация Nginx¶
Конфигурация прокси-сервера хранится в /data/nginx/user_conf.d/element<Server ID>.hostkey.in.conf. Конфигурация включает:
-
Имя сервера: Совпадает с FQDN
element<Server ID>.hostkey.in. -
SSL-сертификаты: Управляются Certbot, хранятся в
/etc/letsencrypt/live/. -
Правила маршрутизации:
-
Запросы, совпадающие с
/_matrixили/_synapse/client, перенаправляются наhttp://127.0.0.1:8008(Synapse). -
Все остальные запросы перенаправляются на
http://127.0.0.1:8080(Element Web).
Порты¶
-
Стандартный HTTPS: Порт
443(IPv4 и IPv6). -
Альтернативный HTTPS: Порт
8448(IPv4 и IPv6).
Базы данных¶
Для сохранения данных приложение использует PostgreSQL версии 15 (вариант Alpine).
-
Метод подключения: Внутренняя сеть Docker; Synapse подключается к базе данных, используя хостнейм
db. -
Место хранения данных: Данные сохраняются в именованном томе Docker
postgres-data, который маппится на/var/lib/postgresql/dataвнутри контейнера. -
Настройки базы данных:
-
Имя базы данных:
synapse -
Имя пользователя:
synapse -
Пароль:
synapse -
Кодировка: UTF-8
-
Локаль:
C
Настройки прав доступа¶
Права доступа к файлам и каталогам строго определены для обеспечения безопасности и корректной работы служб:
-
Базовые каталоги:
/opt/matrix,/opt/matrix/schemasпринадлежатroot:rootс правами0755. -
Каталог данных Synapse:
/opt/matrix/filesпринадлежит пользователю/группе991:991с правами0755. Это соответствует UID/GID, используемому контейнером Synapse. -
Конфигурационные файлы:
-
homeserver.yaml: Принадлежит991:991с правами0644. -
element-config.json: Принадлежитroot:rootс правами0644. -
docker-compose.yml: Принадлежитroot:rootс правами0644. -
Каталоги Nginx:
/root/nginxи/data/nginx/user_conf.dпринадлежатroot:rootс правами0755.
Расположение файлов конфигурации и данных¶
Ключевые файлы конфигурации расположены по следующим путям:
-
Конфигурация Synapse:
/opt/matrix/files/homeserver.yaml -
Определяет имя сервера, слушатели (порт 8008), подключение к базе данных и настройки регистрации.
-
В данной конфигурации регистрация включена без проверки.
-
Конфигурация клиента Element:
/opt/matrix/element-config.json -
Устанавливает базовый URL homeserver, элементы брендинга и конечные точки интеграции.
-
Конфигурация прокси-сервера Nginx:
/data/nginx/user_conf.d/element<Server ID>.hostkey.in.conf -
Определяет параметры SSL и правила обратного проксирования.
-
Определения Docker Compose:
-
Стек Matrix:
/opt/matrix/docker-compose.yml -
Стек прокси:
/root/nginx/compose.yml
Доступные порты для подключения¶
Следующие порты используются для внешнего и внутреннего обмена данными:
| Порт | Протокол | Служба | Описание |
|---|---|---|---|
| 443 | HTTPS | Nginx Proxy | Основная точка входа для SSL-трафика. |
| 8448 | HTTPS | Nginx Proxy | Альтернативный SSL-порт. |
| 8008 | HTTP | Synapse | Внутренний API Matrix (доступен только localhost). |
| 8080 | HTTP | Element Web | Внутренний веб-интерфейс (доступен только localhost). |
| 5432 | TCP | PostgreSQL | Внутренний порт базы данных (не открыт во внешнюю сеть). |
Запуск, остановка и обновление¶
Стеки Matrix и Proxy управляются через команды Docker Compose.
Стек Matrix¶
Расположен в /opt/matrix:
-
Запуск:
-
Остановка:
-
Обновление:
Стек Прокси¶
Расположен в /root/nginx:
-
Запуск:
-
Остановка:
Проверка состояния служб¶
После запуска стека Matrix проверьте работоспособность службы Synapse, обратившись к эндпоинту:
Успешный ответ свидетельствует о том, что служба функционирует корректно.