Snikket XMPP-сервер: установка в Docker для малой команды

Snikket: простой XMPP-сервер для команды — установка в Docker за 15 минут

Snikket — это XMPP-сервер нового поколения, который можно развернуть в Docker за 15 минут. Если вы ищете, как настроить snikket для своей команды без сложных настроек и платных подписок, вы попали по адресу. В отличие от Telegram или WhatsApp, Snikket работает на вашем сервере: данные не покидают вашу инфраструктуру, нет зависимости от иностранных платформ и рисков блокировок.

В этой статье разберём пошаговую установку Snikket через Docker, настройку первого администратора, приглашение пользователей и сравнение с Matrix/Synapse и Mattermost. Подход рассчитан на IT-специалиста малого бизнеса или НКО — без лишней теории, сразу к делу.

Snikket XMPP-сервер: установка в Docker для малой команды

Главное про Snikket: это готовый к работе XMPP-мессенджер в одном Docker-контейнере. Snikket сервер разворачивается на любом VPS с 512 МБ RAM, не требует знания протокола XMPP и поддерживает нативные мобильные приложения для iOS и Android. Подходит для команд от 5 до 50 человек.

Содержание

Что такое Snikket и для кого он предназначен

Snikket — это не ещё один XMPP-сервер с множеством настроек. Это управляемый пакет: внутри уже всё необходимое — сервер Prosody, веб-интерфейс администратора, автоматические сертификаты Let’s Encrypt, пуш-уведомления для мобильных клиентов.

Проект создан с упором на простоту: один файл docker-compose.yml, один домен — и сервер работает. Не нужно затрачивать время на изучение протокола XMPP, настройку nginx или правила брандмауэра.

Для кого подходит Snikket:

  • Малый бизнес — 5–30 сотрудников, которым нужен корпоративный мессенджер
  • НКО и общественные организации — где приватность и независимость критичны
  • Семьи и друзья — частный сервер без платных подписок
  • IT-отдел с ограничениями на внешние сервисы

Snikket не подходит для enterprise с тысячами пользователей, интеграций с AD/LDAP и сложного администрирования. Для этого есть Mattermost или Matrix. Также у Snikket есть два заметных ограничения: нет групповых аудио- и видеозвонков — протокол Jingle рассчитан на соединение один на один, групповые звонки в XMPP остаются черновой спецификацией, срок реализации в Snikket не объявлен; и нет официального фирменного веб-приложения — в комплекте идёт сторонний Converse.js (без звонков), официальный браузерный клиент планировался на Q3 2025, срок не выдержан (актуально на апрель 2026).

Snikket XMPP-сервер: архитектура подключения клиентов

Почему не Telegram и WhatsApp: блокировки, приватность, контроль данных

Telegram заблокирован в ряде стран. WhatsApp требует номер телефона и хранит метаданные на серверах Meta. Оба сервиса могут замедлить доставку сообщений, закрыть аккаунт без предупреждения или изменить условия в одностороннем порядке.

Со своим XMPP-сервером эти риски исчезают:

  • Данные хранятся на вашем VPS, не на серверах третьих сторон
  • Нет зависимости от иностранных платформ
  • Администратор сам управляет аккаунтами и доступом
  • Сервер не заблокируется внешним регулятором
  • End-to-end шифрование OMEMO есть в приложениях

Для малого бизнеса в РФ это особенно актуально: компания полностью контролирует канал коммуникаций без зависимости от решений зарубежных компаний.

Snikket — мессенджер с шифрованием OMEMO для малой команды

Технические требования: VPS, домен, порты

Перед тем как начать Snikket установку, подготовьте среду:

Сервер (VPS):

  • OS: Ubuntu 20.04/22.04 или Debian 11/12
  • RAM: от 512 МБ (рекомендуется 1 ГБ+ для комфортной работы)
  • Docker + Docker Compose установлены

Домен:

Snikket сервер требует три DNS-записи для основного домена — одна A-запись и две CNAME:

				
					chat.example.com         A      203.0.113.123
