Воронин

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

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

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

мы вошли

поздравляю

как получить id пользователя и группы в synology

чтобы получить id пользователя и группы в synology есть 2 пути:

  1. используем подключение ssh
    включаем терминал в панели управления

дальше подключаемся чрез ssh (в windows и linux клиент встроен в систему)

выполните команду id

uid=1026(axl) gid=100(users)

у меня пользователь id (uid) — 1026
id группы (gid) — 100

  1. чуть дольше, делается через web интерфейс, никаких ssh не требуется

идём в «Панель управления» -> «Планировщик задач» -> «Создать» -> «Запланированная задача» -> «Скрипт, созданный пользователем»

создаём задание, которое будет выполняться от имени нужного нам пользователя, обязательно отключаем

указываем «не повторять»

результат получим на почту, укажем адрес

и команда

id

после того как создали задачу, выбираем её в списке и жмём «выполнить»

и ждём, когда нам на почту придём результат

подключаем AI к нашему synology

Я использовал свою систему запущенную на Ollama (Nvidia RTX4090), по производительности просадок нет. Как поднять на debian ollama расписывать не стану, сразу перейду к настройке совместной работы с synology.

Для начала на м надо сделать модель, которую сможет вызывать synology, для этого я склонировал Qwen/Qwen3-235B-A22B в gpt-4o-mini

echo "FROM qwen3:235b" >> gpt-4o-mini.Modelfile
ollama create gpt-4o-mini -f ./gpt-4o-mini.Modelfile

проверка работы

curl http://localhost:11434/api/generate -d '{ "model": "gpt-4o-mini", "prompt": "Why is the sky blue?" }'

URL по-умолчанию для подключения к локальной Ollama http://ip_нашего_сервера:11434

формат API идентичный OpenAI

теперь в Synology добавляем новую LLM

название указываем своё, ключ API — любой (можно пробел)

открываем «Дополнительные настройки» и прописываем нашу URL

готово

Ранее Ctrl + ↓