# Servidor doméstico con un móvil viejo: IA autónoma, crons y DLNA

URL: https://moisesvalero.es/blog/servidor-domestico-movil-viejo

Aprende a transformar un móvil viejo en un servidor doméstico 24/7: agente de IA con Hermes, crons de empleo y chollos por Telegram, y streaming a tu Smart TV con 0€ al mes.

Publicado: 2026-09-25T12:00:00.000Z

Todos tenemos en casa un cajón donde van a morir los teléfonos antiguos. Dispositivos que sustituimos no porque su procesador haya dejado de funcionar, sino porque la batería ya no dura un día entero o porque la pantalla tiene alguna grieta superficial. En mi caso, ese teléfono era un Xiaomi POCO X3: un procesador Snapdragon de 8 núcleos ARM64, 6 GB de memoria RAM LPDDR4X y almacenamiento flash UFS de alta velocidad.
Durante meses estuve pagando pequeñas cuotas por servidores privados virtuales (VPS) y peleándome con las capas gratuitas de la nube (como la micro-instancia de Google Cloud con un escaso gigabyte de memoria que colapsaba con cualquier tarea pesada). Miré el teléfono en el cajón y la conclusión fue inmediata: tenía sobre la mesa una máquina 6 veces más potente, con procesamiento paralelo real, batería de respaldo integrada y cero euros de coste mensual. Solo necesitaba el sistema operativo y el software adecuados para cobrar una segunda vida.
En esta guía técnica comparto la arquitectura completa, las medidas de seguridad física para la batería y el código de configuración para montar un servidor doméstico 24/7 que combina tres pilares: un agente de inteligencia artificial autónomo (Hermes Agent), una suite de crons programados para cazar ofertas de empleo y chollos tecnológicos, y un servidor multimedia DLNA con panel web moderno para transmitir películas y series a la Smart TV del salón. Todo el código fuente del proyecto está disponible en abierto en el repositorio poco-x3-hermes-server en GitHub.
1. La comparativa: ¿Por qué un smartphone bate a una VPS barata?
Antes de escribir una sola línea de código, conviene poner las cifras sobre la mesa. Cuando contratamos una VPS básica o recurrimos a niveles gratuitos de proveedores cloud habituales, nos encontramos con cuellos de botella muy severos:
	Memoria RAM: Una instancia gratuita convencional ofrece 1 GB de RAM. A poco que levantes un par de procesos de Node.js o entornos de Python con librerías de scraping, el gestor de memoria del kernel (OOM Killer) interviene y cuelga el servidor. El POCO X3 cuenta con 6 GB de RAM física, dejando más de 2.5 GB limpios exclusivamente para tus servicios.
	Potencia de CPU: Las máquinas virtuales compartidas asignan fracciones de núcleo (0.25 vCPU) sometidas a estrangulamiento térmico y de crédito. Un chip móvil de gama media integra 8 núcleos físicos ARM64 con capacidad de cómputo en paralelo real.
	Almacenamiento: Los discos mecánicos o volúmenes de red de bajo coste sufren en operaciones concurrentes de entrada/salida (IOPS). La memoria flash interna (UFS) de un móvil ejecuta lecturas y escrituras de bases de datos SQLite de forma prácticamente instantánea.
	SAI / UPS integrado de serie: Si hay una tormenta o un corte de luz en tu edificio, una Raspberry Pi o un mini PC doméstico se apaga de golpe, corriendo el riesgo de corromper la tarjeta microSD o la base de datos. El smartphone cuenta con su propia batería: continúa operando durante horas sin inmutarse.
	Consumo eléctrico: El terminal consume entre 1 y 3 vatios en reposo y carga ligera. El impacto en tu factura eléctrica anual es de apenas un par de euros.
