Выбор оптимального решения для организации чата с родными на self-hosted сервере в окружении Debian 13, rootless Podman (Quadlet), Caddy reverse proxy и Tailscale.

IRC не подходит для семейного чата — протокол 1988 года без offline-доставки, push-уведомлений и медиа. XMPP (Prosody/Snikket) — лучший выбор: минимальные ресурсы (~25 MB RAM), надёжные мобильные клиенты с push, проверенный опыт семейного использования. Matrix — альтернатива с лучшим UX, но тяжелее по ресурсам и имеет серьёзные проблемы с push-уведомлениями на iOS.

IRC: почему не подходит для семьи

IRC (Internet Relay Chat) — протокол 1988 года, разработанный для текстового общения в реальном времени1. Для семейного чата он имеет фундаментальные ограничения, которые невозможно обойти без костылей.

Критические проблемы

Нет offline-доставки сообщений. Протокол IRC не хранит сообщения на сервере. Если член семьи не в сети — сообщение потеряно. Обходной путь — bouncer (ZNC), который требует отдельного сервиса и настройки2.

Push-уведомления — экспериментальные. Даже лучший современный сервер Ergo поддерживает push только через экспериментальный WebPush spec, который нужно включать вручную3. ZNC bouncer + Palaver (iOS, $3.99) — единственный путь к более-менее рабочим push-уведомлениям на мобильных4.

Нет отправки файлов/медиа. Стандарт DCC (Direct Client-to-Client) устарел и ненадёжен — требует прямого соединения между клиентами. Для отправки фото/видео нужны внешние сервисы1.

Мобильные клиенты стагнировали. На iOS — Palaver (платный) и устаревший Colloquy. На Android — Revolution IRC. Ни один не обеспечивает UX уровня современного мессенджера5.

Лучший сценарий с IRC

Ergo (Go, single binary) + The Lounge (web-клиент с push через браузер) + ZNC bouncer. Даже в этом варианте:

  • Родные должны открывать браузер для чата
  • Фото отправляются через внешние хостинги
  • История фрагментирована между устройствами
  • Нет read receipts, typing indicators, аудио/видео звонков

IRC — протокол для технических сообществ, не для семейного общения. Его ограничения — не баги, а design decisions 1988 года1.

Серверы IRC: сравнение

СерверЯзыкОсобенностиRAM
ErgoGoВстроенный bouncer, история, экспериментальный pushМинимальный
UnrealIRCdC50%+ рынка, стабильный, 835 серверовСредний
InspIRCdC++Модульный, SQL-интеграция, конфиг 2300 строкСредний

Вердикт: IRC не рекомендуется для семейного чата. Протокол не решает ни одной ключевой потребности: offline-доставку, push, медиа, удобство для нетехнических пользователей.

XMPP (Jabber): рекомендуемый вариант

XMPP (Extensible Messaging and Presence Protocol) — зрелый децентрализованный протокол с модульной архитектурой расширений (XEP). Покрывает все потребности семейного чата через стандартизированные расширения6.

Сервер: Prosody

Prosody (Lua) — лёгкий XMPP-сервер, идеальный для малых развёртываний7.

ПараметрЗначение
RAM~25–50 MB7
ЯзыкLua
ЛицензияMIT/X11
Версия13.0.4 (январь 2026)

Преимущества:

  • Минимальное потребление ресурсов — работает даже на Raspberry Pi7
  • Простая конфигурация на Lua — читаемая и поддерживаемая
  • Активная разработка и экосистема модулей (modules.prosody.im)7
  • Полная поддержка XEP для семейного чата: OMEMO, файлы, MUC, MAM, push, offline

Ограничения:

  • Нет кластеризации (не проблема для семьи)
  • Некоторые изменения конфигурации требуют рестарта
  • Нужно подключать модули для прохождения compliance-тестов

ejabberd (Erlang, 100+ MB RAM) — избыточен для семьи. Кластеризация, high-availability и масштабирование на тысячи пользователей не нужны для 5–15 родных7.

Snikket: «коробочное» решение на базе Prosody

Snikket — обёртка над Prosody, специально спроектированная для семей и малых групп8.

Реальный опыт семейного использования:

  • Ravid Wivedi: 100% uptime за 5+ месяцев, “very smooth”9
  • Neil: месяц ежедневного использования с женой (non-technical) — “messaging and file sharing worked flawlessly”, “wife adopted painlessly”10
  • Аудио/видео звонки — “incredibly reliable” ежедневно на протяжении месяца10
  • Устойчивость к переключению WiFi ↔ cellular без обрыва10

Потенциальная сложность: Один пользователь сообщил о проблемах при первой установке с nginx, потребовалось ~5 месяцев дополнительной работы9. В случае Caddy — проще.

