Files
xmpp-server-prosody/references/slidge-registration-client-compat.md
2026-09-06 13:51:11 +00:00

2.1 KiB

Slidge registration — which XMPP clients can talk to a bare-domain service JID

Verified 2026-08-29 on nixg.ru (estorozhenko@nixg.ru registered via Pidgin, Method B). Complements slidge-registration-and-avatar-gap.md §1.

The problem

Bridge registration is an interaction with the COMPONENT JID telegram.nixg.ru — a bare domain with no local part. Some clients refuse to start chats with such addresses:

Client Bare-domain JID (telegram.nixg.ru) Notes
Converse.js (web, chat.nixg.ru) ❌ refuses "Пожалуйста, введите корректный XMPP-адрес" — requires user@domain to open a chat / add a contact
Pidgin ✅ works Buddies → New Instant Message → type telegram.nixg.ru (no @) → chat opens → type register
Gajim ✅ works Method A (adhoc Register command) or chat to service JID
Movim / Cheogram ✅ works Method A supported
Conversations (Android) ✅ works can message service JIDs

Why Converse fails

Converse validates chat targets as full JIDs (user@domain). A domain-only JID fails its address validation on the "new chat / add contact" path, so the bridge (which lives at the domain) is unreachable from the web client for registration. This is a client limitation, not a server config problem.

Working registration recipe (Pidgin)

  1. Pidgin: Buddies → New Instant Message (Ctrl+M).
  2. Address: telegram.nixg.ru (bare domain, no @).
  3. Type register. Bridge replies with the form.
  4. Enter phone (international +7...). api_id/api_hash NOT asked when preset in env (SLIDGE__SLIDGRAM_API_ID/HASH) — the form omits those fields.
  5. Enter the code from SMS/TG notification; if 2FA is on, the bridge asks for the account password.
  6. Verify: docker logs icq-slidgram | grep 'Login success', and user_account row in /var/lib/slidge/slidge.sqlite.

Registering a SECOND user

The bridge binds one TG number per XMPP user per server. A second XMPP user must run the same register flow from their own client — the bridge stores per-user sessions, it is NOT one shared account.