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 полученные выше
после того как создали задачу, выбираем её в списке и жмём «выполнить», вам потребуется указать пароль текущего пользователя и он должен быть с правами администратора
теперь готовим файл 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 портала не трогаем, мы будем настраивать обратный прокси
запускаем
ждём старта проекта
теперь надо остановить проект и отредактировать файл конфигурации нашего сервера
добавляем следующие параметры после названия сервера
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
при редактировании файла конфигурации важно не ошибиться в отступах
настраиваем обратный прокси
создаём новую запись, указываем имя нашего сервера, например «im.server.ru», порт 443, обязательно включаем HSTS и порт нашего контейнера 8450
создаём заголовки под websocket
выпускаем сертификат для нашего сервера
идём в настройки и назначаем сертификат домену
осталось скачать клиент и подключиться к серверу
https://element.io/download
жмём «редактировать» чтобы сменить сервер на наш
создаём новую учётную запись
мы вошли
поздравляю