[РЕШЕНО]Matrix Synapse coturn 2025г установка запуск настройка

php, apache, mysql, snort...


lnx
Сообщения: 339
Зарегистрирован: 24.08.2022

#

Есть двустороняя видеосвязь. Вчерашние проблемы коренились в прошивке телефона и банальная перезагрузка продвинула дело. Но на стороне ноутбука проблема с кодеками, звука с него нет, ругается на -
(nheko:82474): GLib-GObject-CRITICAL **: 20:15:47.355: g_object_set_is_valid_property: object class 'GstVP8Dec' has no property named 'wait-for-keyframe'
(nheko:82474): GLib-GObject-CRITICAL **: 20:15:47.567: g_object_set_is_valid_property: object class 'GstRTPOpusDepay' has no property named 'wait-for-keyframe'
(nheko:82474): GLib-GObject-CRITICAL **: 20:15:47.568: g_object_set_is_valid_property: object class 'GstOpusDec' has no property named 'wait-for-keyframe'
Очевидно не хватает каких-то пакетов в системе, связанных с кодеками. Сейчас установлены -
pacman -Qs gst
local/gst-plugin-pipewire 1:1.4.7-1
    Multimedia graph framework - pipewire plugin
local/gst-plugin-qml6 1.26.5-1
    Multimedia graph framework - qml6 plugin
local/gst-plugin-webrtchttp 0.14.1-1
    Multimedia graph framework - webrtchttp plugin
local/gst-plugins-bad 1.26.5-1
    Multimedia graph framework - bad plugins
local/gst-plugins-bad-libs 1.26.5-1
    Multimedia graph framework - bad
local/gst-plugins-base 1.26.5-1
    Multimedia graph framework - base plugins
local/gst-plugins-base-libs 1.26.5-1
    Multimedia graph framework - base
local/gst-plugins-good 1.26.5-1
    Multimedia graph framework - good plugins
local/gstreamer 1.26.5-1
    Multimedia graph framework - core


Чем утолить его жажду?
ALiEN
Аватара пользователя
Сообщения: 358
Зарегистрирован: 23.08.2022

#

pacman -S gst-plugins-{good,bad,ugly} --needed

🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

lnx
Сообщения: 339
Зарегистрирован: 24.08.2022

#

доставился только ugly, остальные были, но ошибка не ушла и голоса нет. При этом через другого клиента голос есть (но тот клиент на Хроме и этого я не хочу)
GLib-GObject-CRITICAL **: 22:29:58.851: g_object_set_is_valid_property: object class 'GstVP8Dec' has no property named 'wait-for-keyframe'
GLib-GObject-CRITICAL **: 22:29:59.100: g_object_set_is_valid_property: object class 'GstRTPOpusDepay' has no property named 'wait-for-keyframe'
GLib-GObject-CRITICAL **: 22:29:59.102: g_object_set_is_valid_property: object class 'GstOpusDec' has no property named 'wait-for-keyframe'


lnx
Сообщения: 339
Зарегистрирован: 24.08.2022

#

Блин. Кто бы мог подумать. Магия со вчерашним неприменением настроек раскрыта (и неточность очередной инструкции тоже) - сервер их передает клиенту при первом подключении при старте клиента. Соответственно в каждом случае правки конфига надо не только сервер перезагружать, но и пытаемых клиентов. А с учетом того, что телефонные программы имеют свойство не закрываться, а сворачиваться, надо телефон перезагружать.
Отмечу, видеозвонки (терпеть их не могу, но нужно) весьма бодрые.
А косяк на стороне клиента nheko. Потому как schildichat живенько работает, все сервисы подняты нормально и работают. Обкатаю, повторю результат и выложу как инструкцию. Оказывается это таки он ломает работу с турном, сообщая -
[ui] [error] WebRTC: GstWebRTCICEConnectionState -> Failed
(nheko:92407): libnice-WARNING **: 23:14:35.075: Agent 0x557df3b0f910 : We still have alive TURN refreshes. Consider using nice_agent_close_async() to prune them before releasing the agent.
Если кто подскажет, как починить - буду рад и признателен, ибо поделки на основе хрома или электрона я не люблю.
SuperMario
Сообщения: 1
Зарегистрирован: 24.10.2025

