Search
Write a publication
Pull to refresh

Comments 62

Какие клиенты вы посоветуете, поддерживающие голосовой и видео траффик?

Голос через WebRTC, поэтому клиенты нужны с поддержкой XMPP-звонков.
Самое простое — использовать приложение, которое предлагает Snikket прямо в инвайте (скриншот с примером инвайта):

  • Android / iOS — Snikket App (основан на Conversations/Monal, всё работает «из коробки»).

  • Windows / macOS / Linux — Gajim (последние версии поддерживают звонки), также можно попробовать Dino под Linux.

  • Для iOS дополнительно есть Siskin IM.

То есть, если вы рассылаете инвайт, пользователю даже не нужно гадать — ссылки на подходящие клиенты уже там есть.

сколько по ресурсам кушает это решение??
если просто на условные 10ть человек

По ресурсам решение очень лёгкое. Для ~10 человек хватает даже 1 vCPU и 1–2 ГБ RAM, CPU почти не грузится, т.к. сервер ничего не транскодирует. Нагрузка заметна только если звонки идут через TURN, а не напрямую P2P.

У меня, например, видеозвонок между двумя странами шёл отлично — картинка супер, и это всё на старом CentOS 7. Так что по железу особых требований нет, главное нормальный канал.

Еще бы экран расшаривать, тогда можно было бы созвоны проводить по работе.

Я слышал, что для таких задач часто используют Jitsi — он умеет и видео, и демонстрацию экрана. Сам не пробовал.

Подтверждаю. Jitsi может. И даже предоставить управление может. Не Radmin конечно, для терпеливых пользователей, но все же.

Вчера пробовал jitsi поставить - к звонку подключаешься, вроде все в звонке, но голоса нет, микрофон у всех в муте, на кнопки не реагирует. Пробовал пока только локально, возможно нужно через домен публично выводить и будет лучше

На сколько я понимаю, ему для работы звонков нужен обязательно публичный домен с валидным HTTPS и корректным сертификатом.
Без этого WebRTC в браузере обычно не пропускает медиа.

Я вообще не понимаю зачем пользоваться xmpp в 2025-м. Есть nextcloud, bigbluebutton. Гораздо лучше и гораздо производительнее

Да, можно. Просто в моём случае нет смысла стрелять из пушки по воробьям. XMPP спокойно работает на виртуалке с 2 ГБ RAM и обслуживает сотни пользователей со звонками. А BigBlueButton — это уже совсем другой класс: для нормальной работы ему нужны многоядерный CPU и не меньше 8–12 ГБ памяти.

Так, вроде бы, как раз проблема вотсапа в том, что STUN-трафик детектится и блокируется?

В Snikket это обходится просто: если обычный STUN не проходит, клиенты автоматически переходят на TURN. А TURN можно поднять на порту 443/TLS и замаскировать трафик под HTTPS — тогда его уже не отличить от обычного веба.

Зря вы годноту палите. Понимаю конечно, технический ресурс и все дела, но чем популярнее будет решение, тем вероятнее на него нацелятся. Так уже случалось, может случиться и ещё. Между тем, xmpp с stun/turn это не только про локальные конфочки и зконки. Много у кого, например, тупо netbird может сдохнуть. Думаю, пора перестать тут обсуждать методы противодействия, т.к. у большинства посетителей сайта навыков в целом хватает разобраться.

Это, кстати, интересный и философский вопрос: стоит ли вообще что-то скрывать только из страха, что это могут заблокировать?

Ну чисто технически - это вовсе не метод противодействия, а скорее шаг вбок. Массовым данное решение не назовёшь, а тем кто в состоянии поднять его для себя и своих родных и близких ничего не угрожает, потому что сервер частный для частного обмена информацией. Защиту тайны связи никто ещё не отменял.

Защиту тайны связи никто ещё не отменял.

Ух ты, а что это такое? Это вот для вот этого операторы должны 3 месяца хранить весь трафик? Это вот для этого Яровая со своим пакетом ходила?

Это другое. Вы не понимаете.
В нашем государстве принято считать, что силовики имеют право подглядывать и подсматривать, ведь у нас нет причин им не доверять.
При этом конституция на месте. И если ваши протоколы связи не позволяют заглянуть в этот трафик, вы никому ничего не обязаны. Вы не оператор. С вас лично потребовать расшифровать ваш же трафик пока никто не может. Даже топнув ножкой от бессилия не выйдет. Особенно это смешно в контексте использования протокола, где шифрование end-to-end. Даже если интернет провайдер будет хранить весь ваш трафик, это ничего не даст.

Я категорически не согласен
Информация не должна ограничиваться

Я бы никогда в жизни не разобрался. И вообще не знал про то как устроены эти технологии.
Если всю информацию убирать из публичного доступа, то мы скоро в каменный век вернёмся

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

