Zerta

XMPP open source

Zerta en Go.

Serveur XMPP en Go, build v0.1.9. Testé avec la suite de conformité sur compliance.conversations.im. Apache 2.0. Pour les équipes qui veulent la fédération, des clients mobiles et le contrôle opérationnel sans adopter une stack d'exécution exotique.

  • Suite de conformité : compliance.conversations.im
  • Build v0.1.9
  • Apache 2.0
  • Binaire Go unique

Confiance

Des faits, pas du théâtre de plateforme.

Zerta est un fork dur de Jackal et se poursuit comme projet indépendant sous Apache 2.0. Cette page ne conserve que des affirmations étayées par le dépôt.

v0.1.9

Testeur de conformité

Vérifié avec la suite sur compliance.conversations.im, rapport complet là-bas.

2.0

Sous licence Apache

Une licence open source permissive avant que le premier prototype ne devienne une réunion de licences.

Go

Stack d'exploitation lisible

Builds, débogage et déploiement s'intègrent aux outillages SRE et Go habituels.

SASL2

Authentification moderne

SASL2, Bind2 et FAST pour une authentification client à jour.

Pourquoi Zerta

Pour les opérateurs qui veulent lire la stack.

Zerta ne rivalise pas sur des promesses d'ancienneté ou d'échelle. L'avantage est une technologie maîtrisable : Go, une licence claire, une supervision familière et des backends d'infrastructure au choix.

Go plutôt qu'un runtime spécialisé

Une base de code que vous pouvez builder, inspecter et déboguer avec l'outillage Go standard.

Apache 2.0 plutôt que des frictions de licence

Adapté aux extensions, à l'exploitation SaaS et à l'intégration produit, sans incertitude copyleft précoce.

Prometheus et pprof

Pas d'îlot de tableau de bord maison. Métriques et profils alimentent la stack déjà utilisée par les équipes d'exploitation.

Cinq backends de cluster

Redis, PostgreSQL, NATS, Raft ou etcd : l'architecture suit votre infrastructure, pas l'inverse.

Fonctionnalités

Le périmètre actuel, regroupé par vue d'exploitation.

La liste des fonctionnalités est volontairement technique. Pas de logos clients, pas de chiffres d'échelle, pas de promesses de performance sans mesure.

Auth & sécurité

SASL2, Bind2, FAST, Channel Binding, OMEMO, listes de confidentialité, Guardian et anti-spam.

Messagerie & synchro

MAM, Message Carbons, Stream Management, CSI, messages hors ligne et roster.

Collaboration

Multi-User Chat, salons persistants, modération, MUC RTBL, HTTP Upload, TURN/STUN et push.

Exploitation

PostgreSQL, MySQL, BoltDB, cache Redis, Admin API, zertactl, Prometheus, health checks et pprof.

Démarrage rapide

Un binaire. Une config. Démarrez.

Le chemin standard est simple : cloner le dépôt, installer le binaire, configurer le YAML, démarrer le serveur. Docker et Helm sont également disponibles dans le projet.

git clone https://git.uuxo.net/UUXO/zerta.git
cd zerta
make install installctl
zerta --config=config.yaml

# Créer un utilisateur
zertactl user add username:password

# Docker
docker-compose -f dockerfiles/docker-compose.yml up

Documentation

De l'installation à l'exploitation.

Une structure de documentation hébergée est la prochaine étape. Pour l'instant, les chemins les plus importants mènent directement au dépôt.

Installation & exploitation

Build, systemd, nginx, TLS, supervision, sécurité et clustering dans le guide admin.

Configuration

Référence YAML complète pour listeners, stockage, auth, TLS, modules et clustering.

Conformité

Chemin documenté vers la XMPP 2024 Compliance Suite avec le jeu de modules activés.

FAQ

Des questions avant de décider.

Des réponses courtes, chacune étayée par le dépôt. Là où la documentation manque encore, cette page le dit.

Installation

Que me faut-il pour un serveur Zerta en production ?

