Skip to main content

Cerca

Elementi taggati con: Prosody


 

Configurar un servidor de mensajería instantánea XMPP (Prosody 0.11)


#actualidad #guia #herramientas #mensajeria #prosody #redes #software #xmpp

*

Introducción

Esta es una guía para configurar un servidor de mensajería instantánea basado en XMPP moderno, enfocado a la seguridad, mensajería móvil y fácil de usar. La guía asume que usas ‘Debian Stable’ en el servidor, que quieres alojar y administrar la mensajería instantánea para tu grupo de amigos y que tienes conocimiento básico de usar la línea de comandos en Linux.

Firewall y DNS

Abre los siguientes puertos en tu firewall para poder comunicarte con el servidor:
5000 (hacer de proxy para intercambiar archivos grandes entre clientes) 

5222 (para comunicación entre cliente y servidor, C2S) 

5269 (para comunicación entre servidores, S2S) 5281 (el puerto https por defecto de prosody)

También asegúrate de que tienes un dominio con DNS A-records para los siguientes subdominios
myserver.org (el dominio principal) 

muc.myserver.org (para sala de grupos) 

dump.myserver.org (para componente HTTP-Upload) 

proxy.myserver.org (para el proxy de transferencia de archivos)

Esta guía usa los dominios escritos arriba, pero puedes ser más creativo :)

Habilitar HTTPS

Primero, conseguimos un certificado HTTPS firmado por Let’s Encrypt:

Se necesita para XMPP moderno, certificados auto-firmados no funcionaran.

Instala Certbot y consigue los certificados para tu dominio (reemplaza myserver.org por el tuyo):
sudo apt-get update && sudo apt-get install certbot certbot certonly -d myserver.org -d muc.myserver.org -d dump.myserver.org -d proxy.myserver.org

Si funciona, deberías poder ver algo así:

Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/myserver.org/fullchain.pem. Your cert will expire on 2019-02-15. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew **all of your certificates, run “certbot renew”

Instalar y configurar Prosody, el servidor XMPP

