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

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

  1. Установка Docker: Если отсутствует, движок Docker (docker-ce, docker-ce-cli, containerd.io) и плагин Docker Compose устанавливаются через официальный репозиторий Docker.

  2. Инициализация каталогов: Скрипт проверяет существование каталога /opt/matrix и его подкаталогов (files, schemas) с надлежащим владением.

  3. Развертывание конфигурации:

    • Конфигурация Synapse (homeserver.yaml) размещается в /opt/matrix/files.

    • Конфигурация клиента Element (element-config.json) размещается в /opt/matrix.

    • Файл Docker Compose генерируется в /opt/matrix/docker-compose.yml.

  4. Развертывание контейнеров:

    • Образы загружаются из реестра (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:

  • Запуск:

    docker compose -f docker-compose.yml up -d
    

  • Остановка:

    docker compose -f docker-compose.yml down
    

  • Обновление:

    docker compose -f docker-compose.yml pull
    docker compose -f docker-compose.yml up -d
    

Стек Прокси

Расположен в /root/nginx:

  • Запуск:

    docker compose -f compose.yml up -d
    

  • Остановка:

    docker compose -f compose.yml down
    

Проверка состояния служб

После запуска стека Matrix проверьте работоспособность службы Synapse, обратившись к эндпоинту:

curl http://127.0.0.1:8008/health
Успешный ответ свидетельствует о том, что служба функционирует корректно.

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