Mi servidor es un teléfono: convierte un Android de 199$ en un servidor doméstico
El mercado de DRAM se había vuelto “completamente estúpido.” El VPS barato se quedaba sin recursos cada vez que Chrome tenía trabajo real. Y el upgrade de CPU dedicada costaba más al mes de lo que merecía un navegador personal.
Así que el desarrollador de seg6.space hizo algo que suena ridículo y es cada vez más racional: rootearon un CMF Phone 1 que ya poseían y lo convirtieron en su servidor doméstico.
Ocho núcleos ARM. 8 GB de RAM. 128 GB de flash. Wi-Fi 6. Un módem 5G. Y una batería que se comporta como un mini UPS — todo ya pagado, todo guardado en un cajón.
Hoy ese teléfono ejecuta un navegador remoto (Surf + Chrome), un rastreador financiero personal, un servicio de compartir pantalla y varias apps web — sobreviviendo reinicios, desplegando desde Git y manteniéndose accesible cuando se mueve entre redes. El VPS ha desaparecido.
Aquí está la arquitectura completa, las lecciones ganadas a pulso y las advertencias honestas.
La primera mala idea: reemplazar Android
El camino más limpio parecía flashear una distribución Linux real. El CMF Phone 1 tiene un port de postmarketOS — y su página de dispositivo tiene suficientes cajas verdes para volver optimista a una persona imprudente.
El autor fue esa persona. Lo que pasó por alto: todo lo marcado como roto. Wi-Fi, Bluetooth, aceleración de hardware — las cosas que hacen útil a un teléfono como servidor. El resultado fue una pantalla de bienvenida, una pantalla negra, y ni servidor ni teléfono. Recuperar el Nothing OS stock requirió una VM de Windows en QEMU, peleas con drivers MediaTek, y finalmente una máquina Windows física.
Lección aprendida: Android ya tiene drivers funcionales para cada pieza de este hardware — Wi-Fi, gestión de energía, batería, GPU, módem, cada detalle del vendor. Tirar eso por un userspace convencional fue el trade equivocado.
“No necesitaba que el teléfono se volviera una máquina Linux normal. Necesitaba que ejecutara aplicaciones Linux de forma fiable mientras Android seguía haciendo el trabajo específico de hardware que se le da bien.”
Termux es el sistema operativo host
El segundo intento mantuvo el Android stock e hizo de Termux el entorno host. Proporciona OpenSSH, runit (supervisión de servicios), Caddy, Cloudflared, gestión de paquetes y “tooling Unix suficientemente normal.”
La arquitectura tiene dos capas:
| Capa | Responsabilidad | Piezas |
|---|---|---|
| Host Android / Termux | hardware, red, ingress, supervisión | runit, Tailscale, Caddy, Cloudflared, DDNS, dashboard de ops |
| Residentes Linux rooteados | compatibilidad de aplicaciones + cargas | Surf/Chrome, Finanzas, Screen Share, apps varias |
Termux no es una VM — sus procesos corren contra el kernel Linux de Android, pero su userspace basado en Bionic difiere lo suficiente de Debian como para que las imágenes Linux existentes no entren directamente. Esa división resultó ser una ventaja: Termux se queda como el pequeño plano de control mientras cada aplicación trae el filesystem que espera.
Los servicios están supervisados por runit. La cadena de recuperación es lo que importa:
Android arranca → VPN Tailscale always-on → Termux:Boot → runit → servicios residentes → health checks
El teléfono puede reiniciarse sin que nadie lo note.
La segunda mala idea: PRoot
La mayoría de aplicaciones venían como imágenes OCI Linux ARM64, y proot-distro las hizo correr bajo Debian sin modificación. PRoot intercepta operaciones de filesystem y procesos en userspace — sin root, sin kernel especial. Los servicios web ordinarios funcionaron bien.
La carga del navegador Surf fue la excepción. Iniciar procesos, abrir librerías, recorrer paths, leer perfiles, mover datos de captura — todo cruzaba la capa de traducción de PRoot. Había CPU disponible; Chrome simplemente no podía alcanzarla eficientemente.
La solución: rootear el teléfono — no para reemplazar Android, sino para montar el filesystem Debian correctamente y entrar con un chroot real. Mismo ciclo de vida (runit desde Termux), misma config, mismos datos — pero syscalls nativos contra el kernel de Android en lugar del overhead ptrace de PRoot.
“¡La mejora no fue sutil!”
Un helper root crea un mount namespace privado, enlaza los paths necesarios, entra con chroot, baja privilegios e inicia el entrypoint de la imagen. Ni Docker ni un compilador necesitan existir en el teléfono.
Infraestructura, no un montón de historial de shell
Nada de servidor mascota ensamblado con comandos que olvidarías en una semana. Todo el host es estado gestionado por Ansible en un repo privado:
release/imagen OCI → digest fijado en Git → Ansible vía SSH → archivos versionados → symlink atómico "current" → servicio runit → health checks
- Releases fijadas por digest/checksum, instaladas tras un symlink atómico
current; un checksum o health check fallido detiene el deploy; rollback = revertir el pin. - Secretos viven cifrados en Ansible Vault. La contraseña del vault se deriva pidiendo al agente SSH de 1Password del workstation que firme un challenge fijo — la clave privada nunca toca el teléfono. Los valores de runtime se renderizan en el almacenamiento privado de Termux en el deploy.
- La recuperación ante desastres es la recompensa real: si el teléfono muere, otro ARM64 rootable puede llevarse al mismo estado desde Git — sin reconstruir historial de shell.
Llevando tráfico a un teléfono tras el internet doméstico
Sin IP estática, sin reglas de entrada, y el teléfono debe seguir siendo teléfono — desenchúfalo, llévalo a otro sitio, y el servidor te sigue.
- Cloudflare Tunnel para apps HTTP: cloudflared hace una conexión saliente; Cloudflare enruta cada hostname a través de ella hasta Caddy en localhost. Sin reglas de router. El túnel se reconecta en cualquier red.
- Tailscale para administración: dirección privada estable,
ssh cmfdesde cualquier punto de la tailnet. - El caso especial de Surf: es sensible a latencia y fija TLS (cliente iPad antiguo). En casa: Cloudflare DDNS + un puerto reenviado. Para roaming: el flujo TLS completo de Surf va envuelto en un WebSocket ordinario — Cloudflare reenvía el WebSocket mientras la conexión autenticada sigue cifrada extremo a extremo dentro.
La batería del teléfono cubre el traslado. Los servicios públicos no saben qué Wi-Fi hay debajo.
Qué corre realmente
- Surf — la carga exigente: Chromium moderno en iPhones/iPads antiguos, transmitiendo video/audio H.264 mientras recibe input táctil y de teclado. Por qué al autor le importaba el overhead de syscalls.
- Rastreador financiero personal — con SQLite, copias de seguridad automatizadas fuera del dispositivo y ruta de restauración probada.
- Servicio de compartir pantalla + un puñado de apps web pequeñas.
- Dashboard de observabilidad — un servicio nativo que recoge CPU (los 8 núcleos), memoria, almacenamiento, uptime, batería, temperatura y cada residente de runit, servido como UI Vue embebida accesible solo vía LAN/tailnet. La vista de logs descubre los directorios de servicio en runtime — añadir un residente no requiere enseñar su nombre a la UI.
¿Deberías hacer esto?
El caso honesto a favor: si tienes un teléfono ARM64 moderno y rootable sin usar, esto es mucho menos ridículo de lo que suena. Hardware silencioso, bajo consumo, flash storage, Wi-Fi, pantalla integrada para recuperación, una batería que actúa como mini UPS. El Android stock soporta el hardware; Termux + chroot rooteado ejecuta una cantidad sorprendente de software Linux normal. Cuando la alternativa es pagar indefinidamente por un VPS lento o caro, es una opción genuinamente útil — no solo un truco.
Las advertencias honestas:
- Las copias de seguridad automatizadas fuera del dispositivo no son negociables. Nunca confíes datos irreemplazables a un solo teléfono.
- Rootear expande el perímetro de confianza. Chroot es un entorno de compatibilidad, no aislamiento de cargas hostiles — los residentes comparten kernel, pila de red y UIDs del sistema de Android.
- La trampa del montaje. Aviso de la comunidad: borrar archivos del contenedor (
rm -rf) mientras los directorios de Android siguen montados puede borrar las particiones físicas del teléfono. Desmonta antes de limpiar. - Sin aceleración GPU. Los puentes VirGL/Vulkan produjeron páginas corruptas y peor rendimiento — el renderizado por software ganó el día.
- Android sigue siendo Android. Periódicamente quiere “optimizar” tu servidor, y una futura actualización puede crear una sorpresa nueva.
Conclusión
“Es silencioso, con respaldo de batería, suficientemente rápido, accesible desde cualquier sitio, reproducible desde Git, y ya está en mi casa. Empecé esto intentando ahorrar en un VPS. Terminé con un teléfono rooteado ejecutando mi infraestructura personal — y de alguna manera es mucho más satisfactorio.”
El patrón teléfono-como-servidor se sitúa en la intersección de varias tendencias de 2026: precios de DRAM que hacen mala idea el hardware nuevo, costes de VPS que no dejan de subir, teléfonos dramáticamente sobreaprovisionados para su trabajo diario, y tooling (Termux, proot-distro, Tailscale, Cloudflare Tunnel) lo bastante maduro para hacerlo funcionar.
Las lecciones de infraestructura se transfieren más allá de los teléfonos: los syscalls nativos vencen a la traducción en userspace, los túneles solo-salientes vencen al port forwarding, y un host gestionado por Git vence a un servidor mascota siempre. El teléfono es solo el lugar más satisfactorio donde aplicarlas.
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!