Обзор развертывания Element на сервере¶
Предварительные требования¶
Для корректной работы приложения сервер должен соответствовать следующим требованиям:
-
Операционная система: Ubuntu.
-
Права доступа: Права суперпользователя (root) для установки системных пакетов и управления Docker.
-
Доменное имя: Наличие настроенного домена, соответствующего шаблону в разделе ниже.
-
Порты: Должны быть открыты порты 80, 443 (HTTPS), 8448 (Federation) и 8008 (Synapse API).
FDQN итоговой панели на домене hostkey.in¶
Для работы сервиса используется динамически формируемый поддомен.
| Параметр | Значение |
|---|---|
| Префикс | element |
| Домен | hostkey.in |
| Полный шаблон | element{Server_ID_from_Invapi}.hostkey.in |
Структура файлов и каталогов¶
Все основные данные приложения и конфигурации сосредоточены в директории /opt/matrix.
-
/opt/matrix/docker-compose.yml— основной файл развертывания контейнеров. -
/opt/matrix/files/homeserver.yaml— главный конфигурационный файл сервера Synapse. -
/opt/matrix/files/element-config.json— конфигурация веб-клиента Element. -
/data/nginx/user_conf.d/— директория с конфигурациями виртуальных хостов Nginx. -
/root/nginx/compose.yml— файл развертывания прокси-сервера для управления SSL.
Процесс установки приложения¶
Развертывание выполняет комплексную настройку системы, состоящую из следующих этапов:
-
Подготовка среды: Установка необходимых системных пакетов (
ca-certificates,curl,gnupg,lsb-release). -
Установка Docker: Если среда не содержит Docker, устанавливается
docker-ce,docker-compose-pluginи сопутствующие компоненты из официального репозитория. -
Настройка окружения: Создание рабочей директории
/opt/matrixи подкаталогов для данных (files) и схем базы данных (schemas). -
Развертывание контейнеров:
-
Загрузка образов из Docker Hub.
-
Развертывание стека сервисов через
docker compose. -
Настройка прокси и SSL: Создание конфигурации Nginx для управления входящим трафиком и автоматического получения сертификатов через Certbot.
Права доступа и безопасность¶
-
Конфигурационные файлы в
/opt/matrixимеют ограниченный доступ (владелецroot). -
Данные Synapse в каталоге
/opt/matrix/filesпринадлежат пользователю с UID991. -
Директория для конфигураций Nginx создается с правами
0755.
Базы данных¶
В качестве базы данных используется контейнер PostgreSQL 15 (Alpine).
-
Имя пользователя:
synapse -
Пароль:
synapse -
Метод хранения: Данные хранятся в именованном Docker-томе
postgres-data. -
Настройки кодировки: Используется UTF-8 с параметрами
LC_COLLATE=CиLC_CTYPE=C.
Контейнеры Docker и их запуск¶
Приложение развертывается в виде группы контейнеров.
Основной стек приложения (Matrix Stack)¶
| Имя образа | Сервис | Порты | Тома (Volumes) | Политика перезапуска |
|---|---|---|---|---|
postgres:15-alpine | db | Нет | postgres-data:/var/lib/postgresql/data | unless-stopped |
matrixdotorg/synapse:latest | synapse | 8008:8008 | ./files:/data | unless-stopped |
vectorim/element-web:latest | element | 127.0.0.1:8080:80 | ./element-config.json:/app/config.json | unless-stopped |
Прокси-сервер (Nginx-Certbot)¶
| Имя образа | Сервис | Порты | Тома (Volumes) | Политика перезапуска |
|---|---|---|---|---|
jonasal/nginx-certbot:latest | nginx | host mode | nginx_secrets:/etc/letsencrypt, /data/nginx/user_conf.d:/etc/nginx/user_conf.d, /usr/share/element-web:/usr/share/element-web:ro | unless-stopped |
Инструкция по обновлению приложения¶
Для обновления основного приложения необходимо выполнить следующие действия в директории /opt/matrix:
-
Подтянуть новые версии образов:
-
Перезапустить контейнеры с использованием новых образов:
Расположение конфигурационных файлов и данных¶
-
Конфигурация Synapse:
/opt/matrix/files/homeserver.yaml -
Конфигурация Element:
/opt/matrix/element-config.json -
Данные PostgreSQL: Docker volume
postgres-data -
Данные Synapse (медиа и файлы):
/opt/matrix/files/
Доступные порты для подключения¶
| Порт | Назначение | Доступность |
|---|---|---|
443 | HTTPS (Web Client / API) | Публично |
8448 | Matrix Federation | Публично |
8008 | Synapse API (внутренний) | Локально |
8080 | Element Web (локальный прокси) | Только localhost |