#

Вам нужна конференц связь или связь собеседник + собеседник?
mrfinny
Сообщения: 3
Зарегистрирован: 21.11.2025

#

Здравствуйте, уважаемый! С недавних пор ведём борьбу по выполнению аналогичной задачи по аналогичным же причинам...борьба идёт с переменным успехом)) не затруднит ли Вас, все-таки выложить инструкции, как обещали?) Запрос есть ))
lnx
Сообщения: 339
Зарегистрирован: 24.08.2022

#

Я свой проект отключил - до времени и нужды. Причина -
1. линуксовые клиенты мне не нравятся, из всего множества реально работает лишь на базе электрона. Часть, милые по интерфейсу, работают частично и молча не дают видеосвязь во вне - и как было понять, что причина в них?
2. без всяких яких работает сигнал. Но не на компьютере - с этим пока мирюсь
3. тлг, как знает каждый школьник (надо же, я вот не знал) баланально в полной мере работает через впн, даже бесплатный

Однако если таки нужно, то подтвердите - соберусь с мыслями и отпишу.
mrfinny
Сообщения: 3
Зарегистрирован: 21.11.2025

#

Мы в процессе разворачивания и есть то там то там затыки...стараемся рыть оф документацию, мануалы которые есть в сети, мягко говоря не охватывают всех сценариев настройки и использования...поэтому Ваше опыт будет очень полезен не только нам, уверен, в целом он будет полезен для комьюнити))
lnx
Сообщения: 339
Зарегистрирован: 24.08.2022

#

Пост этот будет редактироваться. Я некоторые вещи подзабыл и в ответ на ворчание пользователей постараюсь поправить ошибки.
Собственно установка состоит из нескольких частей -

0. первым делом наладить скачивание с гита и автобан для всех ботов роскомкозлов

1. на выбранном сервере надо установить сам демон, это достаточно просто. Поскольку задача ставилась развернуть сервер "далеко" и на этом сервере крутятся другие серверы, то надо было им не помешать. Ресурсов много не требуется. Поскольку со времен CentOS (закидают меня за офтопик, потому скажу, что на Arch я тоже запускал, аналогично) ценю их надежность, то ... запустил два своих сервера, на Arch + AlmaLinux. Дело в том, что ставилась задача наладить связь с родной с родственной страной, в которой не открывается все ru, потому второй сервер поднимался "вдали". В итоге все ставится из репозиториев. Основное направление задано здесь - AlmaLinux https://matrix-org.github.io/synapse/la ... ation.html
gcc python3-devel libffi-devel openssl-devel coturn
pacman -S matrix-synapse
vi /usr/lib/systemd/system/synapse.service -там если что надо, поправить. Обычно не надо (имя конфига не трогаем и все Ок)
systemctl enable synapse

mkdir /opt/synapse
	useradd -r -m -d /opt/synapse -s /bin/bash synapse
	chown -R synapse:synapse /var/lib/synapse /etc/synapse /opt/synapse
	sudo su synapse -s /bin/bash
	cd /opt/synapse
	python3 -m venv env
        source env/bin/activate
	pip install --upgrade pip virtualenv
	pip install matrix-synapse  
		    python -m synapse.app.homeserver --server-name ДОМЕН  --config-path homeserver.yaml --generate-config --report-stats=no
		    sudo su synapse 
		    /opt/synapse/env/usr/bin/python3 -m synapse.app.homeserver --config-path=/opt/synapse/homeserver.yaml --daemonize
По идее скрипт-установщик может запустить скрипт-конфигуратор для создания конфига, но можно это сделать и вручную -
generate_config --server-name ДОМЕН --config-dir /etc/synapse --data-dir /var/lib/synapse --report-stats yes --generate-secrets --output-file /etc/synapse/homeserver.yaml

Может потребоваться создать ключик в директории synapse (где бы он ни был), сменить владельца
generate_signing_key --output_file /etc/synapse/ДОМЕН.signing.key

chown -R synapse:synapse /etc/synapse /var/log/synapse


