Guía de instalación del servidor

Esta guía instala el servidor de Atalaya en Debian 13 a partir de su paquete .deb, sin Docker. El servidor guarda su configuración en MariaDB, vigila los equipos con ping y comprobaciones TCP, HTTP(S) y DNS, recibe las métricas de los agentes Linux y avisa por ntfy, Telegram o correo cuando algo falla. El agente se instala desde la propia web (ver Agentes Linux y métricas).

Requisitos

PiezaRequisito
SistemaDebian 13 (trixie), amd64. Sirve una VM o un contenedor LXC sin privilegios.
Recursos1 vCPU, 512 MB de RAM y 1 GB de disco para unos 100 equipos.
Base de datosMariaDB 10.11 o posterior (Debian 13 trae la 11.8), en el mismo equipo o en otro.
RedEl puerto 443/TCP accesible desde los navegadores que vayan a usar la web, y el 8443/TCP desde los equipos con agente. Salida a internet hacia ntfy, Telegram o el servidor de correo si usas esos canales de aviso. Para administrarlo desde internet, ver Publicar Atalaya en internet.

el paquete instala sus dependencias (libuv, libwebsockets, libcurl, c-ares, la base de fabricantes ieee-data, el conector de MariaDB, OpenSSL, cJSON, argon2, libssh y libyaml) desde los repositorios de Debian.

Instalación con MariaDB en el mismo equipo

Es lo más sencillo: el instalador crea la base de datos y su usuario.

sudo apt install mariadb-server
sudo apt install ./atalaya_0.9.0_amd64.deb

El instalador pregunta el servidor de MariaDB (deja localhost) y si debe crear la base de datos (contesta que sí). La contraseña puedes dejarla vacía: se genera una aleatoria. Al terminar, Atalaya queda en marcha y con arranque automático.

Instalación con MariaDB en otro equipo

Primero, en el servidor de MariaDB, crea la base de datos y un usuario limitado a la IP del servidor de Atalaya y obligado a usar TLS. En este ejemplo el servidor de Atalaya es 192.168.1.30 y la base de datos se llama atalaya_qa (cambia la contraseña por una larga y aleatoria, como la que da openssl rand -base64 24):

CREATE DATABASE atalaya_qa CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'atalaya_qa'@'192.168.1.30' IDENTIFIED BY 'CONTRASEÑA' REQUIRE SSL;
GRANT ALL PRIVILEGES ON atalaya_qa.* TO 'atalaya_qa'@'192.168.1.30';

Comprueba también que MariaDB escucha en la red (bind-address en /etc/mysql/mariadb.conf.d/50-server.cnf) y que tiene TLS activo. Desde la versión 11.4, MariaDB genera un certificado propio al arrancar si no tiene uno configurado; con versiones anteriores hay que configurar ssl_cert y ssl_key. Puedes comprobarlo con SHOW VARIABLES LIKE 'have_ssl';.

Después, en el servidor de Atalaya:

sudo apt install ./atalaya_0.9.0_amd64.deb

y contesta a las preguntas del instalador con el servidor de MariaDB, el nombre de la base de datos, el usuario y su contraseña. El instalador prueba la conexión; si funciona, deja Atalaya en marcha, y si no, te dice por qué.

La conexión con un MariaDB remoto va siempre cifrada, pero no se comprueba su certificado. Para comprobarlo, copia el certificado de su CA al servidor de Atalaya y añade tls = required y tls_ca = /ruta/ca.pem a la sección [database] de /etc/atalaya/atalaya.conf (las actualizaciones respetan el fichero; dpkg-reconfigure lo vuelve a escribir).

Qué deja hecho el instalador

No hace falta editar ningún fichero: todo lo demás se configura desde la web, en el menú Ajustes. Si más adelante cambias de servidor de base de datos o de puerto, vuelve a lanzar las preguntas con:

sudo dpkg-reconfigure atalaya

Para instalar sin preguntas (por ejemplo, con un script), da las respuestas antes con debconf-set-selections:

echo "atalaya atalaya/db_host string 192.168.1.40" | sudo debconf-set-selections
echo "atalaya atalaya/db_name string atalaya_qa" | sudo debconf-set-selections
echo "atalaya atalaya/db_user string atalaya_qa" | sudo debconf-set-selections
echo "atalaya atalaya/db_password password CONTRASEÑA" | sudo debconf-set-selections
sudo DEBIAN_FRONTEND=noninteractive apt install ./atalaya_0.9.0_amd64.deb

Crear el administrador

Abre la web (siguiente apartado). Mientras no haya ningún usuario, en lugar de la pantalla de entrada aparece Bienvenido a Atalaya, donde se crea el administrador. Después, los demás usuarios se crean desde Ajustes → Usuarios.