Группы для переписки — есть. А вот групповых звонков, как в Discord, нет. Для этого лучше поднять свой сервер Jitsi — он как раз рассчитан на видеоконференции.

  1. Лет 20 назад пользовал Jabber и даже вносил посильный вклад в развитие сообщества.

  2. Недавно надо было выбирать менеджер и тоже смотрел в сторону XMPP, но при беглом просмотре показалось, что Jabber скорее мертв, чем жив - все те же проблемы, что и были 20 лет назад с кучей расширений и несовместимыми клиентами. А клиенты за это время не сильно далеко ушли. В итоге решил остановиться на Synapse Matrix

  3. А пользователи в итоге "выбрали" телеграмм ¯\_(ツ)_/¯

Интересно сравнить современный jabber лицом к лицу с конкрутентами, может я и не прав был во 2м пункте

XMPP жив, и в 2025-м это уже не тот «зоопарк», что был 20 лет назад: Snikket берёт нужные XEP’ы (OMEMO, MUC, звонки), и всё работает «из коробки». Клиенты подтянулись — Conversations, Monal, Siskin, Dino, Gajim справляются со звонками и медиа.

Matrix (Synapse) тоже хорош, особенно для командных чатов.


А XMPP остаётся лёгким и автономным — отличный «запасной аэродром» на случай полного блокирования Telegram, WhatsApp и т. д. Не возвращаться же снова к сотовым звонкам и попадать на деньги при этом ))

Matrix (Synapse) тоже хорош, особенно для командных чатов.

Недавно поставил, красота!

После этого можно спокойно звонить и переписываться в защищённом мессенджере, который полностью под вашим контролем.

Как решаете проблему с шаловлимыми ручками скучающих сотрудников хостинг-провайдера?

Даже если хостер получит root-доступ к VPS, он не сможет расшифровать звонки или чаты. WebRTC использует SRTP с end-to-end ключами — они генерируются на клиентах и серверу недоступны. А переписка при OMEMO/OTR также шифруется сквозным образом: сервер видит только зашифрованные пакеты и метаданные.

Шаловливые ручки будут наслаждаться зашифрованными пакетами ))

Вспоминал ваш вопрос и думал, как ещё «шаловливый» хостер может насолить. Ну, допустим, он получил root-доступ, сбросил пароль у какого-то юзера, залогинился под ним и решил почитать переписку. Я провёл эксперимент: сбросил пароль и на новом устройстве вошёл в аккаунт. Всё, что я увидел — это: «Это сообщение было зашифровано с помощью OMEMO, но не для вашего устройства.»

Т.е. под одним аккаунтом с нескольких устройств общаться не получится?

Да, с одним аккаунтом можно сидеть сразу с нескольких устройств — всё работает. У меня Snikket одновременно запущен на Android и Windows, сообщения и звонки синхронизируются. А вот если сбросить пароль и подключить новое устройство «с нуля», то старые переписки не откроются: они зашифрованы под ключи предыдущих устройств.

А Вы под это дело с какими-то физическими телефонами не сталкивались - в самом деле для бабушек 80+? С железными и с кнопками?
А то со смартфонами в таком случае бывает проблемка...

Если бы такие XMPP-телефоны с кнопками реально продавались — я бы купил их не только бабушкам

А не знаете, обычный SIP блочат? Потому что sip-овских железных телефонов дофига и выше, я сам когда-то grandstream-ами пользвоался

Обычный SIP пока работает.

Если в смысле клиентского потока к известному провайдеру телефонии — нет. А к своему астериску — могут. Точнее, делали.

Очень глубокая статья. Может начнем публиковать инструкции для мебели Икеи.

Сколько ни собирал — всегда 5 лишних деталей оставалось

Не знаю было или нет, но вроде как Jami мессенджер работает без впн в России -звонки не блочат. SimpleX тоже неплохо работает но только с ВПН, хотя в наше время без него никуда

Да, Jami действительно интересный вариант — у него архитектура без центрального сервера, звонки идут напрямую, поэтому его и сложнее «задушить».
SimpleX тоже набирает популярность, но у него своя специфика.

Я же выбрал XMPP/Snikket как более проверенное и совместимое решение: клиенты есть под все платформы, плюс звонки можно замаскировать под HTTPS через TURN.

Есть ещё Tomy тоже распределенка но без голоса но в реалиях как и jami работает не всегда моментально. Simplex это первое на что я попытался переехать когда начались проблемы но работает он крайне не стабильно даже сообщения могут не приходить по долго. Пробовал и собственный сервер но он очень быстро попадает под тспу и собственный прокси тоже и 2 дня тспу. И тут либо надо постоянно быть на ВПН и тогда он норм работает а когда то ВПН то без ВПН он неохотно меняет линки и даже отправленное сообщение себе с телефона на PC может зависнуть минут на 5 приходится убивать приложение короче гемор использую для пересылки сообщений и файлов между своими гаджетами

