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

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

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

Развертывание выполняется в несколько этапов:

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

  2. Установка Docker: Если Docker не установлен, система автоматически добавляет официальный репозиторий Docker и устанавливает пакеты docker-ce, docker-ce-cli, containerd.io, docker-buildx-plugin и docker-compose-plugin.

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

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

  5. Генерация конфигурационных файлов (homeserver.yaml, element-config.json).

  6. Запуск стека Docker Compose для основных сервисов приложения.

  7. Настройка прокси и SSL: Развертывание Nginx через Docker для обеспечения работы по протоколу HTTPS с использованием сертификатов Let's Encrypt.

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

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

  • Конфигурационные файлы в /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:

docker compose pull && docker compose up -d

Это позволит загрузить актуальные версии образов и перезапустить контейнеры.

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

  • Конфигурация 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 для безопасности).

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