← Todos os posts

Observabilidade · · Leitura de 12 min

Instale Graylog Open no Debian com Data Node

Este guia oferece instalação nativa no Debian 12 x86_64 e Docker Compose no Debian 12 ou 13. Exposição pública, DNS, TLS e firewall continuam sob controle do administrador.

Escolha o caminho suportado

O Graylog usa MongoDB para metadados e Graylog Data Node para gerenciar o backend OpenSearch compatível. Data Node é a arquitetura recomendada; não instale OpenSearch 3 separado.

  • Nativo: apenas Debian 12, x86_64 e AVX.
  • Docker Compose: Debian 12 ou 13 em x86_64 ou ARM64, após instalar Docker Engine e Compose.
  • Use pelo menos 4 GiB RAM, 2 vCPU e 20 GiB livres; 8 GiB, 4 vCPU e 50 GiB são uma referência prática.

Execute primeiro o pré-check

O pré-check verifica sistema, arquitetura, CPU, recursos, portas, serviços existentes, vm.max_map_count e a imagem MongoDB fixada. Ele para antes de alterar o host quando encontrar incompatibilidade.

sh
curl -fsSL https://scripts.lrq.lat/graylog/v1.0.0/install.sh | sudo bash

Abre o menu interativo portátil. Escolha Docker Compose no Debian 13 ou ARM64.

sh
curl -fsSL https://scripts.lrq.lat/graylog/v1.0.0/install.sh | sudo bash -s -- preflight --mode docker

Executa apenas as verificações Docker, sem criar a stack.

Instale com Docker Compose

Instale antes Docker Engine e o plugin Compose moderno. O instalador cria configuração restrita em /opt/lrqnet/graylog, usa volumes persistentes e fixa cada imagem por digest OCI. A interface fica apenas em localhost por padrão.

sh
curl -fsSL https://scripts.lrq.lat/graylog/v1.0.0/install.sh | sudo bash -s -- install --mode docker

Executa o pré-check, pede a senha inicial sem eco, gera o password secret compartilhado e inicia MongoDB, Data Node e Graylog.

sh
ssh -L 9000:127.0.0.1:9000 admin@graylog-host

Cria túnel SSH para abrir http://127.0.0.1:9000 localmente sem expor a porta 9000 na rede.

Instalação manual e segura com Docker Compose

Use este caminho auditável quando não quiser executar um instalador de uma linha. É o procedimento manual para Debian 12 e 13 em x86_64 ou ARM64. A interface inicial fica privada e o guia deliberadamente não configura DNS, TLS ou regras de firewall.

sh
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 version

Aplica o requisito de map-count em um arquivo dedicado e confirma o Compose moderno. Não continue com menos de 4 GiB RAM, dois vCPUs ou 20 GiB livres.

sh
sudo install -d -m 0750 /opt/lrqnet/graylog
read -rsp 'Senha inicial do administrador Graylog: ' GRAYLOG_ADMIN_PASSWORD; printf '\n'
read -rsp 'Confirme a senha: ' GRAYLOG_ADMIN_PASSWORD_CONFIRM; printf '\n'
[ "$GRAYLOG_ADMIN_PASSWORD" = "$GRAYLOG_ADMIN_PASSWORD_CONFIRM" ] || { echo 'As senhas não coincidem' >&2; exit 1; }
[ "${#GRAYLOG_ADMIN_PASSWORD}" -ge 12 ] || { echo 'Use pelo 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_CONFIRM

Cria o diretório restrito, solicita a senha sem eco, valida localmente, gera o segredo compartilhado e deriva o SHA-256 exigido pelo Graylog. A senha não é gravada no histórico nem no arquivo Compose.

yaml
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:

Salve como /opt/lrqnet/graylog/docker-compose.yml depois de revisar as versões das imagens. O mapeamento expõe Graylog somente em localhost; MongoDB e Data Node não ficam publicados na rede.

sh
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 -d

Grava os dois segredos gerados em arquivo legível apenas por root, valida a configuração resolvida antes de mudar o estado e inicia a stack persistente. Ao final, execute unset GRAYLOG_PASSWORD_SECRET GRAYLOG_ROOT_PASSWORD_SHA2.

Instalação nativa no Debian 12 x86_64

Use apenas se a VM expuser AVX. O instalador bloqueia Debian 13, ARM64 e CPUs sem AVX em vez de usar repositório MongoDB não suportado. No Proxmox, avalie o impacto de CPU type host, reinicie a VM e confira a flag novamente.

sh
grep -w avx /proc/cpuinfo
curl -fsSL https://scripts.lrq.lat/graylog/v1.0.0/install.sh | sudo bash -s -- install --mode native

Confirma AVX no convidado e instala MongoDB 8.0, Graylog Data Node e Graylog Open pelos repositórios suportados do Debian 12.

Conclua o preflight do Graylog

O primeiro start abre o fluxo próprio de preflight. Use localmente a credencial temporária emitida pelo Graylog, crie ou importe a CA do Data Node e só então use a senha administrativa escolhida na instalação. Não registre a credencial temporária em tickets, histórico ou logs externos.

sh
sudo docker compose --project-directory /opt/lrqnet/graylog ps

Mostra o estado dos containers. Na instalação nativa, use systemctl status mongod graylog-datanode graylog-server.

Validação, backup e manutenção

Mantenha backup dos volumes e do .env restrito. Atualizações devem ser deliberadas: leia as notas do Graylog e a compatibilidade antes de mudar imagens ou pacotes.

sh
sudo docker compose --project-directory /opt/lrqnet/graylog ps
sudo docker compose --project-directory /opt/lrqnet/graylog logs --tail=100 graylog datanode

Confere containers e logs recentes. Revise-os localmente, pois a primeira execução pode conter credencial temporária.

sh
sudo docker compose --project-directory /opt/lrqnet/graylog down

Para a stack sem apagar volumes. Não use --volumes sem intenção explícita de apagar dados.

Script e release