====== 馃崐馃彺鈥嶁槧锔廝rosody - 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:
* **Transmission Daemon:** Gestor de descargas asignado a la unidad externa de almacenamiento.
* **AdGuard Home:** Servidor DNS y filtrado de publicidad para toda la red dom茅stica.
* **CUPS:** Servidor de impresi贸n en red.
===== 2. Diagn贸stico Previo del Servidor =====
Antes de la instalaci贸n, se valid贸 el estado de salud de la placa mediante SSH:
{{:specs_orange_pi.jpeg?400|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
{{:specs_orage_pi_ii.jpeg?400|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''.
{{:virtualhost.jpeg?400|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.
{{:recurso.jpeg?400|Par谩metros de cuenta XMPP en Pidgin}}
* **Protocolo:** XMPP
* **Usuario:** ''usuario_pc''
* **Dominio:** ''192.168.1.50''
* **Recurso:** Vac铆o (asignaci贸n autom谩tica por defecto).
* **Ajustes Avanzados:** Se configur贸 la seguridad en //"Usar cifrado si est谩 disponible"// y se especific贸 el Servidor de conexi贸n a la IP del host. Estado: Disponible (Verde).
{{:eladmin.jpeg?400|Yin y贸n}}
==== Dispositivo M贸vil (Android) ====
El despliegue en smartphones present贸 restricciones severas por las pol铆ticas de seguridad del software moderno.
* **Punto de control:** Se verific贸 que el dispositivo estuviera en el Wi-Fi local, ya que la IP del host es inaccesible desde redes m贸viles externas (4G/5G).
* **Conflicto de software:** Clientes actuales basados en Conversations (como Monocles o Blabber) bloquearon el acceso lanzando alertas insaltables de **"Seguridad de transporte d茅bil (sin TLS 1.3)"** y **"Dominio no verificable"**. Esto ocurre porque las librer铆as modernas de Android impiden por c贸digo el uso de IPs num茅ricas locales sin certificados firmados por entidades externas.
==== 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).
* **Configuraci贸n:** ID Jabber ''usuario_movil@192.168.1.50'', puerto ''5222'', y la opci贸n activa **"Ignore TLS errors"** (Ignorar errores de TLS).
* **Resultado:** Conexi贸n exitosa y puente de comunicaci贸n establecido.
===== 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:
* **Migraci贸n a Dominio Local:** Configurar un dominio ficticio de texto (ej: ''nodo_local.local'') usando el servidor DNS interno de **AdGuard Home**. Esto solucionar谩 el bloqueo de certificados en las apps m贸viles modernas.
* **M贸dulo HTTP Upload:** Compilar o activar el m贸dulo ''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.
==== 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:
* **Alertas del Torrent Seeder:** Configurar **Transmission** para que env铆e un mensaje autom谩tico al chat ("''usuario_pc''") en cuanto una descarga finalice con 茅xito.
* **Reportes de AdGuard Home:** Notificaciones semanales con estad铆sticas de consultas bloqueadas o alertas si se detecta actividad inusual en la red.
* **Estado del Servidor:** Alertas autom谩ticas si la temperatura de la CPU de la Orange Pi supera los 60掳C o si el almacenamiento de la ra铆z (''/'') llega al 90%.
==== 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:
* Crear salas fijas independientes (ej: ''#alertas@192.168.1.50'' para los bots y ''#general@192.168.1.50'' para comunicaci贸n humana), manteniendo el flujo de datos ordenado.
==== 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 =====
* [[https://prosody.im/ | Prosody - Servidor XMPP]]
* [[https://yaxim.org/ | Yaxim - Cliente XMPP para Android]]
* [[https://www.pidgin.im/ | Pidgin - Cliente XMPP de escritorio]]
* [[https://www.debian.org/ | Debian - Sistema Operativo]]
* [[http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-pi-One.html|Orange Pi One Specs.]]