Да, в этом и разница: полностью P2P-решения (Tox, Jami, SimpleX) хороши концептуально, но в реальности часто нестабильны. XMPP с TURN — золотая середина: децентрализация, но при этом можно замаскировать трафик под HTTPS и обойти блокировки без VPN.

Simplex-- поднял сервер, но 6 версии приложения не конектятся, 4 вроде работало. В чем дело пока не понял.

Snikket я поднял реально в две команды — и сразу всё готово: звонки, TURN, jitter-буфер, certbot внутри. На VPS с 1–2 ГБ RAM этого хватает за глаза.

Matrix (Synapse) — тяжелее и по установке, и по ресурсам: нужен PostgreSQL, coturn, nginx. В простое он ест ~1 ГБ+, а под нагрузкой легко уходит в 2–4 ГБ.
И нет такого готового «коробочного» решения, чтобы уложиться ровно в две команды init.sh и start.sh.

можно еще посмотреть в сторону отечественных (забугорные у меня работали плохо, видимо их фильтруют) SIP-провайдеров, типа sipnet или telphin. Сама регистрация у них бесплатна и звонки внутри сети тоже

У SIP-провайдеров (Sipnet, Telphin и т. п.) по закону весь трафик пишется и хранится. А в Snikket — даже если захочешь, не запишешь: звонки шифруются end-to-end, серверу остаются только зашифрованные пакеты

это да, но если консерн в том что не хочется ставить Макс потому что он не только звонки пишет, а много что еще, то может оказаться простым решением. Тем кто за содержание звонков не парится

Ну да, если исходить из принципа «семь бед — один ответ MAX», то конечно ))

Простите за глупый вопрос. Можно ли это реализовать без сервера?

Да, сервер можно поставить и на домашний компьютер (или, например, на Raspberry Pi). Главное — пробросить порты на роутере и привязать домен. В этом случае тоже будет работать

Не подскажете, почему не показывает статус пользователя "онлайн", хотя он сейчас в сети и добавлен в контакты?
И еще интересует вопрос по звонкам - если звонки не работают, полагаю, что заблокировано на уровне провайдера?

Чтобы отображался статус «онлайн», нужно, чтобы контакт подтвердил подписку на presence и находился с вами в одном Круге (Circle) — это стандартные roster-группы XMPP, просто Snikket называет их по-своему. На Android ещё важно выдать приложению работу в фоне и отключить энергосбережение, на iOS — включить push-уведомления.

По звонкам: если не коннектится вовсе, чаще всего виноват блок на уровне провайдера (STUN/UDP). Решение — свой TURN на 443/TLS: трафик выглядит как HTTPS, и звонки начинают работать.

Ещё проверьте порты: 5222 (клиенты), 5269 (s2s), 3478/3479 (STUN), 5349/5350 (TURN), 443 (TURN/TLS) и медиадиапазон 49152–65535/UDP. Если что-то закрыто — звонки не взлетят.

В файл /etc/coturn/turnserver.conf кладем следующее:
но у меня нет такого каталога, что я упустил?

Спасибо за внимательность. В контейнерной установке путь другой: /opt/turnserver/turnserver.conf, а не /etc/coturn (это внутри докера). Поправил.

Спасибо. Поставил. Конечно не обошлось без запинок. Но результат есть. При разговоре по видео двух человек канал кушает около 6 мегабит. Не совсем удобная схема с аккаунтами, люди путаются. Куда что вводить. В целом жить можно.. но вот нужно ли своё держать, каждый выбирает сам. Я поставил ради спортивного интереса.

Вам спасибо, что сказали. И рад, что получилось установить.

Спасибо за статью. Извините за глупый вопрос - в статье упоминается - "nginx как сплиттер" - его нужно как-то доустановить? (в новый docker контейнер?)

nginx действительно нужен отдельно — можно поставить на хост (apt/yum install nginx), можно завернуть в отдельный контейнер. Разницы особой нет: он просто слушает 443 и по SNI решает, куда слать трафик — в Snikket или в TURN.

Давно (год так 2010 +-) пробовал какой то xmmp сервер, но чёт не срослось. Сценарий - чатики внутри конторки. Судя по всему дофига поменялось. (Или нет?)

Как сие будет воркать если развернуть внутри LAN со своими сертами или центрами сертификации? В целом выглядит весьма работоспособно...

Больше всего интересуют чаты (в т.ч. групповые) с SSO kerberos/ldap (ну или хотя бы учётки из LDAP), шара экрана по возможности, видео/аудио звонки сильно вторичны, но будут хорошим бонусом...

Sign up to leave a comment.

Articles