Менять имя synapse.app.homeserver на что-то иное не следует, примерно как и с именем sshd_config - см. выше. Где бы ни лиежал конфиг, есть следует посмотреть, поправить, как-то так -
#https://element-hq.github.io/synapse/latest/setup/installation.html#client-well-known-uri
#https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html
#https://wiki.archlinux.org/title/Matrix

#адрес turn сервера
#https://element-hq.github.io/synapse/latest/turn-howto.html


turn_uris:
        - turn:ДОМЕННЫЙ_ip_адрес:443?transport=udp


turn_shared_secret: "ключикeWlws1c6yfMzvaaooYChx2VN"
turn_user_lifetime: 86400000
turn_allow_guests: false


server_name: "ДОМЕН"
pid_file: /var/lib/synapse/matrix.pid
listeners:
  - port: 8008
    tls: false
    type: http
    x_forwarded: true
    bind_addresses: ['::1', '127.0.0.1', '192.168.1.21']
    resources:
      - names: [client, federation]
        compress: true



#для хранения сообщений и пр на сервере используется база данных. Либо sqlite,
#либо постгресс, третьего не дано и не будет дано
#https://github.com/element-hq/synapse/blob/develop/docs/postgres.md - это по теме постгресса

#вариант  для Постгресс, требует pacman -S python-psycopg2
#предусмотрена возможность миграции. Отмечено, что при передаче базы из SQLite=>PSQL она разбухнет в 2 раза
#https://matrix-org.github.io/synapse/latest/postgres.html#using-the-port-script
database:
#  allow_unsafe_locale: true
#  name: "psycopg2"
#  args:
#    user: "mx"
#    password: "Vao6Nais"
#    database: "matrix"
#    host: "localhost"
#    port: 5432
#    cp_min: 5
#    cp_max: 10

#вариант для SQLite
  name: sqlite3
  args:
     database: /var/lib/synapse/matrix.db



#для снижения потребления памяти установлен пакет  jemalloc, соотв конфиг в
#/etc/default/synapse
#LD_PRELOAD=/usr/lib/libjemalloc.so

caches:
    cache_autotuning:
    max_cache_memory_usage: 1024M
    target_cache_memory_usage: 758M
    min_cache_ttl: 5m

#глобальные настройки срока хранения сообщений на сервере
retention:
enabled: true
default_policy:
min_lifetime: 3d
max_lifetime: 70d


event_cache_size: "10K"
max_upload_size: "50M"
max_image_pixels: "32M"

#для отправки писем пользователям.
#Для синапса желательно иметь возможность отправлять электронную почту.
#Это позволяет Synapsse отправлять электронные письма с сбросом пароля,
#отправлять проверки при добавлении адреса электронной почты в учетную
#запись пользователя, и отправлять
#уведомления по электронной почте о получении новых сообщений
#email:
#  smtp_host: mail.example.org
#  smtp_port: 587
#  smtp_user: "matrix@example.org"
#  smtp_pass: "napoJIb_oT_9LLLuKA"
#  notif_from: "matrix@example.org


log_config: "/etc/synapse/ДОМЕН.log.config"
media_store_path: /var/lib/synapse/media_store
registration_shared_secret: "ключB1zvRnCed1"
report_stats: false
macaroon_secret_key: "ключ*Wn"
form_secret: "ключmx7:w"
signing_key_path: "/etc/synapse/ДОМЕН.signing.key"
#tls_certificate_path: "/etc/synapse/wmatrix.csr"
#tls_private_key_path: "/etc/synapse/wmatrix.key"

#tls_certificate_path: "/etc/synapse/matrix.crt"
#tls_private_key_path: "/etc/synapse/matrix.key"

#tls_certificate_path: "/etc/letsencrypt/live/ДОМЕН/fullchain.pem"
#tls_private_key_path: "/etc/letsencrypt/live/ДОМЕН/privkey.pem"

trusted_key_servers:
#  - server_name: "matrix.org"
  - server_name: "ДОМЕН"
#  - server_name: "ДОМЕН-2"


enable_registration: false