Мобильные клиенты

Android: Conversations

Основной клиент для Android. Open-source (GPLv3), активно поддерживается11.

  • OMEMO шифрование (multi-device)
  • Групповые чаты с лёгким созданием
  • Фото, видео, файлы
  • Аудио/видео звонки (WebRTC, зашифрованные)
  • Синхронизация сообщений между устройствами
  • Read receipts и статус доставки
  • Надёжные push-уведомления (XEP-0357)

Доступен в Google Play, F-Droid.

iOS: Monal

Лучший XMPP-клиент для iOS. Open-source (BSD), нативный UI для iPhone/iPad/macOS12.

  • OMEMO шифрование с правильной поддержкой push (редкость для iOS)
  • Групповые чаты, файлы, аудио/видео
  • Push-уведомления надёжнее, чем в Element (Matrix) — использует Apple entitlement для прямого wake-up без отправки данных через Apple-серверы13
  • iOS выделяет 30 секунд фонового времени, Monal коннектится к серверу за сообщением13

Monal — единственное iOS-приложение, показавшее содержимое зашифрованных XMPP-сообщений прямо в notification area в тесте 2022 года14.

Siskin (альтернатива для iOS) — не рекомендуется из-за нестабильных push-уведомлений7.

Ключевые XEP-расширения

XEPНазначениеProsody модуль
XEP-0384 (OMEMO)E2E шифрование, multi-devicemod_omemo_all_access
XEP-0363 (HTTP File Upload)Отправка файлов/фото/видеоmod_http_file_upload
XEP-0045 (MUC)Групповые чатыmod_muc (встроен)
XEP-0313 (MAM)Серверная история сообщенийmod_mam
XEP-0357 (Push)Push-уведомления на мобильныхmod_cloud_notify
XEP-0160 (Offline)Доставка оффлайн-сообщенийmod_offline (встроен)

Все поддерживаются Conversations и Monal71112.

Развёртывание в Podman

Официальный образ: prosodyim/prosody:13.0

# Базовый запуск
podman run --userns=keep-id -p 5222:5222 \
  -v prosody-config:/etc/prosody \
  -v prosody-data:/var/lib/prosody \
  prosodyim/prosody:13.0

Для Quadlet — контейнер-файл в ~/.config/containers/systemd/prosody/ с:

  • Портами 5222 (client), 5269 (server-to-server, опционально)
  • Volume для конфигов и данных
  • Сетью caddy-private (доступ через Tailscale)

Matrix: альтернатива с лучшим UX, но тяжелее

Matrix — федеративный протокол с E2E шифрованием по умолчанию. Главное преимущество — Element-клиент с UX уровня Telegram15.

Серверы

СерверЯзыкRAMСтатус
SynapsePython8–16 GBProduction, 85.8% рынка15
DendriteGo2–8 GBMaintenance mode (только security-фиксы)16
ConduwuitRust~70 MBЗаброшен в мае 202517
ContinuwuityRust~70 MBФорк Conduwuit, активная разработка17
TuwunelRust~70 MBПреемник Conduwuit, финансируется швейцарским правительством18

Synapse — избыточен для семьи (8–16 GB RAM, PostgreSQL, 125+ GB БД)15.

Conduwuit был оптимальным выбором (single binary, RocksDB, ~70 MB RAM), но проект заброшен в мае 2025. Два преемника продолжают разработку: Continuwuity — community-driven форк с регулярными релизами каждые 1–2 недели, и Tuwunel — официальный преемник с государственным финансированием1718. Оба проекта молоды — менее года как самостоятельные.

Проблемы с push-уведомлениями на iOS