"El hardware de un móvil que descartamos por viejo supera con creces los recursos de la mayoría de servidores que contratamos en la nube para automatizaciones personales."
2. Seguridad física: La estrategia del 50% para la batería
El mayor riesgo técnico al reutilizar un móvil como servidor 24/7 no está en el software, sino en la química de su batería. Dejar una batería de iones de litio conectada a un cargador de pared de forma ininterrumpida al 100% de carga provoca degradación acelerada, sobrecalentamiento constante y, con el tiempo, hinchazón física de la celda.
Para solucionar este problema de forma infalible y sin necesidad de modificar el hardware ni rootear el terminal, implementé un enfoque en dos niveles:
El temporizador de corriente analógico
Conecté el cargador del teléfono a un enchufe con temporizador mecánico (un accesorio estándar de menos de 5 euros). El temporizador está programado para dejar pasar corriente únicamente 30 a 45 minutos dos veces al día (por ejemplo, a primera hora de la mañana y a última de la tarde).
Durante el resto de la jornada, el cargador permanece completamente apagado. Con este ciclo, el nivel de carga del móvil oscila de forma natural entre el 45% y el 70%. A nivel electroquímico, el litio se mantiene en su rango de reposo más estable (~3.8V por celda), eliminando por completo la presión química del 100% y asegurando años de vida útil sin hinchazón.
El watchdog térmico y de carga (cron_battery_guard.py)
Como medida de contingencia ante fallos mecánicos del enchufe o desconexiones accidentales, un script en Python programado como cron cada 30 minutos vigila la salud del dispositivo consultando la API de Termux:
# Consulta de telemetría sin permisos especiales
termux-battery-status
El script evalúa dos umbrales críticos:
	Batería baja (&lt; 25%): Si el porcentaje cae por debajo de este umbral (lo que indicaría que el temporizador ha fallado o alguien desenchufó el cable), envía una alerta urgente a Telegram para intervenir antes de que el dispositivo se apague.
	Alerta térmica preventiva (≥ 45°C / 48°C): Si la temperatura del teléfono supera los 45°C por una alta carga continuada de trabajo o temperatura ambiental elevada, emite un aviso de emergencia inmediato para pausar tareas intensivas y proteger el hardware.
3. Preparación del sistema: Termux sin root en ARM64
Una de las grandes ventajas de este montaje es que no requiere rootear el dispositivo ni desbloquear el bootloader. Todo el entorno se ejecuta limpiamente en el espacio de usuario gracias a Termux.
Paso 1: Instalación desde F-Droid
Es fundamental no utilizar la versión de Termux presente en Google Play Store, ya que está obsoleta y congelada debido a políticas antiguas de Android. Debes descargar Termux y el complemento Termux:API directamente desde F-Droid.
Paso 2: Neutralizar el ahorro de energía (Doze)
Android por defecto suspende las aplicaciones en segundo plano cuando la pantalla se apaga. Para convertir el móvil en un servidor fiable:
	Ve a Ajustes → Aplicaciones → Termux → Batería y selecciona "Sin restricciones".
	Ejecuta dentro de Termux el comando para adquirir el bloqueo de suspensión del procesador:
termux-wake-lock
Paso 3: Entorno base y compiladores nativos
Para evitar problemas al compilar librerías de Python escritas en C o Rust (como cryptography, lxml o psutil) sobre la arquitectura aarch64 de Android, instalamos los paquetes nativos precompilados mediante el gestor pkg:
pkg update -y
pkg install -y python nodejs-lts git openssh cronie termux-api \
               rust binutils make clang libxml2 libxslt \
               python-psutil python-cryptography python-lxml
npm install -g pm2
Paso 4: Hardening de SSH sin contraseñas
Para administrar el servidor de forma remota y cómoda desde tu ordenador a través del puerto 8022 de Termux, debemos blindar el acceso:
	Copia tu clave pública SSH (~/.ssh/id_ed25519.pub) al archivo ~/.ssh/authorized_keys del teléfono.
	Modifica la configuración en $PREFIX/etc/ssh/sshd_config desactivando la autenticación por contraseña (PasswordAuthentication no) y habilitando únicamente autenticación por claves (PubkeyAuthentication yes).
	Regla de oro: Nunca abras ni redirijas el puerto 8022 en tu router hacia Internet. La administración debe quedar estrictamente restringida a tu red Wi-Fi local o realizarse a través de una VPN doméstica segura como WireGuard o Tailscale.
"¿Por qué no necesitas una IP estática ni abrir puertos en el router? Porque la comunicación con Telegram y los modelos de IA se realiza por sondeo saliente (long-polling). El móvil inicia las peticiones hacia fuera; jamás expone servicios a la red pública."
4. El agente de IA: Hermes Agent bajo control local
El núcleo de inteligencia del servidor es Hermes Agent, un agente de IA versátil capaz de gestionar herramientas, memoria y llamadas a modelos de lenguaje. Corre como servicio desatendido gestionado por PM2.
Selección de modelo y optimización de costes
Para dotar de inteligencia al servidor sin gastar fortunas en llamadas a la API, conectamos Hermes con el modelo DeepSeek Flash (V4.1). Ofrece un equilibrio perfecto: excelente capacidad de redacción y filtrado en castellano, una velocidad de respuesta que roza el tiempo real y un coste por millón de tokens tan bajo que permite ejecutar múltiples análisis diarios por una fracción de céntimo al mes.
Motor de búsqueda con triple redundancia
Un agente autónomo que depende de la web no puede detenerse si una API externa de búsqueda arroja un error 429 de límite de cuota. Para evitar puntos únicos de fallo, implementé en scripts/web_search_helper.py una arquitectura de búsqueda resistente en tres escalones:
	Rotación multiclave de Tavily: El sistema soporta un array de API keys separadas por comas. Si una clave agota su saldo mensual, conmuta automáticamente a la siguiente sin interrumpir el proceso.
	Extracción profunda con Firecrawl: Utilizado para raspar páginas complejas y convertirlas a formato Markdown limpio y procesable por el LLM.
	Fallback nativo con DuckDuckGo: Si todas las APIs de pago fallan o no hay conexión con ellas, un scraper ligero basado en peticiones HTTP seguras consulta DuckDuckGo de forma 100% gratuita y sin límites de saldo.