matrix_synapse_federation_enabled: true
matrix_synapse_federation_port_enabled: true
search_all_users: true
prefer_local_users: true
Домен-2 - это Ваш дублирующий сервер, проверено - юзер ДОМЕН спокойно "войдет" через Домен-2. С ключиками - есть ключики, которые по 443 порту отдает nginx, а есть используемые самим synspse, и это разные ключики. Для nginx конфиг примерно такой -
server {
        listen 80;
        server_name ДОМЕН;
        server_tokens off;
        include acme.conf;
        location / {return 301 https://$host$request_uri;}
        }

server {

        server_name ДОМЕН;
        location / {
                proxy_pass http://127.0.0.1:8008;
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header Host $host;
                client_max_body_size 50M;
                #proxy_http_version 1.1;
                }
        #этот блок возвращает в формате JOSN нужный телефонным клиентам ответ
        location /.well-known/matrix/client {
                return 200 '{"m.homeserver": {"base_url": "https://ДОМЕН"}}';
                default_type application/json;
                add_header Access-Control-Allow-Origin *;
                }

        listen 443 ssl ;
        add_header Strict-Transport-Security max-age=15768000;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2  TLSv1.3;
        ssl_ciphers         HIGH:!aNULL:!MD5;
        ssl_certificate /etc/letsencrypt/live/ДОМЕН/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/ДОМЕН/privkey.pem;
        #ssl_certificate /etc/synapse/matrix.crt;
        #ssl_certificate_key /etc/synapse/matrix.key;
        ssl_prefer_server_ciphers on;
        keepalive_timeout   70;
        access_log /var/log/nginx/matrix.log;
        error_log /var/log/nginx/matrix_error.log;
        }
Запустить в ручном режиме. Настроить фронтирующий веб-сервер, скорее всего nginx. При обращении как к сайту по выбранному доменному имени - nginx принимает на порту 443 обращение и передает дальше. Самое пикантное в этих настройках - проброс TURN, который нужен для обеспечения голоса и видео абонетнов ВНЕ локалки. С попытками "прокинуть" через nginx сам TURN я замаялся, всякие там ключи и пр., в итоге плюнул и завернул иначе. Запустил coturn на выбранном мною порту, поскольку я был твердо намерен ограничиваться одним вненим портом 443, то поступил так - через iptable запустил проброс входящих UDP пакетов с 443 порта на порт, слушаемый coturn на 127.0.0.1. Точка., никакого доменного имени даже прописывать не надо, просто по ip. И прописал это в конфиге synapse, см. выше - каждому подключаемому клиенту synapse сообщает, где и как искать TURN и все работает.

TURN изображается демоном coturn, он просто скачивается и запускается, даже правок конфига не требовал -
systemctl status coturn
● coturn.service - coturn
     Loaded: loaded (/usr/lib/systemd/system/coturn.service; disabled; preset: disabled)
     Active: active (running) since Mon 2025-11-24 19:48:53 CET; 6s ago
       Docs: man:coturn(1)
             man:turnadmin(1)
             man:turnserver(1)
   Main PID: 102954 (turnserver)
      Tasks: 7 (limit: 10856)
     Memory: 5.6M
        CPU: 65ms
     CGroup: /system.slice/coturn.service
             └─102954 /usr/bin/turnserver -c /etc/coturn/turnserver.conf --pidfile /run/coturn/turnserver.pid --no-stdout-log
Ну как-то так. Андроидный клиент - с черепахой, SchildiChat - их вроде несколько вариантов, следует брать который next или что-то в этом духе, он дает полный функционал и не прожорливее ТЛГ, десткопный он же SchildiChat - он мне не нравится. Тот, что нравится, дает (или давал?) видео и звук только в один конец
mrfinny
Сообщения: 3
Зарегистрирован: 21.11.2025

#

О, спасибо за оперативность! В начале темы вы упоминали Nheko клиент для windows, и что в нем удалось реализовать аудио и видеозвонки...делали самосборку? Я поставил несколько версий, и, судя по-всему ни одна из них не поддерживает webrtc, соответственно, кнопок аудио и видеозвонок не появляется в клиенте. В мобильных клиентах работает...
lnx
Сообщения: 339
Зарегистрирован: 24.08.2022

#

именно nheko мне нравился по интерфейсу, но связь получалась только в локалке. С участником из-вне не получалось. Пытался списаться с разработчиком, тому это не интересно, его устраивает работающая часть.
Ответить