Обзор развертывания 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/files: рабочая директория приложения, включая конфигурацию Synapse (homeserver.yaml) и медиа-файлы. -
/opt/matrix/schemas: директория для схем баз данных. -
/root/nginx: конфигурационные файлы и compose-файл для прокси-сервера Nginx с поддержкой SSL. -
/data/nginx/user_conf.d: пользовательские конфигурации виртуальных хостов Nginx.
Процесс установки приложения¶
Развертывание выполняется в несколько этапов:
-
Подготовка системы: Установка необходимых системных пакетов (
ca-certificates,curl,gnupg,lsb-release). -
Установка Docker: Если Docker не установлен, система автоматически добавляет официальный репозиторий Docker и устанавливает пакеты
docker-ce,docker-ce-cli,containerd.io,docker-buildx-pluginиdocker-compose-plugin. -
Настройка окружения: Создание необходимых директорий в
/opt/matrixс установкой прав доступа для пользователя Synapse (UID 991). -
Развертывание контейнеров:
-
Генерация конфигурационных файлов (
homeserver.yaml,element-config.json). -
Запуск стека Docker Compose для основных сервисов приложения.
-
Настройка прокси и SSL: Развертывание Nginx через Docker для обеспечения работы по протоколу HTTPS с использованием сертификатов Let's Encrypt.
Права доступа и безопасность¶
-
Директория
/opt/matrix/filesпринадлежит пользователю с UID991. -
Конфигурационные файлы в
/root/nginxимеют права0644. -
Docker-контейнеры работают в изолированных сетях, за исключением Nginx, который использует режим
hostдля управления портами.
Базы данных¶
В качестве базы данных используется PostgreSQL 15 (Alpine).
-
Имя пользователя:
synapse -
Пароль:
synapse -
Метод подключения: Контейнеры взаимодействуют через внутреннюю сеть Docker по имени хоста
db. -
Хранение данных: Данные базы данных сохраняются в именованном томе
postgres-data.
Контейнеры Docker и их запуск¶
Приложение состоит из нескольких контейнеров, управляемых через Docker Compose.
Основной стек приложения (docker-compose.yml)¶
| Имя образа | Назначение | Порты | Тома (Volumes) | Политика перезапуска |
|---|---|---|---|---|
postgres:15-alpine | База данных | - | postgres-data:/var/lib/postgresql/data | unless-stopped |
matrixdotorg/synapse:latest | Matrix Homeserver | 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/compose.yml)¶
| Имя образа | Назначение | Порты | Тома (Volumes) | Политика перезапуска |
|---|---|---|---|---|
jonasal/nginx-certbot:latest | Nginx + SSL | 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:
Это позволит загрузить актуальные версии образов и перезапустить контейнеры.
Расположение конфигурационных файлов и данных¶
-
Конфигурация Matrix:
/opt/matrix/files/homeserver.yaml -
Конфигурация Element:
/opt/matrix/files/element-config.json -
Данные базы данных: в Docker volume
postgres-data. -
Настройки Nginx:
/root/nginx/compose.ymlи файлы в/data/nginx/user_conf.d/.
Доступные порты для подключения¶
-
443: HTTPS (основной интерфейс через Nginx). -
8448: Порт федерации Matrix. -
8008: API Synapse (доступен локально или через прокси). -
8080: Веб-интерфейс Element (доступен только на localhost для безопасности).