Saltar al contenido

Hostra Companion

← Volver a proyectos Imagen del proyecto Hostra Companion
Flutter Dart

El problema

El dashboard de Hostra vive en la red de tu casa a propósito: es HTTP sencillo y solo se abre desde ahí. Eso deja un hueco cuando no estás en casa y algo falla en el servidor.

La idea

Hostra Companion lleva el dashboard al bolsillo: muestra lo que hace tu servidor, te dice con palabras claras cuando algo está mal y, solo si lo permites, te deja actuar: reiniciar un servicio, pausar un contenedor, liberar espacio o abrir una terminal. Es una app para un solo dueño y su propio servidor: no hay cuenta, ni servicio en la nube, ni descarga ya compilada.

Qué hace

  • Resumen: salud, CPU, memoria, almacenamiento, red, sensores, servicios favoritos y las alertas más recientes.
  • Servicios de systemd con búsqueda y filtros, y detalle con estado, memoria y registro; si lo permites, iniciarlos, detenerlos o reiniciarlos.
  • Contenedores de Docker: reiniciar, pausar, reanudar o detener, con su imagen, tiempo activo, memoria y salud.
  • Almacenamiento con historial de uso, análisis del disco y una guía para liberar espacio; red y puertos, con quién es dueño de cada puerto.
  • Alertas con la evidencia, filtros por gravedad e historial, y notificaciones en el teléfono.
  • Una terminal real en el servidor, protegida con tu huella o el bloqueo de pantalla.
  • Administración desde el teléfono (dispositivos, política de control, revisiones de configuración y registro de actividad), apagada por defecto.

Cómo está hecho

Está hecha con Flutter y Dart para Android. Nunca habla directo con el servidor por internet: el teléfono llama a un nombre público en Cloudflare, Cloudflare revisa el certificado de cliente del teléfono (TLS mutuo) y un Cloudflare Tunnel lleva la petición al servicio de Hostra, que solo escucha en la propia máquina.

Las notificaciones pasan por Firebase de Google, en un proyecto tuyo. Google puede leer el título y el detalle de cada alerta en tránsito, y la app lo explica antes de activarlas.

Decisiones

  • Dos cerraduras: un certificado de cliente (Cloudflare) y un token de dispositivo que solo existe después de emparejar el teléfono con un código de un solo uso. Quitar un teléfono en el dashboard cierra su sesión en segundos, incluso con una terminal abierta.
  • La llave del certificado se crea en el Android Keystore y no puede exportarse. Si borras los datos de la app o la desinstalas, la llave se borra y te registras de nuevo.
  • La app recuerda la identidad del servidor y se niega a conectarse si la dirección responde con otra.
  • Todo lo que cambia el servidor empieza apagado. Los dos interruptores del teléfono (administrar y terminal) solo se cambian desde el dashboard en tu red de casa, nunca desde el propio teléfono.
  • Cada acción se envía una sola vez y no se repite sola después de un resultado incierto; lo que se hizo y desde qué teléfono queda en Actividad reciente.
  • No hay descarga ya compilada a propósito: las notificaciones y la conexión segura dependen de tu proyecto de Firebase y de tu certificado, así que cada quien compila la suya.

Límites

  • Android 11 o superior, arm64 y servicios de Google Play. Un solo servidor emparejado por app.
  • Cada teléfono necesita su propio certificado y su propia huella en la regla de Cloudflare.
  • La terminal permite una sesión por teléfono y dos en total, termina tras 10 minutos sin actividad y a los 60 como máximo.
  • No hay versión web, ni app para iOS, ni ficha en una tienda.

Cómo instalarla

Hay dos caminos que llevan al mismo resultado: seguir la guía SETUP.md paso a paso, o abrir el repositorio con un asistente de código y pedirle que lea AGENTS.md. El asistente te guía, pregunta antes de tocar tu servidor, tu dominio o tu cuenta de Firebase y nunca pide tus secretos.

Estado actual

Versión 1.0.0, con el código público en GitHub bajo licencia MIT. Es la app complementaria de Hostra Dashboard.

¿Cómo contactarme?

Estoy disponible para nuevas oportunidades. ¡Hablemos!