groups.chat.example.com  CNAME  chat.example.com
share.chat.example.com   CNAME  chat.example.com
				
			

Открытые порты:

  • 80/tcp, 443/tcp — HTTP/HTTPS (веб-интерфейс, Let’s Encrypt)
  • 5222/tcp — XMPP клиент (подключение мобильных приложений)
  • 5269/tcp — XMPP federation (передача между серверами)
  • 5000/tcp — прокси передачи файлов (proxy65)
  • 3478/tcp+udp, 3479/tcp+udp — аудио/видео, STUN/TURN
  • 5349/tcp+udp, 5350/tcp+udp — STUN/TURN over TLS

Если порт 443 занят другим сервисом (nginx, Traefik), потребуется настройка проксирования. Snikket по умолчанию работает без внешнего nginx.

Snikket установка: пошаговая инструкция через Docker

Установка Snikket через Docker занимает 15 минут. Вот полная последовательность:

Шаг 1. Скачать файл конфигурации

Создайте директорию и файл snikket.conf:

				
					mkdir /etc/snikket
cd /etc/snikket
curl -o docker-compose.yml https://snikket.org/service/resources/docker-compose.yml
				
			

Отредактируйте snikket.conf:

				
					SNIKKET_DOMAIN=chat.example.com
SNIKKET_ADMIN_EMAIL=admin@example.com
				
			

Шаг 2. Запустить контейнер

				
					docker compose up -d
				
			

Snikket сам получит сертификаты Let’s Encrypt. Через 2-3 минуты сервер будет готов.

Шаг 3. Проверить статус

				
					docker compose ps
				
			

Должны работать контейнеры snikket_server и snikket_proxy. Логи проверяются через docker compose logs -f.

Если сертификат не получен, проверьте DNS-записи для всех трёх субдоменов и доступность портов 80 и 443.

Первый администратор и приглашение пользователей

После запуска нужно создать первого администратора.

Создание админ-аккаунта и первого приглашения:

				
					docker exec snikket create-invite --admin --group default
				
			

Команда выдаст ссылку-приглашение. Откройте её в приложении Snikket и задайте имя пользователя и пароль. Флаг --admin даёт права администратора, --group default включает в общий чат группы.

Invite-система: как пригласить пользователей

Snikket принципиально работает по приглашениям — нельзя зарегистрироваться самостоятельно. Это безопасно: только приглашённые пользователи входят на сервер.

Сгенерировать приглашение для обычного пользователя:

				
					docker exec snikket create-invite
				
			

Будет выведена ссылка вида https://chat.example.com/invite/.... Отправьте её сотруднику. По ссылке человек сам задаёт имя аккаунта и пароль.

Для приглашения целой группы есть флаг --group: участники автоматически попадают в общий чат при регистрации. Веб-интерфейс администратора доступен по адресу https://chat.example.com/.

Клиенты Snikket: мобильные и десктопные приложения

Snikket ориентирован сначала на мобильные устройства, но работает с любым XMPP-клиентом на десктопе. У проекта есть свои приложения для iOS и Android с упрощённой настройкой через QR-код приглашения; для Windows, macOS и Linux десктоп-клиент не выпускается — используются любые стандартные XMPP-клиенты.

Snikket для iOS и Android

  • Snikket для iOS — в App Store. Fork клиента Siskin с преднастройкой под Snikket-сервер. Чаты, групповые разговоры, шифрование OMEMO, push-уведомления через APNs-прокси Snikket.
  • Snikket для Android — в Google Play и F-Droid. Fork Conversations. Та же функциональность; F-Droid-сборка — это Snikket APK без Google Services, push через ntfy-протокол.
  • Первый запуск: отсканировать QR-код или открыть ссылку-приглашение от администратора сервера — клиент сам подставит домен, логин и пароль.

Snikket на Windows, macOS, Linux — через XMPP-клиент