Instala la version Prosody 0.11 y sus dependencias desde el repositorio oficial de Prosody:
echo deb [url=http://packages.prosody.im/debian]http://packages.prosody.im/debian[/url] $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list 



wget [url=https://prosody.im/files/prosody-debian-packages.key]https://prosody.im/files/prosody-debian-packages.key[/url] -O- | sudo apt-key add - 



sudo apt-get update && sudo apt-get install prosody lua-sec

Instala los plugins más recientes de Prosody:
apt-get install mercurial cd /usr/src hg clone [url=https://hg.prosody.im/prosody-modules/]https://hg.prosody.im/prosody-modules/[/url] prosody-modules

Haz una copia de seguridad de la configuración de Prosody por defecto e instala la de homebrewserver.club
cd /etc/prosody cp prosody.cfg.lua prosody.cfg.lua.original wget [url=https://homebrewserver.club/downloads/prosody.0.11.cfg.lua]https://homebrewserver.club/downloads/prosody.0.11.cfg.lua[/url] -O prosody.cfg.lua

La configuración de homebrewserver.club
-- una configuración de prosody enfocado a la seguridad, mensajería móvil y fácil de usar. -- proporcionada por homebrewserver.club -- el archivo de la configuración original(prosody.cfg.lua.original) tendrá mas información 



plugin_paths = { "/usr/src/prosody-modules" } -- el directorio de los plugin no estándar para mantenerlos al dia con mercurial 



modules_enabled = { "roster"; -- Permite a los usuarios tener una lista de contactos. Recomendado ;) "saslauth"; -- Autenticación entre clientes y servidores. Recomendado si quieres iniciar sesión. "tls"; -- Permite conexiones c2s/s2s seguras con TLS "dialback"; -- Permite s2s dialback "disco"; -- Descubrir servicios entre servidores y clientes "private"; -- Almacenamiento XML privado (para guardar las salas a las que te has unido) "vcard4"; -- Perfiles de usuarios (guardado en PEP) "vcard_legacy"; -- Convierte entre legacy vCard y PEP Avatar, vcard "version"; -- Contesta a las peticiones de la versión del servidor "uptime"; -- Informa sobre cuánto tiempo ha estado funcionando el servidor "time"; -- Permite conocer la hora en el servidor "ping"; -- Contesta XMPP pings con pongs "register"; --Permite registrar una cuenta en tu servidor desde un cliente "pep"; -- Entre otras cosas, permite a usuarios publicar sus claves OMEMO publicas "carbons"; -- XEP-0280: Message Carbons, sincroniza mensajes entre dispositivos "smacks"; -- XEP-0198: Stream Management, mantiene conversaciones incluso cuando la red se cae "mam"; -- XEP-0313: Message Archive Management, permite descargar el historial de conversasiones del servidor "csi_simple"; -- XEP-0352: Client State Indication "admin_adhoc"; -- Permite la administración del servidor desde un cliente XMPP (que soporte comandos ad-hoc) "blocklist"; -- XEP-0191 bloquear usuarios "bookmarks"; -- Sincroniza entre clientes diferentes las salas a las que te has unido --"cloud_notify"; -- Soporta XEP-0357 Push Notifications para tener compatibilidad con ChatSecure/iOS. -- iOS normalmente aborta la conexión cuando una aplicación funciona en segundo plano y requiere el uso de los servidores de Push de Apple para levantar la conexión y recibir un mensaje. Habilitar este módulo permite a tu servidor comunicarse con los servidores Push de Apple para ayudar a tus usuarios de iOS. -- Sin embargo, lo dejamos comentado porque es un otro ejemplo de una plataforma cloud integrada verticalmente que choca con las ideas de federación y las redes libres. Descomentarlo tiene riesgo de vigilancia de los meta dados de tus usuarios por Apple. "server_contact_info"; -- Añade información de contacto en caso de incidencias con el servidor }; 



allow_registration = false; -- Permite registrar una cuenta en tu servidor desde un cliente, para más información visita [url=http://prosody.im/doc/creating_accounts]http://prosody.im/doc/creating_accounts[/url] 



certificates = "/etc/prosody/certs" -- Ruta donde Prosody busca los certificados: [url=https://prosody.im/doc/letsencrypt]https://prosody.im/doc/letsencrypt[/url] https_certificate = "certs/myserver.org.crt" 



c2s_require_encryption = true -- Fuerza a los clientes a usar conexiones cifradas 



s2s_secure_auth = true -- Fuerza la autenticación de certificados para conexiones entre servidores 



pidfile = "/var/run/prosody/prosody.pid" 



authentication = "internal_hashed" 



-- Historial de conversaciones -- Si mod_mam esta activo, Prosody guardara una copia de cada mensaje. -- Se usa para sincronizar conversaciones entre múltiples clientes, incluso -- si están desconectados. Esta configuración controla cuanto tiempo Prosody -- guarda los mensajes en el historial antes de eliminarlos. 



archive_expires_after = "1w" -- Eliminar el historial de mensajes en una semana 



log = { -- descomenta para mayor privacidad info = "/var/log/prosody/prosody.log"; -- Cambia 'info' por 'debug' para un registro más detallado error = "/var/log/prosody/prosody.err"; "\*syslog"; } 



VirtualHost "myserver.org" 



-- Habilita http_upload para permitir compartir imágenes entre diferentes dispositivos y diferentes clientes Component "dump.myserver.org" "http_upload" 



-- Permite crear salas Component "muc.myserver.org" "muc" modules_enabled = { "muc_mam", "vcard_muc" } 



-- Inicia un proxy para intercambiar archivos grandes entre clientes Component "proxy.myserver.org" "proxy65"

Reemplaza el dominio de ejemplo con tu dominio en el archivo de configuración:
sed -i 's/myserver.org/tu dominio/g' prosody.cfg.lua

De forma alternativa puedes reemplazarlos a mano. Estan en las lineas 39, 75, 81, 85 de prosody.cfg.lua

Importa los certificados de LetsEncrypt con Prosody:
prosodyctl --root cert import /etc/letsencrypt/live

Es posible que recibas un resultado similar:

No certificate for host muc.myserver.org found :( No certificate for host dump.myserver.org found :( No certificate for host proxy.myserver.org found :( Imported certificate and key for hosts myserver.org

Pero no te preocupes, el ultimo certificado contiene información de todos los subdominios.

Para acabar

Configura cron para renovar los certificados LetsEncrypt automáticamente
sudo crontab -e

Añade al final:
:::console 0 4 0 \* 0 /usr/bin/certbot renew --renew-hook "prosodyctl --root cert import /etc/letsencrypt/live" --quiet

Esta configuración comprueba y renueva los certificados cada domingo a las 04:00.

Cuando hayas hecho todo esto es hora de arrancar el servidor:
/etc/init.d/prosody restart

Se pueden añadir usuarios desde la línea de comandos. Te pedirá una contraseña:
prosodyctl adduser me@myserver.org

De otra forma puedes cambiar
allow_registration = false; a allow_registration = true;

en la configuración (linea 35) para permitir a los usuarios registrarse en tu servidor desde sus propios clientes.

Ahora puedes intentar conectarte a tu servidor usando un cliente como Gajim o Conversations. Inicia sesión con tu nombre y contraseña.

Si tienes preguntas sobre Prosody, la documentación del proyecto es bastante buena (pero en Ingles). Si eso no es suficiente, pregunta los mismos desarrolladores en la sala XMPP de Prosody

Esta guía es una traducción de la guía del homebrewserver.club.)

 
Ayer con f del @Partido Interdimensional Pirata de Argentina nos* juntamos a armar esto:

Prosody Moderno @ 0xacab.org GitLab


La idea del proyecto es facilitar la tarea de levantar un servicio de #chat moderno, seguro** e interoperable.

Son dos archivos de configuración y un script que crea un container.

Detalles técnicos


Los archivos de configuración son: uno para la #monitorización incluída #Monit, y otro para el servidor de chat #Prosody.

El script es un Dockerfile: un achivo con instrucciones sobre cómo fabricar una imagen de #Docker (como los archivos Makefile de make).

El container está basado en #Alpine, y usa variables de entorno y envsubst para adaptar la configuración.

Eh! Yo quiero, también!


Quienes se den maña, están invitadxs a probarla, y colaborar o hacer su propia versión en base a esta.

Para reportar problemas, documentar o bifurcar (fork) el repositorio, se tienen que registrar en 0xacab.org.

Para clonar el repositorio, pueden tirar git clone https://0xacab.org/partido-interdimensional-pirata/prosody-moderno.git, sin necesidad de registrarse.
#XMPP #Jabber #IM
#XEPs #ComplianceTester #XEP-0387 #HTTPFileUpload #OMEMO #MAM #PushNotifications #MessageCarbons #StreamManagement
#containers #virtualización #aislamiento #automatización #orquestación
#español #ñ

*: más que nada lo armó él, en realidad :P yo fui a acompañar y a aprender (levanté un Prosody una vez, pero nunca había usado Docker)
**: a seguro se lo llevaron preso

 
Ayer con f del @Partido Interdimensional Pirata de Argentina nos* juntamos a armar esto:

Prosody Moderno @ 0xacab.org GitLab


La idea del proyecto es facilitar la tarea de levantar un servicio de #chat moderno, seguro** e interoperable.

Son dos archivos de configuración y un script que crea un container.

Detalles técnicos


Los archivos de configuración son: uno para la #monitorización incluída #Monit, y otro para el servidor de chat #Prosody.

El script es un Dockerfile: un achivo con instrucciones sobre cómo fabricar una imagen de #Docker (como los archivos Makefile de make).

El container está basado en #Alpine, y usa variables de entorno y envsubst para adaptar la configuración.

Eh! Yo quiero, también!


Quienes se den maña, están invitadxs a probarla, y colaborar o hacer su propia versión en base a esta.

Para reportar problemas, documentar o bifurcar (fork) el repositorio, se tienen que registrar en 0xacab.org.

Para clonar el repositorio, pueden tirar git clone https://0xacab.org/partido-interdimensional-pirata/prosody-moderno.git, sin necesidad de registrarse.
#XMPP #Jabber #IM
#XEPs #ComplianceTester #XEP-0387 #HTTPFileUpload #OMEMO #MAM #PushNotifications #MessageCarbons #StreamManagement
#containers #virtualización #aislamiento #automatización #orquestación
#español #ñ

*: más que nada lo armó él, en realidad :P yo fui a acompañar y a aprender (levanté un Prosody una vez, pero nunca había usado Docker)
**: a seguro se lo llevaron preso

 

Prosody 0.10.1 released



Congratulations to the developers!



As always, the release features many improvements and bug fixes.

The package is already in Debian unstable, and will be in testing and stable backports soon.

#prosody #xmpp #debian

 

XMPP with anonymous network I2P



Interesting article with configuration hints for prosody, which I should try at some point:
The idea of building decentralized messenger run by users, not corporations, is not new. But the process of building it costs a lot of money and takes a lot of time. But what if we take the old good XMPP protocol, which has everything already implemented for us?
That's not "real P2P", you may argue, for using XMPP one needs to have a server running with a registered domain name. Yes, but we can run our server software on a local host and use virtual I2P network for connecting with other servers. I2P (Invisible Internet Protocol) allows us to use virtual .i2p address instead of a real domain name, plus it gives us advanced protection against illegal dragnet surveillance.
That way we have:
* Hybrid P2P messenger, which can be run both on end-user devices and on high-performance server infrastructure.
* Features which many of "real P2P" messengers miss: offline message delivery, "cloud storage" for history and contacts, using one account on multiple devices.
* All kinds of end-user applications are available (desktop, mobile, web).
* Censorship resistance and advanced privacy protection as a bonus from using I2P.

Let's get it!
#xmpp #i2p #i2pd #decentralization #p2p #privacy #prosody

 

Use IRC from XMPP with Debian



Biboumi 6.1-1~bpo9+1 and Prosody 0.10.0-1~bpo9+1 are now available in Debian 9 (stable, stretch) via backports. Biboumi is a gateway from XMPP to IRC and can be used with Prosody or any other XMPP server. It allows XMPP users to join IRC channels as if they were MUCs. Very useful!

#biboumi #prosody #xmpp #debian #freesoftware #irc #muc

 

Movim migrates its official server to ejabberd

Movim is a distributed social networking platform founded in 2010. It can be accessed using existing XMPP clients and Jabber accounts, and is a free and open source software licensed under the AGPL.

With version 0.12 released in October, Movim migrated its official server to ejabberd. Before, they were using Metronome, a Prosody fork. Today, we are chatting with Timothée Jaussoin, the founder of Movim, about this very complex migration.
...
We now have a proper packaging for our Linux distribution – Debian, which certainly makes it easier to maintain. There’s also an improved scalability and more stable CPU and memory consumption, which helps to predict hardware requirements.
...
Even if I see ejabberd more as a tool that needs integration and tuning to create a proper platform, ejabberd seems to be the more serious solution to build proper messaging systems using the XMPP protocol.
#movim #ejabberd #socialnetwork #federation #xmpp #agpl #prosody #debian #freesoftware

 

Prosody 0.10.0 now in Debian unstable



Users of Debian unstable can now apt install prosody prosody-modules to get the latest version. I run the packages (so far without issues) on a Debian stable system. The "clean" way would be to wait for a backport, but at the moment, it is not strictly necessary.

#debian #prosody #xmpp #federation

 

Prosody 0.10.0 released



Congratulations to the developers!



Note to Debian users: You can try 0.10 now, but it is a two months old pre-release in experimental. You have to use also the prosody-modules from experimental, which are pretty recent. Works perfectly for me on a production server, but still... Expect the new release in unstable in some days.

#prosody #xmpp #debian

Prosody 0.10.0 released - Prosodical Thoughts

Prosody 0.10.0 released - Prosodical Thoughts

 
for the chat, i started reading about this addition to the #Prosody chat service that Diaspora Pods can run, seems you can connect to additional services that you have an account with. I'd like to get some other #Podmins to weigh in, if anyone has tried this already?

 

Modern XMPP Server



by Elena ``of Valhalla''



reposted here to get the tags right


I've published a new HOWTO on my website:

Enrico already wrote about the Why (and the What, Who and When), so I'll just quote his conclusion and move on to the How.
I now have an XMPP setup which has all the features of the recent fancy chat systems, and on top of that it runs, client and server, on Free Software, which can be audited, it is federated and I can self-host my own server in my own VPS if I want to, with packages supported in Debian.

How



I've decided to install prosody, mostly because it was recommended by the RTC QuickStart Guide; I've heard that similar results can be reached with ejabberd and other servers.

I'm also targeting Debian stable (+ backports); as I write this is jessie; if there are significant differences I will update this article when I will upgrade my server to stretch. Right now, this means that I'm using prosody 0.9 (and that's probably also the version that will be available in stretch).

Installation and prerequisites



You will need to enable the backports repository and then install the packages prosody and prosody-modules.

You also need to setup some TLS certificates (I used Let's Encrypt); and make them readable by the prosody user; you can see Chapter 12 of the RTC QuickStart Guide for more details.

On your firewall, you'll need to open the following TCP ports:
  • 5222 (client2server)
  • 5269 (server2server)
  • 5280 (default http port for prosody)
  • 5281 (default https port for prosody)
The latter two are needed to enable some services provided via http(s), including rich media transfers.

With just a handful of users, I didn't bother to configure LDAP or anything else, but just created users manually via:
prosodyctl adduser alice@example.org
In-band registration is disabled by default (and I've left it that way, to prevent my server from being used to send spim).

prosody configuration



You can then start configuring prosody by editing /etc/prosody/prosody.cfg.lua and changing a few values from the distribution defaults.

First of all, enforce the use of encryption and certificate checking both for client2server and server2server communications with:
c2s_require_encryption = true<br></br>s2s_secure_auth = true
and then, sadly, add to the whitelist any server that you want to talk to and doesn't support the above:
s2s_insecure_domains = { "gmail.com" }

virtualhosts



For each virtualhost you want to configure, create a file /etc/prosody/conf.avail/chat.example.org.cfg.lua with contents like the following:
VirtualHost "chat.example.org"
enabled = true
ssl = {
key = "/etc/ssl/private/example.org-key.pem";
certificate = "/etc/ssl/public/example.org.pem";
}

For the domains where you also want to enable MUCs, add the follwing lines:
Component "conference.chat.example.org" "muc"
restrict_room_creation = "local"

the "local" configures prosody so that only local users are allowed to create new rooms (but then everybody can join them, if the room administrator allows it): this may help reduce unwanted usages of your server by random people.

You can also add the following line to enable rich media transfers via http uploads (XEP-0363):
Component "upload.chat.trueelena.org" "http_upload"
The defaults are pretty sane, but see https://modules.prosody.im/mod_http_upload.html for details on what knobs you can configure for this module

Don't forget to enable the virtualhost by linking the file inside /etc/prosody/conf.d/.

additional modules



Most of the other interesting XEPs are enabled by loading additional modules inside /etc/prosody/prosody.cfg.lua (under modules_enabled); to enable mod_something just add a line like:
"something";
Most of these come from the prosody-modules package (and thus from https://modules.prosody.im/ ) and some may require changing when prosody 0.10 will be available; when this is the case it is mentioned below.
  • mod_carbons (XEP-0280) To keep conversations syncronized while using multiple devices at the same time.

    This will be included by default in prosody 0.10.
  • mod_privacy + mod_blocking (XEP-0191) To allow user-controlled blocking of users, including as an anti-spim measure.

    In prosody 0.10 these two modules will be replaced by mod_privacy.
  • mod_smacks (XEP-0198) Allow clients to resume a disconnected session before a customizable timeout and prevent message loss.
  • mod_mam (XEP-0313) Archive messages on the server for a limited period of time (default 1 week) and allow clients to retrieve them; this is required to syncronize message history between multiple clients.

    With prosody 0.9 only an in-memory storage backend is available, which may make this module problematic on servers with many users. prosody 0.10 will fix this by adding support for an SQL backed storage with archiving capabilities.
  • mod_throttle_presence + mod_filter_chatstates (XEP-0352) Filter out presence updates and chat states when the client announces (via Client State Indication) that the user isn't looking. This is useful to reduce power and bandwidth usage for "useless" traffic.
#xmpp #prosody #debian #jabber