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
- Ejecuta el binario:
./akena-watch(escucha en el puerto 8080). - Abre
http://servidor:8080— con la base de datos vacía te redirige a/setup. - El asistente te pide crear el administrador: usuario, contraseña (mínimo 8 caracteres), correo e ID de Telegram opcionales.
- 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:
| Variable | Default | Descripción |
|---|---|---|
AKENA_DATA_DIR | ./data | Directorio donde vive akena.db (persistencia) |
AKENA_BIND | 0.0.0.0 | Interfaz de escucha (127.0.0.1 detrás de un proxy) |
AKENA_PORT | PORT o 8080 | Puerto HTTP |
PORT | — | Convenció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
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
- Instala el binario y ejecútalo con
AKENA_BIND=127.0.0.1en el puerto 8080. - En CloudPanel crea un sitio tipo Reverse Proxy hacia
127.0.0.1:8080con tu dominio y SSL. - 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
Originde 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.