У проекта нет собственного десктоп-приложения. Решение намеренное: Snikket-сервер использует стандартный XMPP, и любой XMPP-клиент подключается к вашему серверу без специальной настройки. Проверенные совместимые:

  • Gajim (Windows, Linux, BSD) — зрелый клиент, OMEMO-шифрование, группы, A/V-звонки. gajim.org.
  • Dino (Linux, macOS через Homebrew) — современный UI, поддержка видеозвонков. dino.im.
  • Monal (macOS, iOS) — нативный клиент Apple. monal-im.org.
  • BeagleIM (macOS) — лёгкий клиент от Tigase. beagle.im.
  • Conversations (Android) — если не нравится Snikket-бренд, оригинал из F-Droid поддерживает тот же функционал.

Подключение: ваш JID — user@chat.your-domain, пароль — из приглашения Snikket. В большинстве клиентов домен сервера определяется автоматически через SRV-записи DNS.

Веб-клиент Converse.js

В комплекте со Snikket идёт сторонний веб-клиент Converse.js — открывается прямо по адресу https://chat.your-domain/. Поддерживает текстовые чаты, приватные и групповые разговоры, OMEMO-шифрование. Видеозвонков в браузерной версии нет — для звонков используйте мобильное или desktop-приложение.

Официального фирменного веб-приложения Snikket пока нет: разработчики планировали выпустить его в Q3 2025, срок не выдержан. Ведётся работа над SDK Borogove, на базе которого выйдет официальный браузерный клиент; новая дата не объявлена (актуально на апрель 2026).

Где скачать и исходники

  • Официальная страница со ссылками на все клиенты: snikket.org/app
  • GitHub Snikket (сервер + клиенты): github.com/snikket-im — все компоненты open-source.

Snikket vs Matrix/Synapse vs Mattermost: когда что лучше

Выбор между self-hosted мессенджерами зависит от задач:

КритерийSnikketMatrix/SynapseMattermost
Сложность установки15 минут30–60 минут15–30 минут
RAM при 10 пользователях200 МБ500 МБ+300 МБ
Мобильные приложенияСвои, iOS/AndroidElement + др.iOS/Android
Push-уведомленияYes, встроеноТребует настройкиYes
LDAP/ADNoYes (платно)Yes (платно)
ИнтеграцииМинимальныеBridges, webhooksWebhooks, apps
Объем аудиторииМалый бизнес, НКОЛюбой, но сложно50+ пользователей

Когда выбрать Snikket: команда 5–30 человек, важна простота и быстрый старт, нет потребности в LDAP/интеграциях.

Когда лучше Matrix/Synapse: нужна федерация с другими серверами, бриджи в Telegram/IRC или подходит крупный проект.

Когда лучше Mattermost: проектная работа, нужны каналы по темам, интеграции с CI/CD.

Итог

Часто задаваемые вопросы

Ответы на часто задаваемые вопросы по теме статьи.

Официального десктопного клиента Snikket для Windows нет. Snikket — это серверная часть, а не десктопный мессенджер. Для подключения с Windows используйте XMPP-клиент: Gajim (бесплатный) или Swift IM.
Да. Snikket сервер работает на вашем VPS — хоть в РФ, хоть за рубежом. Трафик идёт на ваш домен, а не на сервера разработчика. Блокировки VPS по ИП не влияют.
VPS с 1 ГБ RAM, Ubuntu 22.04, Docker, домен с тремя DNS-записями (A-запись chat.*, CNAME-записьи groups.chat.* и share.chat.*), открытые порты 80, 443, 5222, 5269.
Да, Snikket совместим с любым XMPP-клиентом: Gajim, Conversations, Dino, Monal, Beagle IM. Официальные приложения iOS/Android рекомендуются для новых пользователей — они проще и оптимизированы под Snikket.
Snikket — бесплатный open source проект. Вы можете поддержать разработчиков через Open Collective или GitHub Sponsors. Платных подписок и планов нет.

Не знаете, с чего начать: выбрать VPS, настроить домен или разобраться с почтой? Мы занимаемся IT-инфраструктурой для малого бизнеса: настроим корпоративный мессенджер, почту или другие сервисы под ключ — без бесконечных звонков и инструкций.