Tabla de Contenidos

🍊🏴‍☠️Prosody - servidor de Mensajería XMPP "Local" con pequeño servidor Orange Pi

Este documento registra el proceso de despliegue y resolución de problemas para montar un servicio de chat privado e instantáneo dentro de la red local, aprovechando la infraestructura existente.

1. Entorno de Red y Servicios

El servidor central es una placa de desarrollo de recursos medidos (512MB RAM) corriendo una distribución basada en Debian 9 Stretch (Armbian).

Para este proyecto elegimos Prosody bajo el protocolo estándar XMPP debido a su huella mínima de recursos (10-20 MB de RAM y 0% de CPU en reposo). El servicio coexiste sin inconvenientes con las tareas que la placa ya ejecuta 24/7:

2. Diagnóstico Previo del Servidor

Antes de la instalación, se validó el estado de salud de la placa mediante SSH:

Parámetros del sistema en el servidor local

Parámetro Estado Observaciones
Dirección IP 192.168.1.50 IP estática local genérica utilizada para la conexión de los clientes.
Temperatura ~34°C Parámetros térmicos óptimos.
Memoria RAM ~493 MB libres Capacidad suficiente para el nuevo servicio.
Almacenamiento /storage 100% de 58G Partición dedicada exclusivamente a descargas; no interfiere con el sistema.
Almacenamiento Raíz (/) 18% en uso Espacio libre saludable en el sistema operativo base.

3. Instalación de Dependencias

Al tratarse de una distribución con soporte oficial finalizado, se aseguró el acceso a los repositorios históricos en /etc/apt/sources.list:

deb http://archive.debian.org/debian/ stretch main contrib non-free
deb http://archive.debian.org/debian-security/ stretch/updates main contrib non-free

Con las fuentes listas, se procedió con la instalación del servidor y la librería criptográfica básica:

sudo apt update
sudo apt install prosody luasec

Gestión de paquetes para la instalación de Prosody

4. Configuración del Servidor (Host Local)

Editamos el archivo de configuración principal en /etc/prosody/prosody.cfg.lua.

Sección por defecto del bloque VirtualHost

Modificamos el host de ejemplo para apuntar a la IP local simulada y relajamos las restricciones de cifrado para facilitar la compatibilidad en red interna sin certificados SSL de internet:

VirtualHost "192.168.1.50"
    enabled = true

-- Se comentan las líneas de SSL al no contar con un dominio público firmado:
-- ssl = {
--     key = "/etc/prosody/certs/example.com.key";
--     certificate = "/etc/prosody/certs/example.com.crt";
-- }

-- Directivas para permitir conexiones locales directas:
c2s_require_encryption = false
allow_unencrypted_plain_auth = true

Aplicamos los cambios reiniciando el demonio:

systemctl restart prosody

Y generamos las credenciales genéricas para los dispositivos desde la terminal:

prosodyctl adduser usuario_pc@192.168.1.50
prosodyctl adduser usuario_movil@192.168.1.50

5. Pruebas de Conexión de Clientes

Computadora de Escritorio (Pidgin)

La integración en el cliente de escritorio fue inmediata y exitosa.

Parámetros de cuenta XMPP en Pidgin

Yin yón

Dispositivo Móvil (Android)

El despliegue en smartphones presentó restricciones severas por las políticas de seguridad del software moderno.

Solución con Yaxim

Para mantener la configuración por IP sin añadir complejidad de DNS locales o certificados auto-firmados, se optó por Yaxim (un cliente clásico disponible en la Play Store).

6. Proyecciones de Uso y Mejoras Futuras

Para expandir las capacidades de este nodo local sin saturar el hardware de la placa, se plantean las siguientes líneas de mejora y casos de uso prácticos a mediano plazo:

A. Activación de Transferencia de Archivos (Multimedia)

Actualmente el canal está limitado a texto. Para habilitar el envío de imágenes, notas de voz y documentos entre la PC y el móvil, los pasos requeridos son:

B. Integración de Canales y Bots de Notificación (Automatización)

Dado que la placa ya centraliza servicios críticos de la casa, el servidor XMPP puede transformarse en un centro de alertas automatizadas mediante scripts ligeros en Bash o Python:

C. Salas de Conversación Temáticas (MUC)

Configurar el módulo de salas multiusuario (Multi-User Chat) para fragmentar la comunicación local sin salir del ecosistema ligero de Yaxim/Pidgin:

D. Puente de Respaldos de Texto Plano

Utilizar el canal como un bloc de notas instantáneo y privado. Al enviarse comandos, fragmentos de código o notas rápidas entre el celular y la computadora, todo queda guardado en el historial local del servidor, sirviendo como una alternativa privada a herramientas comerciales de sincronización de notas.

7. Recursos y Enlaces de Interés