Chat, voz y video XMPP autogestionado
Published: 2023-07-23 13:38:16


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j4awif7f0dotxjqmerif.png)

# XMPP / Jabber : más allá del e-mail y de la mensajería de texto, nuestras comunicaciones en tiempo real.

*¿ Porqué XMPP - Jabber ?*

![XMPPlogo](https://upload.wikimedia.org/wikipedia/commons/thumb/9/95/XMPP_logo.svg/200px-XMPP_logo.svg.png "XMPP logo")


 Como hemos compartido ya en artículos anteriores, porque al contrario que la mayoría de protocolos de mensajería ( los usados por *Whatsapp , Telegram, etc*..), se define como estándar abierto y se basa en un enfoque de desarrollo y a aplicación de sistemas abiertos, pudiéndo operar entre organizaciones y Servidores en la Web de forma sencilla.
 
> Mencionar que la popular herramienta de Videonferencia *Jitsi* usa XMPP para la función chat.


# La XMPP Standards Foundation (XSF)

Hace [unos meses, la XSF](https://xmpp.org/2017/08/easy-xmpp-the-challenges) (que actúa como XMPP Standards Foundation ) hacia una llamada a la participación y a la acción para, colectivamente, superar [las dificultades/mejoras de  UX, UI, complejidades varias para el usuario al suscribirse...](https://xmpp.org/2017/08/easy-xmpp-the-challenges/) , federar esfuerzos  recuperar la autonomía en nuestras comunicaciones de Mensajería Instantánea  Chat.

> NOTA : actualización : el proyecto Snikket aspira a resolver las cuestiones de usabilidad UX / UI mencionadas . De hecho, hablamos [de este prometedor proyecto en este otro blogpost dedicado ]({% post_url 2021-06-01-Snikket-soberania-en-forma-de-chat-voz-y-video-para-todxs  %})

Pues bien, la plataforma colaborativa y de sincronización / compartición de ficheros Nextcloud ahora ofrece la posibilidad de eso mismo: facilitar la experiencia del usuario (UX), lo que hasta ahora había sido nuestro el talón de Aquiles..., algo que epieza a quedar atrás [cliente chat - JSXC](https://www.jsxc.org/managed.html).


> Mencionar a continuación, para a quien le pueda servir, algunos recursos entorno a esta tecnología :

- Servidor Chat
- Clientes Chat 
  - para usar en el PC como aplicación
  - para usar en tu navegador Web, cómodamente
  - para el teléfono
  

## 'Hola Prosody XMPP'! - Server


En nuestra experiencia, con un mínimo de conocimiento de gestión de servidores GNU + Linux resulta conveniente poner en marcha nuestro propio servidor Chat. De las soluciones disponibles optamos por la que nos parece la más sencilla,versátil  y popular: *Prosody*  XMPP | Server' (hay quien usa p.ej.: *Ejabberd* )

Requiere de pocos recursos hardware (como si te apeteciera cocinarte tu propio selfhosting en una Rasberry/ Orange /Banana Pi  con batido de frutas supervitaminado)

Sin más acá dos útiles recursosy guías para este viaje cibernético :


- [Prosody XMPP Server](https://prosody.im)
- [Configurar un moderno servidor de mensajería instantánea XMPP](https://homebrewserver.club/configuring-a-modern-xmpp-server-es.html)

Ahí tienes los entresijos claramente documentados, para que paso a paso puedas autogestionar tu servidor Chat, los DNS necesarios, certficados de cifrado SSL,  etc...

## Clientes Chat XMPP

 Bien! Ahora, las aplicaciones cliente... para comunicarnos a través de nuestro nuevo servidor ya en marcha.

 Hay [ muchos disponibles](https://wiki.ingobernable.net/doku.php?id=red-xmpp#nuestras_aplicaciones_cliente_xmpp), elegimos 3 tipos diferentes según su uso :
 
 - uno para el navegador Web (pudíendose embeber en otras aplicaciones como Drupal o Wordpress) - *Converse*
 - para nuestro teléfono - *Conversations*
 - el Bot, el simpático asistente que no podía faltar a la fiesta

### Hola 'Conversations' - Cliente Chat App


Ya en el zapatófono, [Conversations](https://conversations.im), muy amigable cliente para Android Linux ... .Con él no echaremos de menos otras aplicaciones que pudiéramos venir usando hasta ahora.



### 'Hola ConverseJS' !  - Cliente Chat JavaScript

Bien! Ahora, los clientes... para comunicarnos a través de nu nuestro servidor
Siempre según en nuestra experiencia, con un mínimo de conocimiento de gestión de servidores GNU + Linux resulta conveniente poner en marcha nuestro propio servidor Chat. De las soluciones disponibles optamos por la que nos parece la más sencilla,versátil  y popular: *Prosody*  XMPP 


### 'Hola Slixmpp' - Python chat bot

Por si faltaba algo... en escena aparece el Bot. El simpático asistente dará la bienvenida a nuestros visitantes, servirá opciones de menú... y lo que se se pueda imaginar. [Slixmpp se ha escrito en Python](https://blog.louiz.org/slixmpp). He visto a algunos bailar ASCiiArt ,y hasta contar chistes.
Es la base de algunos clientes tipo CLI o terminal/consola... que 'haberlos/haylos, como las meigas'.


## Audio y Videoconferencia en XMPP / Jabber Audio ? Si.

 Agregar unas notas sobre las últimas funcionalidades incorporadas a estas poderosas herramientas de comunicación (ver guía en los Recursos, más abajo).
En Librebits estamos usando Audio y Videoconferencia XMPP / Jabber para llamadas internacionales con nuestro clientes. En un primer prototipo, lo hacemos dentro de nuestra propia red privada virtual (VPN). La experiencia del usuario (UX), según ellos, es más que satistactoria : de calidad.

>NOTA técnica: Para poder prescindir de la red VPN, nos faltaŕa incoporarar el servidor STUN (para gestión de los puertos de comunicaciones audiovisuales)


###  XMPP / Jabber + Drupal 

 En Librebits hemos integrado con éxito el [cliente Converse](https://conversejs.org) dado que está escrito en JavaScript para funcionar desde tu navegador Web (pudiéndose embeber también Wordpress o tu JAMStack preferido, p.ej.) llamando sencillamente a un script.

### XMPP / Jabber + Nextcloud 

Entre otras muchas iniciativas, nos ha llamado la atención JSXC. O dicho de otro modo, 

Sencillo cliente XMPP en JavaScript , que puede embeberse fácilmente en cualquier sitio Web, [por ejemplo , en uno basado en Wordpress ... ¿ por qué no?](https://github.com/jsxc/jsxc/wiki/Install-jsxc-(WordPress) )

### Proyecto Snikket

 Hablaremos de este [apasionante proyecto comunitario llamado Snikket](https://snikket.org/)  (en fase Beta, de pruebas) en el que Librebits está empezando a participar en detalle, más adelante. Por ahora adelantar que estamos queriendo poner en práctica el 'State of the Art' en comunicaciones XMPP.
 Con énfasis en la llamada experiencia del usuario ( UX ): sencilla alta/suscripción al servicio,etc.. . Dado que, respetuoso con la privacidad, XMPP no usa un número de teléfono como identificativo sino que se basa en un abierto esquema de identifcativos similar al del los servicios de correo-e, por ej. *nombre@librebits.info* )
 Vamos animarnos (lo posibilidad está abierta a cualquiera) a hacer hosting y ofrecer dichos servicios, en un futuro.
 
Seguiremos informando de su evolución.


## Epílogo

Esperemos que resulten útiles la experiencia y recursos compartidos entorno a las comunicaciones XMPP / Jabber.

> Decíamos ... más allá del e-mail, volver a unir lo que nunca estuvo fragmentado, nuestras comunicaciones en tiempo real

## Recursos :

- [Prosody server](https://prosody.im)
- [ConverseJS](https://conversejs.org "Converse JavaScript") 
- [Conversations](https://conversations.im "Conversations App")

- [Audio y Videoconferencia en XMPP / Jabber](https://homebrewserver.club/server-support-for-audio-video-calls.html "Audio y Videoconferencia en XMPP / Jabber")

###  Python Chat Bot :

- [Slixmpp](https://blog.louiz.org/slixmpp "Slixmpp Py.")
- [Sleekxmpp](http://sleekxmpp.com "Sleekxmpp Py.")



- Diagrama - Red XMPP con cliente *Converse* JavaScript :

![XMPP](/assets/images/xmpp-arquitectura.jpeg "Red XMPP")