MatrixRTC сервер на базе Synology
развернём свой matrix сервер используя средства synology
для начала подготовим папки, где будят хранится настройки сервера и база PostgreSQL
в каталоге docker создал папку matrix а в ней уже data и db соответственно
так же нам нужно получить id пользователя и группы, uid и gid
затем идём в «Панель управления» -> «Планировщик задач» -> «Создать» -> «Запланированная задача» -> «Скрипт, созданный пользователем»
создаём задачу «MATRIX», указываем пользователя «root» и обязательно отключаем
в расписание обязательно «не повторять»
и пишем скрипт для запуска, нам нужно запустить его один раз для создания структуры
сам скрипт:
#!/bin/bash
docker run --rm \
--user 1026:100 \
-v /volume1/docker/matrix/data:/data \
-e SYNAPSE_CONFIG_PATH=/data/homeserver.yaml \
-e SYNAPSE_SERVER_NAME=matrixchat \
-e SYNAPSE_REPORT_STATS=yes \в скрипт подставляем «user 1026:100» uid и gid полученные выше
после того как создали задачу, выбираем её в списке и жмём «выполнить», вам потребуется указать пароль текущего пользователя и он должен быть с правами администратора
отредактируем файл конфигурации нашего сервера
добавляем следующие параметры после названия сервера
enable_registration: true
enable_registration_without_verification: true
enable_group_creation: true
теперь меняем параметры базы данных, заменим следующие строчки
database:
name: sqlite3
args:
database: /data/homeserver.db
на
database:
name: psycopg2
args:
user: synapseuser
password: synapsepass
database: synapsedb
host: synapse-db
cp_min: 5
cp_max: 10
при редактировании файла конфигурации важно не ошибиться в отступах
теперь готовим файл compose.yaml следующего содержимого
services:
synapse-db:
image: postgres:16
container_name: Synapse-DB
hostname: synapse-db
security_opt:
- no-new-privileges:true
healthcheck:
test: ["CMD", "pg_isready", "-q", "-d", "synapsedb", "-U", "synapseuser"]
timeout: 45s
interval: 10s
retries: 10
volumes:
- /volume1/docker/matrix/db:/var/lib/postgresql/data:rw
environment:
- POSTGRES_DB=synapsedb
- POSTGRES_USER=synapseuser
- POSTGRES_PASSWORD=synapsepass
- POSTGRES_INITDB_ARGS=--encoding=UTF-8 --lc-collate=C --lc-ctype=C
restart: on-failure:5
synapse:
image: matrixdotorg/synapse:latest
container_name: Synapse
hostname: synapse
security_opt:
- no-new-privileges:true
user: 1026:100
environment:
- TZ=Europe/Moscow
- SYNAPSE_CONFIG_PATH=/data/homeserver.yaml
volumes:
- /volume1/docker/matrix/data:/data:rw
ports:
- 8450:8008/tcp
restart: on-failure:5
depends_on:
synapse-db:
condition: service_startedобратите внимание, что пусти /volume1/docker/matrix/db и /volume1/docker/matrix/data должны вести на папки, созданные выше
идём в Container manager, Проект и жмём «создать»
даём название проекту, указываем путь к нашей папке matrix и выбираем с компьютера файл compose.yaml
настройки web портала не трогаем, мы будем настраивать обратный прокси
запускаем
ждём старта проекта
настраиваем обратный прокси
создаём новую запись, указываем имя нашего сервера, например «im.server.ru», порт 443, обязательно включаем HSTS и порт нашего контейнера 8450
создаём заголовки под websocket
выпускаем сертификат для нашего сервера
идём в настройки и назначаем сертификат домену
осталось скачать клиент и подключиться к серверу
https://element.io/download
жмём «редактировать» чтобы сменить сервер на наш
создаём новую учётную запись
мы вошли
поздравляю