Akena Watch Siempre en Guardia

Documentación

Guía base de Akena Watch. La documentación completa y siempre actualizada vive en el README del repositorio; esta página es el punto de partida.

¿Qué es Akena Watch?

Es un monitor de disponibilidad (uptime checker) portable, inspirado en Uptime Kuma pero reimplementado desde cero en Go. Comprueba periódicamente tus sitios web, servicios TCP y registros DNS; guarda el historial de latencia y caídas en SQLite; y te avisa por Telegram, webhook o correo cuando algo deja de responder.

Su diferencia fundamental es la portabilidad: un solo binario estático con el frontend embebido. No necesitas Node.js, ni contenedores, ni instalar nada más. Funciona en cualquier Linux moderno, en CloudPanel 2 como sitio reverse-proxy, y dentro de Cloudflare Containers con el mismo ejecutable.

Requisitos

  • Linux x86_64 o ARM64 (también macOS Intel y Apple Silicon).
  • Sin dependencias de runtime: ni Node, ni Python, ni Java.
  • Espacio para la base de datos SQLite (unos pocos MB por año de historial típico).

Instalación

Opción A — Instalador automático

curl -sSL https://raw.githubusercontent.com/xic17/akena-watch/main/scripts/install.sh | sh

Descarga el binario de la última release para tu plataforma, verifica su checksum y lo instala en /usr/local/bin. Puedes elegir versión y destino con las variables VERSION y AKENA_INSTALL_DIR.

Opción B — Descarga manual

Descarga el binario correspondiente desde la sección de descargas o desde la página de releases, hazlo ejecutable y cópialo donde quieras:

# ejemplo para Linux x86_64
curl -sSL -o akena-watch \
  https://github.com/xic17/akena-watch/releases/latest/download/akena-watch-linux-amd64
chmod +x akena-watch
./akena-watch

Primer arranque

  1. Ejecuta el binario: ./akena-watch (escucha en el puerto 8080).
  2. Abre http://servidor:8080 — con la base de datos vacía te redirige a /setup.
  3. El asistente te pide crear el administrador: usuario, contraseña (mínimo 8 caracteres), correo e ID de Telegram opcionales.
  4. Listo: quedas autenticado en el dashboard. El asistente desaparece para siempre una vez existe el primer usuario.

Configuración

Todo se configura con variables de entorno:

VariableDefaultDescripción
AKENA_DATA_DIR./dataDirectorio donde vive akena.db (persistencia)
AKENA_BIND0.0.0.0Interfaz de escucha (127.0.0.1 detrás de un proxy)
AKENA_PORTPORT o 8080Puerto HTTP
PORTConvención PaaS, usado si AKENA_PORT no está definido
# ejemplos
AKENA_PORT=9000 ./akena-watch
AKENA_BIND=127.0.0.1 AKENA_PORT=8080 AKENA_DATA_DIR=/var/lib/akena ./akena-watch
ICMP: los checks de monitores usan TCP/DNS/HTTP (no requieren permisos especiales). La herramienta de ping puede usar ICMP, pero si el socket no está permitido (sin CAP_NET_RAW o sin root) cae automáticamente a TCP o avisa para que ejecutes con permisos.

Uso básico

Usuarios y roles

  • Administrador: ve y gestiona todo; crea usuarios.
  • Colaborador: tiene sus propios monitores y canales; puede ver los que el admin le asigne por grupos o de forma manual (acceso de solo vista). Solo puede borrar sus propios monitores.
  • Cada usuario tiene correo e ID de Telegram en su ficha, para recibir alertas.

Monitores

  • Tipos: HTTP (con método, headers, cuerpo JSON y timeout), TCP y DNS.
  • Se organizan en grupos para categorizarlos y asignar accesos.
  • Intervalo configurable y botón "Probar" inmediato.
  • Detalles por monitor: uptime 24h/7d/30d, percentil 95, eventos y gráficas.

Canales de alerta

  • Webhook: cuerpo JSON con variables estilo Uptime Kuma ({{name}}, {{status}}, {{latency}}, {{at}}…).
  • Telegram: bot + ID de chat.
  • SMTP: correo.
  • Cada canal tiene botón de prueba y pertenece a su usuario.

Página de estado pública

Cada usuario puede publicar una página de estado accesible por URL con slug (/status/mi-slug), actualizada en tiempo real por WebSocket, sin necesidad de iniciar sesión para verla.

Despliegue

Linux plano (systemd)

sudo useradd --system --home /opt/akena-watch --shell /usr/sbin/nologin akena
sudo mkdir -p /opt/akena-watch/data
sudo cp akena-watch /opt/akena-watch/
sudo cp deploy/akena-watch.service /etc/systemd/system/
sudo systemctl daemon-reload && sudo systemctl enable --now akena-watch

CloudPanel 2

  1. Instala el binario y ejecútalo con AKENA_BIND=127.0.0.1 en el puerto 8080.
  2. En CloudPanel crea un sitio tipo Reverse Proxy hacia 127.0.0.1:8080 con tu dominio y SSL.
  3. El proxy de CloudPanel soporta WebSockets, así que el tiempo real funciona sin pasos extra.

Cloudflare Containers

Se incluye un Dockerfile multi-stage y un worker de keep-alive (cron de 1 minuto) para evitar el escalado a cero. La persistencia se hace con tigrisfs (FUSE → R2): el mismo binario, mismo código, cero cambios en la aplicación. Todo el código específico de plataforma vive en deploy/cloudflare/.

Docker

docker build -t akena-watch -f deploy/Dockerfile .
docker run -d --name akena-watch -p 8080:8080 -v akena-data:/data akena-watch

Herramientas

En la sesión de Herramientas (separada de la de Monitores) hay pestañas con:

  • Ping: en tiempo real por WebSocket, con opción TCP/ICMP.
  • Whois: consulta de dominios.
  • DNS Lookup: resolución de registros.

Seguridad

  • Contraseñas hasheadas con bcrypt; sesiones con token aleatorio en cookie HttpOnly.
  • Protección CSRF: las peticiones de estado con Origin de otro host se rechazan.
  • La base de datos vive en el directorio que tú protejas (AKENA_DATA_DIR).

Documentación completa

El README del repositorio contiene la guía extendida: arquitectura, API, publicación de versiones, desarrollo, limitaciones conocidas y roadmap. Las releases siempre incluyen los binarios verificados con SHA256SUMS.