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
| Pieza | Requisito |
|---|---|
| Sistema | Debian 13 (trixie), amd64. Sirve una VM o un contenedor LXC sin privilegios. |
| Recursos | 1 vCPU, 512 MB de RAM y 1 GB de disco para unos 100 equipos. |
| Base de datos | MariaDB 10.11 o posterior (Debian 13 trae la 11.8), en el mismo equipo o en otro. |
| Red | El 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é.
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
- El usuario del sistema
atalaya, sin shell ni contraseña, con el que corre el servicio. /etc/atalaya/atalaya.confcon la conexión a la base de datos y el puerto de la web, y/etc/atalaya/db.passwordcon la contraseña (legible solo por root y el servicio).- Un certificado TLS autofirmado en
/etc/atalaya/tls/a nombre del equipo. - La clave maestra
/etc/atalaya/master.key, con la que se cifran las contraseñas y tokens de los canales de aviso. - La CA interna de los agentes en
/etc/atalaya/ca/: firma el certificado de cada agente al darlo de alta y el del puerto de agentes (8443). - El servicio
atalayaen marcha y con arranque automático, si la conexión a MariaDB funciona. En el primer arranque el servidor crea sus tablas.
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
- Crea el contenedor sin privilegios a partir de la plantilla de Debian 13, con 1 vCPU, 512 MB de RAM y 4 GB de disco.
- Conéctalo al bridge de la LAN (por ejemplo
vmbr0) con una IP fija o reservada en el DHCP, para que el ping llegue a los equipos y la web tenga siempre la misma dirección. - Dentro del contenedor, sigue esta guía. Si la base de datos está en otro contenedor, usa el apartado «Instalación con MariaDB en otro equipo» con la IP de este.
- Activa el ping sin privilegios dentro del contenedor (apartado «Permisos para el ping»).
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íntoma | Causa probable y solución |
|---|---|
no se puede conectar con MariaDB | Usuario, 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: NO | Falta /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 443 | Otro 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 maestra | Falta /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 llega | Mira 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 PC | Un cortafuegos en el servidor de Atalaya o entre redes filtra ICMP; prueba ping desde el propio servidor. |