Воронин

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

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

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

мы вошли

поздравляю

как получить 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 + ↓