====== 馃崐馃彺鈥嶁槧锔廝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.]]