Volver
Imagen publicada en Docker Hub

go-data

Dashboard de monitoreo de servidores tipo Netdata, minimalista, en un solo binario Go

Go Go Docker Docker JavaScript JavaScript

Qué es

Un solo binario en Go que expone una API JSON y sirve un dashboard web estático, sin dependencias obligatorias: sin base de datos, sin agentes externos, sin build de JS. Pensado para levantar en un VPS o homelab con un simple docker compose up -d y tener visibilidad inmediata del servidor.

Todo es opt-in: si no se monta el socket de Docker, /var/log o /proc del host, esas features simplemente no muestran datos en vez de romper la aplicación.

Highlights

  • Métricas de CPU, RAM, disco, red, temperatura, contenedores Docker, intentos de login SSH y conexiones entrantes.
  • Frontend estático (HTML/CSS/JS) servido directo por el binario, sin framework ni paso de build.
  • Persistencia de métricas en memoria por defecto (ventana corta), con InfluxDB opcional para historial más largo.
  • Basic Auth opcional para proteger el dashboard y la API.
  • Configuración 100% por variables de entorno — nada que editar en archivos para prender o apagar features.

Arquitectura

  • Collectors propios (sin dependencias externas) que leen /proc, /sys, logs de auth y el socket de Docker.
  • Módulo de seguridad que parsea el auth log para detectar intentos de SSH y nuevas conexiones entrantes por puerto.
  • Umbrales de alerta configurables para CPU, RAM, disco, iowait/steal y temperatura.
  • Capa de storage intercambiable: memoria, InfluxDB, o ambas combinadas.
  • Empaquetado como imagen Docker multi-stage con binario estático, más un docker-compose.yml con InfluxDB como servicio opcional.

Cómo correrlo

docker-compose.yml (con InfluxDB)
services:
  app:
    image: gonzxa/go-data:latest
    ports:
      - "19245:9000"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /var/log:/var/log:ro
      - /proc:/hostproc:ro
      - app-data:/app/data
    environment:
      - USE_INFLUX=true
      - INFLUX_URL=http://influx:8086
      - INFLUX_TOKEN=${INFLUXDB_ADMIN_TOKEN}
      - INFLUX_ORG=${INFLUXDB_ORG}
      - INFLUX_BUCKET=${INFLUXDB_BUCKET}
      - DOCKER_ENABLED=true
      - SSH_WATCH_ENABLED=true
      - CONN_WATCH_ENABLED=true
      - AUTH_ENABLED=true
      - AUTH_USER=${AUTH_USER}
      - AUTH_PASSWORD=${AUTH_PASSWORD}
    depends_on:
      - influx

  influx:
    image: influxdb:2.7
    volumes:
      - influx-data:/var/lib/influxdb2
      - influx-config:/etc/influxdb2
    environment:
      - DOCKER_INFLUXDB_INIT_MODE=setup
      - DOCKER_INFLUXDB_INIT_USERNAME=${INFLUXDB_USERNAME}
      - DOCKER_INFLUXDB_INIT_PASSWORD=${INFLUXDB_PASSWORD}
      - DOCKER_INFLUXDB_INIT_ORG=${INFLUXDB_ORG}
      - DOCKER_INFLUXDB_INIT_BUCKET=${INFLUXDB_BUCKET}
      - DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=${INFLUXDB_ADMIN_TOKEN}

volumes:
  app-data:
  influx-data:
  influx-config:
Levantar el stack
docker compose up -d

Variables de entorno

VariableDefaultUso
USE_INFLUXfalseHabilita persistencia de métricas en InfluxDB en vez de solo memoria.
DOCKER_ENABLEDfalseHabilita el collector de containers Docker (requiere montar el socket).
SSH_WATCH_ENABLEDfalseHabilita el parseo del auth log para intentos de login SSH.
CONN_WATCH_ENABLEDfalseHabilita la detección de conexiones entrantes nuevas por puerto.
AUTH_ENABLEDfalseProtege el dashboard y la API con Basic Auth.