Como cualquiera que llegue a la web antes que tú podría crearlo, hazlo justo después de instalar.

Si alguna vez pierdes la contraseña del único administrador, se puede cambiar desde el servidor:

sudo -u atalaya atalaya user-add admin

Entrar en la web

Abre https://NOMBRE-O-IP-DEL-SERVIDOR/ (o el puerto que elegiste al instalar). Como el certificado es autofirmado, el navegador avisará la primera vez; puedes aceptarlo o sustituirlo por uno propio (siguiente apartado).

Para comprobar que el servicio responde sin navegador:

curl -k https://localhost/api/v1/health

Usar un certificado propio

Sustituye los ficheros de /etc/atalaya/tls/ (o cambia tls_cert y tls_key en la configuración) por tu certificado y su clave, y reinicia:

sudo install -m 0644 -o root -g root mi-cert.pem /etc/atalaya/tls/atalaya.crt
sudo install -m 0640 -o root -g atalaya mi-clave.pem /etc/atalaya/tls/atalaya.key
sudo systemctl restart atalaya

El certificado puede incluir la cadena intermedia a continuación del propio. La renovación automática con ACME llegará en una fase posterior.

Permisos para el ping

El servidor no corre como root. Para hacer ping usa los sockets ICMP sin privilegios de Linux, que se permiten a los grupos incluidos en net.ipv4.ping_group_range. El instalador lo comprueba y, si hace falta, lo activa en /etc/sysctl.d/60-atalaya-ping.conf; también en un contenedor LXC sin privilegios, donde solo admite el rango 0 65535.

Si en la web aparece «sin permiso para ICMP», comprueba el valor con cat /proc/sys/net/ipv4/ping_group_range: debe incluir el grupo atalaya (getent group atalaya).

Ajustes

En Ajustes (solo administradores) se cambian sin reiniciar: cada cuánto se repite el aviso de una alerta, la dirección de la web que llevan los avisos, la zona horaria de los horarios, el historial que se guarda, los valores del ping de los equipos nuevos, la duración de la sesión y el detalle del registro. Lo explica la ayuda de Ajustes.

Instalar en un contenedor LXC de Proxmox

Actualizar

sudo apt install ./atalaya_NUEVA_amd64.deb

El paquete conserva la configuración, reinicia el servicio y este aplica las migraciones pendientes. No vuelve a hacer preguntas. Antes de actualizar producción, haz una copia de la base de datos (siguiente apartado) y, en Proxmox, un snapshot del contenedor, para poder volver atrás.

Copia de seguridad

Todo el estado está en la base de datos y en /etc/atalaya. Guarda siempre la clave maestra junto con la copia de la base de datos: sin ella, los canales de aviso restaurados no se pueden leer y hay que volver a escribir sus contraseñas. Guarda también /etc/atalaya/ca: si se pierde, hay que volver a dar de alta todos los agentes.

mariadb-dump --single-transaction atalaya | gzip > atalaya-$(date +%F).sql.gz
sudo tar czf atalaya-etc-$(date +%F).tar.gz /etc/atalaya

Desinstalar

sudo apt remove atalaya   # conserva /etc/atalaya
sudo apt purge atalaya    # borra también /etc/atalaya, incluidas la clave maestra y la CA de los agentes

La base de datos no se toca en ningún caso; bórrala a mano si ya no la necesitas.

Problemas frecuentes

SíntomaCausa probable y solución
no se puede conectar con MariaDBUsuario, contraseña o host incorrectos, o el usuario de MariaDB está limitado a otra IP. Prueba con mariadb -h HOST -u USUARIO -p desde el servidor de Atalaya y corrige las respuestas con sudo dpkg-reconfigure atalaya.
Access denied ... using password: NOFalta /etc/atalaya/db.password o no es legible por el grupo atalaya; sudo dpkg-reconfigure atalaya lo vuelve a escribir.
no se pudo iniciar el servidor web en el puerto 443Otro servicio ocupa el puerto, o la clave TLS no es legible por el grupo atalaya.
La web muestra «sin permiso para ICMP»Revisa el apartado «Permisos para el ping».
La página de canales dice que no hay clave maestraFalta /etc/atalaya/master.key o no es legible por el grupo atalaya. Créala como root con openssl rand -base64 32 > /etc/atalaya/master.key, ponle permisos 0640 y grupo atalaya, y reinicia.
Un aviso de prueba no llegaMira el error en la columna «Último envío» de Canales; suele ser falta de salida a internet o un token mal copiado.
Un equipo sale como caído pero responde a ping desde tu PCUn cortafuegos en el servidor de Atalaya o entre redes filtra ICMP; prueba ping desde el propio servidor.