Megafonía física en casa: El plugin TTS (/di y /habla)
Uno de los detalles más prácticos del proyecto fue aprovechar los altavoces estéreo físicos del POCO X3 como un sistema de megafonía doméstica que puedo controlar en cualquier momento desde mi Telegram, esté donde esté.
A través de un plugin nativo para Hermes (plugins/megaphone), el sistema intercepta comandos que comiencen por /di &lt;mensaje&gt; o /habla &lt;mensaje&gt;. En lugar de pasar el mensaje por el LLM (lo que consumiría tokens y añadiría latencia), el plugin toma el control directo:
# El plugin eleva el volumen multimedia al 100% y sintetiza el texto
termux-volume music 15
termux-tts-speak -s MUSIC -l es-ES "Atención: la cena está servida en el comedor"
La respuesta es instantánea (menos de 300 milisegundos), con cero consumo de tokens y con la voz nativa en español del sistema de síntesis de Android resonando con total claridad en el salón.
5. Automatización: Crons de empleo y radar de chollos
Con el agente y el entorno listos, el servidor ejecuta una batería de tareas desatendidas que me informan a diario directamente a través de un canal privado de Telegram.
El escáner de empleo inteligente (cron_empleo.py)
El objetivo de este script es realizar un barrido diario a primera hora de la mañana por portales de empleo clave (InfoJobs, Indeed, Tecnoempleo, Trabajos.com, portales municipales locales y plataformas de empleo remoto en España). Para que una herramienta de este tipo sea realmente útil y no se convierta en spam molesto, resolvimos tres desafíos técnicos:
	Doble vertiente de búsqueda: El script rastrea tanto ofertas presenciales en la comarca (fábrica, producción, logística, comercio, administración) como vacantes 100% en remoto en toda España (desarrollo web frontend, WordPress, soporte técnico N1 y atención al cliente).
	Memoria persistente contra duplicados (seen_jobs.json): Cada vez que se detecta una oferta, se almacena un identificador hash de su URL en un archivo JSON en disco. Al día siguiente, el script ignora automáticamente las ofertas que ya fueron notificadas, mostrando con una etiqueta destacada únicamente las vacantes estrictamente nuevas de las últimas 24 horas.
	Curación editorial con DeepSeek: Los resultados en bruto se pasan a un prompt estructurado de DeepSeek. El modelo extrae el puesto, la empresa, la ubicación, si permite teletrabajo y la URL directa limpia, descartando puestos que exijan experiencia senior fuera de perfil.
El radar cazachollos (cron_chollos.py)
Este cron rastrea a mediodía foros especializados, canales de liquidaciones y plataformas de comercio electrónico en busca de ofertas agresivas en tecnología:
	Ofertas en consolas (Xbox Series X), códigos de suscripción a Game Pass y periféricos.
	Descuentos en hardware informático y ecosistema Apple (MacBook, iPad, AirPods).
	Detección de errores de precio y liquidaciones de inventario por descatalogación.
