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.
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:
Antes de la instalación, se validó el estado de salud de la placa mediante SSH:
| 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. |
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
Editamos el archivo de configuración principal en /etc/prosody/prosody.cfg.lua.
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
La integración en el cliente de escritorio fue inmediata y exitosa.
usuario_pc192.168.1.50El despliegue en smartphones presentó restricciones severas por las políticas de seguridad del software moderno.
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).
usuario_movil@192.168.1.50, puerto 5222, y la opción activa “Ignore TLS errors” (Ignorar errores de TLS).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:
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:
nodo_local.local) usando el servidor DNS interno de AdGuard Home. Esto solucionará el bloqueo de certificados en las apps móviles modernas.mod_http_upload en Prosody. Se configurará un límite estricto de tamaño (ej: máximo 10 MB por archivo) y una tarea programada (cronjob) para limpiar la caché automáticamente cada 48 horas, protegiendo el almacenamiento de la tarjeta SD.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:
usuario_pc”) en cuanto una descarga finalice con éxito./) llega al 90%.Configurar el módulo de salas multiusuario (Multi-User Chat) para fragmentar la comunicación local sin salir del ecosistema ligero de Yaxim/Pidgin:
#alertas@192.168.1.50 para los bots y #general@192.168.1.50 para comunicación humana), manteniendo el flujo de datos ordenado.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.