Обзор развертывания Element на сервере¶
Предварительные требования и базовые условия¶
Для развертывания требуется сервер на базе Linux с операционной системой Ubuntu. Необходимы следующие компоненты и права доступа:
-
Операционная система: Ubuntu (конкретная версия определяется динамически во время установки по кодовому имени).
-
Права доступа: Требуется доступ root или права
sudoдля установки Docker, управления системными службами и настройки межсетевого экрана (firewall). -
Домен: Сервер должен быть доступен через домен
hostkey.in. -
Порты: Порты 80, 443 и 8448 должны быть открыты для веб-трафика и завершения SSL-соединений. Порт 8008 используется внутренне для API Synapse, а порт 8080 — внутренне для веб-клиента Element.
FQDN финальной панели¶
Полное доменное имя (FQDN) для приложения формируется по следующему шаблону:
element<Server ID>.hostkey.in
Замените <Server ID> на конкретный идентификатор, назначенный экземпляру сервера. Приложение доступно через HTTPS на порту 443.
Структура файлов и каталогов¶
Файлы приложения, конфигурации и данные организованы в следующих расположениях:
-
Базовый каталог:
/opt/matrix -
Данные и медиа Synapse:
/opt/matrix/files -
Схемы Synapse:
/opt/matrix/schemas -
Конфигурация Nginx:
/data/nginx/user_conf.d -
Секреты и сертификаты Nginx:
/etc/letsencrypt -
Конфигурация Compose для Nginx:
/root/nginx
Процесс установки приложения¶
Приложение развертывается с использованием Docker Compose. Процесс установки включает следующие шаги:
-
Установка Docker: Если Docker отсутствует, система устанавливает
docker-ce,docker-ce-cli,containerd.ioи плагинdocker-compose-plugin. -
Создание каталогов: Создается базовый каталог
/opt/matrixи подкаталоги для файлов и схем с соответствующими правами владения. -
Развертывание конфигурации:
-
Файл
docker-compose.ymlгенерируется в/opt/matrix. -
Файл конфигурации Synapse
homeserver.yamlразмещается в/opt/matrix/files. -
Файл конфигурации веб-клиента Element
element-config.jsonразмещается в/opt/matrix.
-
-
Развертывание контейнеров: Образы Docker для PostgreSQL, Synapse и Element Web загружаются и запускаются с помощью
docker compose. -
Проверка работоспособности (Health Check): Развертывание ожидает, пока эндпоинт проверки работоспособности Synapse по адресу
http://127.0.0.1:8008/healthвернет код состояния 200, прежде чем завершится.
Контейнеры Docker и их развертывание¶
Стек приложения состоит из трех основных контейнеров, управляемых через Docker Compose:
-
База данных (
db): -
Образ:
postgres:15-alpine -
Назначение: Хранение данных Synapse.
-
Том:
postgres-data, смонтированный в/var/lib/postgresql/data. -
Synapse (
synapse): -
Образ:
matrixdotorg/synapse:latest -
Назначение: Бэкенд сервера Matrix (homeserver).
-
Том: Каталог хоста
/opt/matrix/files, смонтированный в/data. -
Порт: Открывает порт 8008 внутренне.
-
Element (
element): -
Образ:
vectorim/element-web:latest -
Назначение: Интерфейс веб-клиента.
-
Том: Файл хоста
/opt/matrix/element-config.json, смонтированный в/app/config.json. -
Порт: Открывает порт 80 внутренне, привязанный к
127.0.0.1:8080.
Файл Docker Compose находится по адресу /opt/matrix/docker-compose.yml.
Прокси-серверы¶
Nginx используется в качестве обратного прокси-сервера и терминала SSL. Он развертывается через отдельный стек Docker Compose, расположенный в /root/nginx.
-
Образ:
jonasal/nginx-certbot:latest -
Функция: Обрабатывает SSL-сертификаты через Certbot и маршрутизирует трафик к внутренним службам.
-
Конфигурация:
-
Конфигурация Nginx для домена Matrix хранится по адресу
/data/nginx/user_conf.d/<matrix_domain>.conf. -
SSL-сертификаты хранятся в
/etc/letsencrypt/live/<matrix_domain>. -
Маршрутизация:
-
Запросы к
/_matrixи/_synapse/clientпроксируются наhttp://127.0.0.1:8008(Synapse). -
Все остальные запросы проксируются на
http://127.0.0.1:8080(Element Web).
Базы данных¶
Приложение использует PostgreSQL для хранения данных.
-
Имя базы данных:
synapse -
Пользователь:
synapse -
Пароль:
synapse -
Хост:
db(внутреннее имя хоста сети Docker) -
Хранилище: Данные сохраняются в томе Docker
postgres-data. -
Настройки подключения:
-
Драйвер:
psycopg2 -
Кодировка:
UTF-8 -
Сортировка (Collation):
C -
Ctype:
C
Настройки прав доступа¶
Права доступа к файлам и каталогам настроены следующим образом для обеспечения безопасности и корректной работы:
-
/opt/matrix: Владелецroot:root, режим0755. -
/opt/matrix/files: Владелец991:991(пользователь Synapse), режим0755. -
/opt/matrix/schemas: Владелецroot:root, режим0755. -
/opt/matrix/docker-compose.yml: Владелецroot:root, режим0644. -
/opt/matrix/files/homeserver.yaml: Владелец991:991, режим0644. -
/opt/matrix/element-config.json: Владелецroot:root, режим0644. -
/root/nginx: Владелецroot:root, режим0755. -
/data/nginx/user_conf.d: Владелецroot:root, режим0644.
Расположение файлов конфигурации и данных¶
Ключевые файлы конфигурации находятся по следующим путям:
| Имя файла | Путь | Описание |
|---|---|---|
docker-compose.yml | /opt/matrix/docker-compose.yml | Определяет службы стека Matrix. |
homeserver.yaml | /opt/matrix/files/homeserver.yaml | Конфигурация сервера Synapse. |
element-config.json | /opt/matrix/element-config.json | Конфигурация веб-клиента Element. |
compose.yml | /root/nginx/compose.yml | Определяет стек Nginx и Certbot. |
nginx_matrix.conf | /data/nginx/user_conf.d/<domain>.conf | Конфигурация блока сервера Nginx. |
Доступные порты для подключения¶
В развертывании используются следующие порты:
-
443: Трафик HTTPS для веб-интерфейса и API (через Nginx).
-
8448: Альтернативный порт HTTPS (через Nginx).
-
8008: Внутренний порт API Synapse (привязан к localhost).
-
8080: Внутренний порт Element Web (привязан к localhost).
Запуск, остановка и обновление¶
Управление службами осуществляется с помощью команд Docker Compose, выполняемых в соответствующих каталогах проектов.
-
Запуск/Перезапуск стека Matrix:
-
Остановка стека Matrix:
-
Обновление стека Matrix:
-
Запуск/Перезапуск стека Nginx:
-
Остановка стека Nginx: