Instala Graylog Open en Debian con Data Node
Esta guía ofrece instalación nativa en Debian 12 x86_64 y Docker Compose en Debian 12 o 13. La exposición pública, DNS, TLS y firewall siguen bajo control del administrador.
Elige la ruta soportada
Graylog usa MongoDB para metadatos y Graylog Data Node para gestionar el backend OpenSearch compatible. Data Node es la arquitectura recomendada; no instales OpenSearch 3 por separado.
- Nativa: solo Debian 12, x86_64 y AVX.
- Docker Compose: Debian 12 o 13 en x86_64 o ARM64, después de instalar Docker Engine y Compose.
- Usa al menos 4 GiB RAM, 2 vCPU y 20 GiB libres; 8 GiB, 4 vCPU y 50 GiB son una referencia práctica.
Ejecuta primero el pre-check
El pre-check verifica sistema, arquitectura, CPU, recursos, puertos, servicios existentes, vm.max_map_count y la imagen MongoDB fijada. Se detiene antes de cambiar el host ante una incompatibilidad.
curl -fsSL https://scripts.lrq.lat/graylog/v1.0.0/install.sh | sudo bashAbre el menú portátil. Elige Docker Compose en Debian 13 o ARM64.
curl -fsSL https://scripts.lrq.lat/graylog/v1.0.0/install.sh | sudo bash -s -- preflight --mode dockerEjecuta solo las verificaciones Docker sin crear la pila.
Instala con Docker Compose
Instala primero Docker Engine y el plugin Compose moderno. El instalador crea configuración restringida en /opt/lrqnet/graylog, usa volúmenes persistentes y fija cada imagen por digest OCI. La interfaz se enlaza a localhost por defecto.
curl -fsSL https://scripts.lrq.lat/graylog/v1.0.0/install.sh | sudo bash -s -- install --mode dockerEjecuta el pre-check, pide la contraseña inicial sin eco, genera el password secret compartido e inicia MongoDB, Data Node y Graylog.
ssh -L 9000:127.0.0.1:9000 admin@graylog-hostCrea un túnel SSH para abrir http://127.0.0.1:9000 localmente sin exponer el puerto 9000.
Instalación manual y segura con Docker Compose
Usa esta ruta auditable si no quieres ejecutar un instalador de una línea. Es el procedimiento manual para Debian 12 y 13 en x86_64 o ARM64. La interfaz inicial permanece privada y la guía no configura DNS, TLS ni firewall.
sudo sysctl -w vm.max_map_count=262144
printf 'vm.max_map_count=262144\n' | sudo tee /etc/sysctl.d/99-graylog.conf >/dev/null
sudo docker compose versionAplica el requisito de map-count en un archivo dedicado y confirma Compose moderno. No continúes con menos de 4 GiB RAM, dos vCPU o 20 GiB libres.
sudo install -d -m 0750 /opt/lrqnet/graylog
read -rsp 'Contraseña inicial del administrador Graylog: ' GRAYLOG_ADMIN_PASSWORD; printf '\n'
read -rsp 'Confirma la contraseña: ' GRAYLOG_ADMIN_PASSWORD_CONFIRM; printf '\n'
[ "$GRAYLOG_ADMIN_PASSWORD" = "$GRAYLOG_ADMIN_PASSWORD_CONFIRM" ] || { echo 'Las contraseñas no coinciden' >&2; exit 1; }
[ "${#GRAYLOG_ADMIN_PASSWORD}" -ge 12 ] || { echo 'Usa al menos 12 caracteres' >&2; exit 1; }
GRAYLOG_PASSWORD_SECRET="$(openssl rand -hex 48)"
GRAYLOG_ROOT_PASSWORD_SHA2="$(printf '%s' "$GRAYLOG_ADMIN_PASSWORD" | sha256sum | awk '{print $1}')"
unset GRAYLOG_ADMIN_PASSWORD GRAYLOG_ADMIN_PASSWORD_CONFIRMCrea el directorio restringido, solicita la contraseña sin eco, la valida localmente, genera el secreto compartido y deriva el SHA-256 requerido por Graylog. La contraseña no se guarda en el historial ni en el archivo Compose.
services:
mongodb:
image: mongo:8.0.16@sha256:4b58ebcb1dc7a7b4e84cd8ce9098d48764ae4478876898ff9551acf2ac4a6a6d
restart: unless-stopped
volumes: [mongodb-data:/data/db]
datanode:
image: graylog/graylog-datanode:7.1.6-1@sha256:4867cd8ad09ee7a129c0898fe326b0b638928d984789072eb3640fef42fccf5d
restart: unless-stopped
depends_on: [mongodb]
environment:
GRAYLOG_DATANODE_PASSWORD_SECRET: ${GRAYLOG_PASSWORD_SECRET}
GRAYLOG_DATANODE_ROOT_PASSWORD_SHA2: ${GRAYLOG_ROOT_PASSWORD_SHA2}
GRAYLOG_DATANODE_MONGODB_URI: mongodb://mongodb:27017/graylog
GRAYLOG_DATANODE_OPENSEARCH_HEAP: 2g
volumes: [datanode-data:/var/lib/graylog-datanode]
graylog:
image: graylog/graylog:7.1.6-1@sha256:b9a4fd841e4c49c148043265f579554a3bdadf8137ff381b686c194ccb9a3365
restart: unless-stopped
depends_on: [mongodb, datanode]
environment:
GRAYLOG_PASSWORD_SECRET: ${GRAYLOG_PASSWORD_SECRET}
GRAYLOG_ROOT_PASSWORD_SHA2: ${GRAYLOG_ROOT_PASSWORD_SHA2}
GRAYLOG_MONGODB_URI: mongodb://mongodb:27017/graylog
GRAYLOG_HTTP_BIND_ADDRESS: 0.0.0.0:9000
GRAYLOG_HTTP_EXTERNAL_URI: http://127.0.0.1:9000/
ports: ["127.0.0.1:9000:9000/tcp"]
volumes: [graylog-data:/usr/share/graylog/data]
volumes:
mongodb-data:
datanode-data:
graylog-data:Guárdalo como /opt/lrqnet/graylog/docker-compose.yml después de revisar las versiones de imagen. El mapeo expone Graylog solo en localhost; MongoDB y Data Node no se publican en la red.
sudo install -m 0600 /dev/null /opt/lrqnet/graylog/.env
sudo sh -c 'printf "%s\n" "GRAYLOG_PASSWORD_SECRET=$1" "GRAYLOG_ROOT_PASSWORD_SHA2=$2" > /opt/lrqnet/graylog/.env' sh "$GRAYLOG_PASSWORD_SECRET" "$GRAYLOG_ROOT_PASSWORD_SHA2"
sudo chmod 0640 /opt/lrqnet/graylog/docker-compose.yml
sudo docker compose --project-directory /opt/lrqnet/graylog config
sudo docker compose --project-directory /opt/lrqnet/graylog up -dEscribe los dos secretos generados en un archivo legible solo por root, valida la configuración resuelta antes de cambiar el estado e inicia la pila persistente. Después ejecuta unset GRAYLOG_PASSWORD_SECRET GRAYLOG_ROOT_PASSWORD_SHA2.
Instalación nativa en Debian 12 x86_64
Úsala solo si la VM expone AVX. El instalador bloquea Debian 13, ARM64 y CPU sin AVX en lugar de usar un repositorio MongoDB no soportado. En Proxmox, revisa el impacto de CPU type host, reinicia la VM y verifica la flag de nuevo.
grep -w avx /proc/cpuinfo
curl -fsSL https://scripts.lrq.lat/graylog/v1.0.0/install.sh | sudo bash -s -- install --mode nativeConfirma AVX e instala MongoDB 8.0, Graylog Data Node y Graylog Open desde repositorios soportados de Debian 12.
Completa el preflight de Graylog
El primer inicio abre el flujo propio de preflight. Usa localmente la credencial temporal emitida por Graylog, crea o importa la CA de Data Node y luego usa la contraseña administrativa elegida. No registres la credencial temporal en tickets, historial ni logs externos.
sudo docker compose --project-directory /opt/lrqnet/graylog psMuestra el estado de los contenedores. En instalación nativa, usa systemctl status mongod graylog-datanode graylog-server.
Validación, backup y mantenimiento
Mantén respaldo de los volúmenes y del .env restringido. Las actualizaciones deben ser deliberadas: revisa notas y compatibilidad antes de cambiar imágenes o paquetes.
sudo docker compose --project-directory /opt/lrqnet/graylog ps
sudo docker compose --project-directory /opt/lrqnet/graylog logs --tail=100 graylog datanodeComprueba contenedores y logs recientes. Revísalos localmente porque la primera ejecución puede contener una credencial temporal.
sudo docker compose --project-directory /opt/lrqnet/graylog downDetiene la pila sin eliminar volúmenes. No uses --volumes sin intención explícita de borrar datos.