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

Обзор развертывания 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.

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

Развертывание выполняет комплексную настройку системы, состоящую из следующих этапов:

  1. Подготовка среды: Установка необходимых системных пакетов (ca-certificates, curl, gnupg, lsb-release).

  2. Установка Docker: Если среда не содержит Docker, устанавливается docker-ce, docker-compose-plugin и сопутствующие компоненты из официального репозитория.

  3. Настройка окружения: Создание рабочей директории /opt/matrix и подкаталогов для данных (files) и схем базы данных (schemas).

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

  5. Загрузка образов из Docker Hub.

  6. Развертывание стека сервисов через docker compose.

  7. Настройка прокси и SSL: Создание конфигурации Nginx для управления входящим трафиком и автоматического получения сертификатов через Certbot.

Права доступа и безопасность

  • Конфигурационные файлы в /opt/matrix имеют ограниченный доступ (владелец root).

  • Данные Synapse в каталоге /opt/matrix/files принадлежат пользователю с UID 991.

  • Директория для конфигураций 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:

  1. Подтянуть новые версии образов:

    docker compose pull
    

  2. Перезапустить контейнеры с использованием новых образов:

    docker compose up -d
    

Расположение конфигурационных файлов и данных

  • Конфигурация 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
question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×