Критическая проблема: Element iOS зависит от push-gateway на matrix.org (https://matrix.org/_matrix/push/v1/notify). Если matrix.org недоступен — push не работают19.

Баг с mentions-only: При установке режима “mentions and keywords only” push-уведомления не приходят на iOS20.

Сравнение с XMPP:

АспектXMPP (Monal)Matrix (Element)
Push-зависимостьПрямой wake-up через Apple entitlement13Через matrix.org gateway19
E2E в notificationsСодержимое видно14Ограничено
Mentions-only modeРаботаетБаг: не доставляются20
Self-hosted pushПолностью автономныйТребует Sygnal или ntfy19

Преимущества Matrix

Несмотря на проблемы, Matrix имеет объективные преимущества:

  • E2E шифрование по умолчанию — пользователю не нужно ничего настраивать (Megolm/Olm)15
  • История на новых устройствах — встроенная, как в Telegram21
  • Групповые аудио/видео звонки — работают из коробки15
  • Element UX — ближе к Telegram/WhatsApp, чем XMPP-клиенты15
  • Бриджи — Telegram, Discord, Signal, WhatsApp, IRC15

Развёртывание

Continuwuity: single binary + RocksDB, ~70 MB RAM, Caddy reverse proxy. Проще Synapse, но менее проверен.

Другие альтернативы

Databag

Федеративный мессенджер, спроектированный для минимальных ресурсов22.

Плюсы: работает на Raspberry Pi Zero, E2E шифрование, мобильные приложения (iOS/Android), аудио/видео звонки, federation.

Минусы: маленькое сообщество, менее проверен, документация скудная. Молодой проект — нет long-term track record.

DeltaChat

Мессенджер поверх email-инфраструктуры (SMTP/IMAP)23.

Плюсы: знакомый интерфейс, работает с любым email-провайдером (zero self-hosting), E2E шифрование, мобильные приложения.

Минусы: зависит от email — задержки доставки, проблемы со спам-фильтрами. Self-hosted chatmail-сервер требует открытого SMTP-порта (25), что блокируется большинством провайдеров.

SimpleX Chat

Максимальная приватность — нет пользовательских идентификаторов24.

Плюсы: E2E шифрование, self-hosted SMP-сервер, файлы до 1 GB.

Минусы: молодой проект (mobile apps с марта 2022), сложнее в настройке. Нет федерации в привычном смысле.

Mattermost / Rocket.Chat

Ориентированы на команды, не на семьи. Тяжёлые по ресурсам, перегружены функциональностью. Не рекомендуются для семейного use case25.

Сравнительная таблица

КритерийIRC (Ergo)XMPP (Prosody)Matrix (Continuwuity)Databag
RAM~10 MB~25 MB7~70 MB17~10 MB22
Offline-доставкаНет (bouncer)Да (XEP-0160)ДаДа
Push (iOS)НетДа, Monal13Проблемы1920WebSocket
Push (Android)НетДа, ConversationsДа, ElementДа
Медиа (фото/видео)НетДа (XEP-0363)ДаДа
E2E шифрованиеНетДа, OMEMO6Да, Megolm15Да
Групповые чатыДа, каналыДа, MUC6Да, RoomsДа
Аудио/видеоНетДа, 1:110Да, групповыеДа
ИсторияНет (bouncer)Да, MAM6ДаДа
Зрелость30+ лет20+ лет~1 год~3 года
UX для non-techНизкийВысокий (Snikket)8Очень высокий (Element)Средний
Podman-деплойПростойПростой7ПростойПростой

Рекомендация

Основной вариант: XMPP (Prosody или Snikket)

Обоснование:

  1. Ресурсоёмкость. ~25 MB RAM — минимальная нагрузка на сервер с 32 GB, где уже работают 15+ сервисов7.

  2. Push-уведомления на iOS. Monal использует прямой Apple entitlement для wake-up — надёжнее, чем Element с зависимостью от matrix.org1319. Для семейного чата push — критическая функция: сообщение от мамы должно дойти.

  3. Проверенный семейный опыт. Snikket/Prosody — реальные семьи используют 2+ лет с 100% uptime, “wife adopted painlessly”910.

  4. Простота развёртывания. Prosody: один контейнер, Lua-конфиг, volume для данных. Snikket: ещё проще — preconfigured bundle78.

  5. Автономность. Никакой зависимости от внешних сервисов (matrix.org gateway, Firebase, Apple) для доставки сообщений13.

  6. Шифрование. OMEMO — проверенный E2E-стандарт, multi-device. Conversations и Monal поддерживают полностью61112.

Когда выбрать Matrix вместо XMPP

  • Критически важен UX уровня Telegram (Element ближе к этому)
  • Нужны групповые видеозвонки (XMPP — только 1:1)
  • Нужны бриджи к Telegram/Discord/WhatsApp
  • Готовность мириться с ~70 MB RAM и проблемами iOS push

Что НЕ выбирать

  • IRC — фундаментально не подходит для семейного чата
  • Mattermost/Rocket.Chat — перегружены для семьи, тяжёлые по ресурсам
  • Conduwuit — проект заброшен17, использовать Continuwuity или Tuwunel если Matrix

Дискуссионные вопросы и противоречия

XMPP UX vs Matrix UX

Luke Smith отмечает21: “For self-hosting, XMPP wins on efficiency and control, though it demands more technical configuration.” XMPP-клиенты (Conversations, Monal) функциональны, но выглядят менее «современно», чем Element. Для технически грамотных пользователей это не проблема; для бабушки — потенциально барьер.

Контраргумент: Snikket решает эту проблему — его клиент Snikket (форк Conversations) имеет упрощённый UX, заточенный под non-technical пользователей8.

E2E шифрование: OMEMO vs Megolm

XMPP (OMEMO) требует явной активации шифрования, Matrix (Megolm) — шифрует по умолчанию21. Для семейного чата, где все участники доверяют друг другу, это менее критично. Prosody может быть настроен на обязательное OMEMO.

Push-уведомления: долгосрочная надёжность

Тест push-уведомлений Monal проводился в 2022 году14. С тех пор вышли новые версии (6.4.19, март 2026), но систематических ретестов не публиковалось. Возможна регрессия.

Conduwuit/Continuwuity/Tuwunel: зрелость

Continuwuity наследует кодовую базу Conduwuit, но как отдельный проект существует менее года. Tuwunel — аналогичная ситуация с дополнительным преимуществом государственного финансирования. Для production family chat — риск, хотя пользователи обоих проектов сообщают о стабильности1718.

Quality Metrics

МетрикаЗначение
Источников найдено30
Источников процитировано25
Типы источниковofficial docs: 8, community/blog: 10, GitHub/Codeberg: 5, Wikipedia: 1, comparison sites: 1
Покрытие цитатами~90% фактических утверждений
Подвопросов исследовано6
Раундов исследования3 (initial + verification + fact-check)

  1. IRC vs Modern Instant Messengers Comparison — https://eylenburg.github.io/im_comparison.htm ↩︎ ↩︎ ↩︎

  2. ZNC: An IRC Bouncer — https://www.endpointdev.com/blog/2014/03/znc-irc-bouncer/ ↩︎

  3. Ergo IRC Server User Guide — https://github.com/ergochat/ergo/blob/master/docs/USERGUIDE.md ↩︎

  4. Setting up Push Notifications with iOS and ZNC — https://adiquet.com/2017/04/setting-up-push-notifications-with-ios-and-znc/ ↩︎

  5. Self Hosting Web IRC Clients: What are Your Options? — https://itsfoss.com/self-hosted-web-irc/ ↩︎

  6. Comparison of instant messaging protocols — Wikipedia — https://en.wikipedia.org/wiki/Comparison_of_instant_messaging_protocols ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  7. Prosody IM — https://prosody.im/ ; Prosody Community Modules — https://modules.prosody.im ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  8. Snikket: simple, secure and private messaging — https://snikket.org/ ↩︎ ↩︎ ↩︎ ↩︎

  9. My Experience of running Snikket — Ravid Wivedi — https://ravidwivedi.in/posts/snikket-experience/ ↩︎ ↩︎ ↩︎

  10. A month using XMPP (using Snikket) — Neil — https://neilzone.co.uk/2023/08/a-month-using-xmpp-using-snikket-for-every-call-and-chat/ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  11. Conversations (Android XMPP client) — https://codeberg.org/inputmice/Conversations ↩︎ ↩︎ ↩︎

  12. Monal (iOS/macOS XMPP client) — https://github.com/monal-im/Monal ; App Store — https://apps.apple.com/us/app/monal-xmpp-chat/id317711500 ↩︎ ↩︎ ↩︎

  13. Push on iOS — Monal documentation — https://monal-im.org/post/00005-push-on-ios/ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  14. XMPP Push Notification Test — eversten.net — https://eversten.net/en/blog/notification/ ↩︎ ↩︎ ↩︎

  15. Matrix.org — https://matrix.org/ ; Understanding Synapse Hosting — https://matrix.org/docs/older/understanding-synapse-hosting/ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  16. Dendrite GitHub — https://github.com/matrix-org/dendrite ; The Future of Synapse and Dendrite — https://matrix.org/blog/2023/11/06/future-of-synapse-dendrite/ ↩︎

  17. Self-hosting Matrix in 2025 — Matthias Klein — https://blog.klein.ruhr/self-hosting-matrix-in-2025 ; Conduwuit GitHub — https://github.com/x86pup/conduwuit ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  18. Tuwunel — https://matrix.org/blog/2026/01/05/this-week-in-matrix-2026-01-05/ ; Continuwuity — https://github.com/continuwuity/continuwuity ↩︎ ↩︎ ↩︎

  19. Understanding Push Notifications — Element Docs — https://docs.element.io/latest/element-support/element-androidios-client-settings/understanding-push-notifications ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  20. Element iOS Push Notification Issues #5735 — https://github.com/vector-im/element-ios/issues/5735 ↩︎ ↩︎ ↩︎

  21. Matrix vs XMPP — Luke Smith — https://lukesmith.xyz/articles/matrix-vs-xmpp/ ↩︎ ↩︎ ↩︎

  22. Databag — https://github.com/balzack/databag ↩︎ ↩︎

  23. DeltaChat — https://delta.chat/en/ ↩︎

  24. SimpleX Chat — https://simplex.chat/ ; Server documentation — https://simplex.chat/docs/server.html ↩︎

  25. Mattermost — https://mattermost.com/ ; Rocket.Chat — https://rocket.chat/ ↩︎