Тест на соответствие
Проверено набором тестов на compliance.conversations.im, полный отчёт там.
Открытый исходный код XMPP
XMPP-сервер на Go, сборка v0.1.9. Протестирован набором тестов на соответствие compliance.conversations.im. Apache 2.0. Для команд, которым нужны федерация, мобильные клиенты и операционный контроль без экзотического стека выполнения.
Доверие
Zerta — это жёсткий форк Jackal, развивающийся как независимый проект под Apache 2.0. На этой странице остаются только утверждения, подтверждённые репозиторием.
Проверено набором тестов на compliance.conversations.im, полный отчёт там.
Разрешительная open-source лицензия ещё до того, как первый прототип превратится в совещание по лицензированию.
Сборка, отладка и деплой вписываются в обычный SRE- и Go-инструментарий.
SASL2, Bind2 и FAST для актуальной аутентификации клиента.
Почему Zerta
Zerta не конкурирует обещаниями возраста или масштаба. Преимущество — контролируемая технология: Go, понятная лицензия, привычный мониторинг и backend-ы инфраструктуры на выбор.
Кодовая база, которую можно собрать, изучить и отладить стандартным Go-инструментарием.
Подходит для расширений, SaaS-эксплуатации и интеграции в продукт без ранней неопределённости copyleft.
Никакого отдельного острова дашбордов. Метрики и профили идут в тот же стек, что уже использует эксплуатация.
Redis, PostgreSQL, NATS, Raft или etcd: архитектура следует за вашей инфраструктурой, а не наоборот.
Функции
Список функций намеренно технический. Никаких логотипов клиентов, никаких цифр масштаба, никаких обещаний производительности без измерений.
SASL2, Bind2, FAST, Channel Binding, OMEMO, списки приватности, Guardian и антиспам.
MAM, Message Carbons, Stream Management, CSI, офлайн-сообщения и ростер.
Multi-User Chat, постоянные комнаты, модерация, MUC RTBL, HTTP Upload, TURN/STUN и push.
PostgreSQL, MySQL, BoltDB, кэш Redis, Admin API, zertactl, Prometheus, health checks и pprof.
Быстрый старт
Стандартный путь прост: клонировать репозиторий, установить бинарник, настроить YAML, запустить сервер. Docker и Helm тоже доступны в проекте.
git clone https://git.uuxo.net/UUXO/zerta.git
cd zerta
make install installctl
zerta --config=config.yaml
# Создать пользователя
zertactl user add username:password
# Docker
docker-compose -f dockerfiles/docker-compose.yml up
Документация
Размещённая структура документации — следующий шаг. Пока самые важные пути ведут прямо в репозиторий.
Сборка, systemd, nginx, TLS, мониторинг, безопасность и кластеризация в руководстве администратора.
Полный YAML-справочник для listener-ов, хранилища, аутентификации, TLS, модулей и кластеризации.
Документированный путь к XMPP 2024 Compliance Suite с включённым набором модулей.
FAQ
Короткие ответы, каждый подтверждён репозиторием. Там, где документации ещё не хватает, эта страница так и говорит.
MySQL 8+ или PostgreSQL 12+ в качестве базы данных, действующий TLS-сертификат (например, Let's Encrypt) и nginx перед сервером для терминации TLS, WebSocket и BOSH. HTTP Upload (XEP-0363) и TURN/STUN (RFC 5766, XEP-0215) встроены. Полный список, включая цепочку сборки, — в руководстве администратора в разделе «Requirements».
HTTP Upload: встроенный модуль XEP-0363. Для HMAC, дедупликации или собственного backend-а хранения — опционально hmac-file-server.
Да. BoltDB встроена и не требует отдельного сервера базы данных — но только для одного узла, без репликации и без кластеризации. Для продакшена предполагаются MySQL или PostgreSQL. Zerta создаёт свою схему при запуске, поэтому ручной импорт не требуется.
Кластеризация работает через общее KV-хранилище (cluster.type: kv). В коде реализовано пять backend-ов: Redis, PostgreSQL, NATS, Raft и etcd. Руководство администратора сейчас подробно описывает четыре из них — etcd существует, но пока не задокументирован. BoltDB кластеризацию не поддерживает.
Встроенный HTTP-сервер отдаёт метрики Prometheus на /metrics (с поддержкой OpenMetrics) и Go-профилирование на /debug/pprof/. Дашборд Grafana поставляется в репозитории в каталоге monitoring/. Метрики хранилища включаются через storage.repository.type: measured. Отдельный раздел документации по мониторингу пока не опубликован.
Guardian ограничивает число неудачных попыток входа на C2S-listener (max_auth_failures), банит адреса на настраиваемый срок (ban_duration) и ограничивает скорость новых подключений (connect_rate_limit). Для сообщений есть модуль antispam с лимитом скорости на пользователя, плюс muc_rtbl для списков блокировки в реальном времени в комнатах.
Нет. Эти гайды для операторов запланированы, но не опубликованы. Что задокументировано сегодня: Zerta автоматически выполняет миграции схемы при запуске. Бэкап и восстановление сейчас опираются на инструментарий вашей базы данных, плюс конфигурацию и каталог загрузок. Тем, кто эксплуатирует Zerta в продакшене, пока приходится самостоятельно определять и тестировать эту процедуру.
Протестировано набором тестов на compliance.conversations.im, последний прогон 2026-04-15 на 0ea1.net с тем же результатом, что и uuxo.net. Сейчас на uuxo.net работает сборка v0.1.9. Полный отчёт на compliance.conversations.im, каталога XEP здесь нет.
SASL2 (XEP-0388) вместе с Bind2 (XEP-0386) обрабатывает вход и привязку ресурса за один round trip, что сокращает число обменов при установлении соединения. FAST (XEP-0484) добавляет аутентификацию по токену, дополненную channel binding (XEP-0440) и обновлением хэша SCRAM (XEP-0480).
Токены FAST выдаются как HT-SHA-256-NONE и поэтому не привязаны к каналу. Относитесь к ним как к полноценным учётным данным доступа.
Гайда по миграции со сторонних серверов нет — он запланирован, но не опубликован. Zerta поставляется с собственной схемой базы данных и создаёт её при запуске; импорт существующих баз ejabberd или Prosody этим не покрывается. Реалистичный путь сегодня — новая установка с переносом пользователей и данных вручную.
Zerta — форк ortuman/jackal, развивается как независимый проект под Apache 2.0. Текущие направления: соответствие XMPP 2024, современная аутентификация (SASL2/Bind2/FAST), кластеризация через KV-backend-ы, плюс Guardian и антиспам.
Файл конфигурации, бинарники и префикс переменных окружения — собственные у Zerta (zerta.yml, ZERTA_*). Поэтому конфигурацию Jackal нельзя перенести без проверки.
Репозиторий
Сервер, документация, примеры конфигов, файлы Docker и скрипты Helm лежат на git.uuxo.net. Managed-хостинг — отдельно на uuxo.net.