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

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

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

мы вошли

поздравляю

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