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

жмём «редактировать» чтобы сменить сервер на наш

создаём новую учётную запись

мы вошли

поздравляю

Отправить
Поделиться
Твитнуть
Запинить