El LLM valida que la oferta contenga un precio final concreto y un descuento palpable frente a su PVP habitual, enviando la ficha lista para comprar con su enlace directo antes de que se agote el stock.
6. Servidor Multimedia DLNA y Dashboard Web
El tercer gran propósito del POCO X3 es servir como reproductor multimedia doméstico para una Smart TV Samsung sin tener que recurrir a suscripciones adicionales ni conectar memorias USB físicas al televisor.
DLNA nativo con MiniDLNA (Puerto 8200)
En lugar de instalar suites pesadas como Plex o Jellyfin (que requieren bases de datos densas e intentan transcodificar vídeo en tiempo real en la CPU del teléfono), instalamos MiniDLNA. Corre en Termux con un consumo ridículo de apenas 17 MB de memoria RAM y 0% de CPU en reposo. Al transmitir a la televisión, se limita a leer los datos de la memoria flash y enviarlos por la red Wi-Fi local mediante streaming directo.
En el televisor Samsung, basta con pulsar el botón Fuentes del mando a distancia para ver el icono POCO X3 Media Server con todas las carpetas organizadas.
El Dashboard Web estilo macOS / VisionOS (Puerto 8090)
Para gestionar la biblioteca de películas y series sin tocar la terminal, desarrollé un panel web interactivo accesible desde cualquier navegador en la red local (http://&lt;IP-DEL-MOVIL&gt;:8090):
	Telemetría en tiempo real (Bento Card): Muestra la temperatura exacta del teléfono con código de color, un ecualizador animado del estado del sistema, nivel de batería y gigas libres de almacenamiento flash.
	Cola de subidas Drag &amp; Drop: Puedes arrastrar múltiples archivos de vídeo desde el ordenador. El servidor HTTP (dashboard_server.py) escribe directamente a disco en bloques de 64 KB con control de timeouts y limpieza automática de parciales si se interrumpe la red, evitando archivos corruptos en la biblioteca.
	Carátulas HD automáticas (fetch_cover.py): Al completar la subida de un vídeo, un proceso en segundo plano consulta las APIs públicas de IMDb y TVMaze, localiza el póster oficial en alta definición y lo guarda junto al archivo para que aparezca tanto en la web como en la Smart TV.
La trampa de los archivos AVI y el "Botón Mágico"
Al conectar el sistema a la Smart TV Samsung nos encontramos con un obstáculo técnico muy común en los televisores modernos: el sistema operativo Tizen rechaza por hardware los archivos .avi codificados con vídeo MPEG-4 Parte 2 (DivX o Xvid antiguos), mostrando el frustrante mensaje de "Formato de archivo no compatible".
Forzar al procesador del móvil a transcodificar un archivo pesado de vídeo con ffmpeg habría provocado sobrecalentamiento, consumo excesivo de batería y varios minutos de espera con los ventiladores del chip al 100%. La solución arquitectónica fue mucho más limpia:
	Detección en el navegador: Si arrastras un archivo con extensión .avi al Dashboard web, el panel lo intercepta y muestra un modal explicativo.
	El Mac Helper local: Un microservicio ultraligero corre en el ordenador de trabajo como servicio de fondo (LaunchAgent de macOS), consumiendo 0% de CPU y solo 16 MB de RAM.
	Conversión con 1 clic: Al pulsar el botón [ 🪄 Convertir y Subir ] en la web, el ordenador convierte el vídeo a máxima velocidad mediante su procesador con ffmpeg nativo (pasándolo a contenedor .mp4, vídeo H.264 perfil Main 4.0 y audio AAC), comprueba la integridad por hash SHA-256 y lo transfiere automáticamente al POCO X3 con su carátula asociada.
7. Persistencia y despliegue continuo
Para asegurar que este servidor funcione de manera completamente desatendida durante meses, implementamos dos mecanismos fundamentales:
Auto-arranque tras reinicio (Termux:Boot)
Con el paquete termux-boot instalado, creamos el script en ~/.termux/boot/start-services.sh:
#!/data/data/com.termux/files/usr/bin/sh
termux-wake-lock
sshd
pm2 resurrect
Si por cualquier motivo el teléfono se reinicia, Termux arranca automáticamente en segundo plano, adquiere el wake-lock para no dormirse, inicia el servidor SSH y resucita mediante PM2 el trío de servicios: el agente Hermes, el servidor DLNA y el panel web multimedia.
Flujo de despliegue sincronizado (deploy.sh)
Para no editar código directamente en la pequeña pantalla táctil del móvil, el desarrollo se realiza en el ordenador y se sincroniza al teléfono mediante un script de despliegue con rsync por SSH:
./deploy.sh
El script aplica una separación estricta: sincroniza únicamente el código fuente de los scripts, plugins y configuraciones del repositorio, pero respeta y nunca sobrescribe los datos vivos del móvil (las variables de entorno locales en .env, los archivos de memoria de crons como seen_jobs.json o las bases de datos de miniDLNA).
Conclusión: Tecnología circular y soberanía digital
Dar una segunda vida a un teléfono móvil que parecía inservible no es solo un ejercicio gratificante de bricolaje tecnológico: es una reivindicación del potencial de la informática doméstica. Por cero euros de gasto recurrente y con un consumo eléctrico prácticamente imperceptible, disponemos de un asistente de inteligencia artificial siempre accesible, un rastreador diario de oportunidades laborales y ofertas, y un centro multimedia familiar de alto rendimiento.
Si tienes un smartphone con procesador decente olvidado en un cajón, te animo a desempolvarlo e intentarlo. Tienes toda la estructura de carpetas, scripts de automatización e instrucciones detalladas listas para clonar en el repositorio oficial de GitHub: github.com/moisesvalero/poco-x3-hermes-server.