MySQL 8+ ou PostgreSQL 12+ comme base de données, un certificat TLS valide (p. ex. Let's Encrypt) et nginx en frontal pour la terminaison TLS, WebSocket et BOSH. HTTP Upload (XEP-0363) et TURN/STUN (RFC 5766, XEP-0215) sont intégrés. La liste complète, avec la chaîne d'outils de build, est dans le guide admin sous « Requirements ».

HTTP Upload : module XEP-0363 intégré. Pour HMAC, la déduplication ou votre propre backend de stockage, éventuellement hmac-file-server.

Puis-je essayer Zerta sans base de données externe ?

Oui. BoltDB est embarqué et ne nécessite aucun serveur de base de données — mais uniquement pour un nœud unique, sans réplication ni clustering. Pour la production, MySQL ou PostgreSQL sont les backends prévus. Zerta crée son schéma au démarrage, aucun import manuel n'est nécessaire.

Exploitation

Comment faire tourner Zerta sur plusieurs nœuds ?

Le clustering passe par un magasin KV partagé (cluster.type: kv). Cinq backends sont implémentés dans le code : Redis, PostgreSQL, NATS, Raft et etcd. Le guide admin en documente actuellement quatre en détail — etcd existe mais n'est pas encore documenté. BoltDB ne supporte pas le clustering.

Quelles interfaces de supervision sont disponibles ?

Le serveur HTTP intégré expose des métriques Prometheus sur /metrics (OpenMetrics activé) et le profilage Go sur /debug/pprof/. Un tableau de bord Grafana est fourni dans le dépôt sous monitoring/. Les métriques de stockage s'activent via storage.repository.type: measured. Une section de documentation dédiée à la supervision n'a pas encore été publiée.

Comment protéger le serveur contre le brute force et le spam ?

Guardian limite les échecs de connexion par listener C2S (max_auth_failures), bannit les adresses pour une durée configurable (ban_duration) et limite le débit des nouvelles connexions (connect_rate_limit). Pour les messages, il y a le module antispam avec une limite de débit par utilisateur, plus muc_rtbl pour des listes de blocage en temps réel dans les salons.

Existe-t-il des guides pour la sauvegarde, la restauration et les mises à niveau ?

Non. Ces guides opérateur sont prévus mais non publiés. Ce qui est documenté aujourd'hui : Zerta exécute automatiquement les migrations de schéma au démarrage. La sauvegarde et la restauration reposent actuellement sur l'outillage de la base de données utilisée, plus la configuration et le répertoire d'upload. Quiconque exploite Zerta en production doit définir et tester cette procédure lui-même pour l'instant.

Protocole

Que signifie le statut du testeur de conformité ?

Testé avec la suite sur compliance.conversations.im, dernière exécution le 2026-04-15 sur 0ea1.net avec le même résultat que uuxo.net. Actuellement en build v0.1.9 sur uuxo.net. Le rapport complet est sur compliance.conversations.im, pas de catalogue XEP ici.

Que m'apportent SASL2, Bind2 et FAST ?

SASL2 (XEP-0388) associé à Bind2 (XEP-0386) gère la connexion et le bind de ressource en un seul aller-retour, ce qui réduit le nombre d'allers-retours lors de l'établissement d'une connexion. FAST (XEP-0484) ajoute l'authentification par jeton, complétée par le channel binding (XEP-0440) et la mise à niveau du hash SCRAM (XEP-0480).

Les jetons FAST sont émis en HT-SHA-256-NONE et ne sont donc pas liés au canal. Traitez-les comme un identifiant d'accès complet.

Migration

Puis-je migrer d'ejabberd ou Prosody vers Zerta ?

Il n'existe pas de guide de migration pour les serveurs tiers — c'est prévu mais non publié. Zerta fournit son propre schéma de base de données et le crée au démarrage ; l'import de bases ejabberd ou Prosody existantes n'est pas couvert. Le chemin réaliste aujourd'hui est une installation neuve avec transfert de vos utilisateurs et données.

En quoi Zerta diffère-t-il de Jackal ?

Zerta est un fork d'ortuman/jackal, développé comme projet indépendant sous Apache 2.0. Axes actuels : conformité XMPP 2024, authentification moderne (SASL2/Bind2/FAST), clustering via des backends KV, plus Guardian et anti-spam.

Le fichier de config, les binaires et le préfixe d'environnement sont propres à Zerta (zerta.yml, ZERTA_*). Une configuration Jackal ne peut donc pas être reprise telle quelle.

Dépôt

Le code est la preuve.

Serveur, docs, exemples de config, fichiers Docker et scripts Helm résident sur git.uuxo.net. L'hébergement managé se trouve séparément sur uuxo.net.

git.uuxo.net/UUXO/zerta