NETTOOLS – Monitor de red y test de velocidad autoalojado

NETTOOLS

Docker • Manual • Features • Screenshots • API

Docker Pulls License Python FastAPI

NetTools es una aplicación web autoalojada para monitorizar tu red local y medir la velocidad de tu conexión a Internet. Ofrece una interfaz moderna y adaptable con tres módulos principales: Net Speed (pruebas de velocidad), Net Alert (descubrimiento de dispositivos) y Net Check (herramientas de diagnóstico).

Funciones principales

  • Pruebas de velocidad automáticas y manuales con Ookla Speedtest CLI
  • Descubrimiento de dispositivos en la red local con arp-scan y nmap
  • Herramientas de diagnóstico: PingTraceroute y NSLookup
  • Notificaciones por Telegram cuando se detectan nuevos dispositivos
  • Gráficos interactivos con velocidad, latencia e historial de dispositivos
  • Temas claro, oscuro y automático
  • Colores de acento personalizables
  • Zona horaria configurable
  • API REST completa
  • Sin dependencias en la nube: todo se ejecuta en tu servidor

Funcionalidades

Monitor de red y test de velocidad autoalojado.

Net Speed

  • Prueba de velocidad manual con selección de servidor
  • Pruebas automáticas programadas (15 min – 24 h)
  • Gráficos de historial de velocidad (descarga/subida)
  • Gráficos de latencia (ping/jitter)
  • Promedios horarios de velocidad
  • Tabla de pruebas recientes
  • Estadísticas: mejor descarga, mejor subida, mejor ping, total de pruebas

Net Alert

  • Escaneo automático de red local (arp-scan + nmap)
  • Detección de nuevos dispositivos
  • Identificación del fabricante por dirección MAC
  • Edición de dispositivos: nombre, tipo, ubicación, descripción
  • Etiquetado IP estática o DHCP
  • Filtros: todos, en línea, fuera de línea, nuevos, guardados, manuales
  • Ordenar por nombre, IP, MAC, fabricante, ubicación, estado
  • Historial de dispositivos conectados (gráfico)
  • Notificaciones por Telegram para nuevos dispositivos
  • Ping rápido desde la tarjeta del dispositivo

Net Check

  • Ping: una IP o todos los dispositivos guardados
  • Traceroute: visualización de ruta con mapa de saltos y tabla detallada
  • NSLookup / DNS: consultas A, AAAA, MX, NS, TXT, CNAME, SOA, PTR, SRV, ANY con selector de servidor DNS

Configuración

  • Frecuencia de pruebas automáticas
  • Frecuencia de escaneo de red
  • Rango de red (CIDR)
  • Retención del historial
  • Zona horaria
  • Notificaciones de Telegram (token del bot + chat ID + prueba de conexión)
  • Personalización de colores (acento, fondo, descarga, subida)
  • Exportación de datos (JSON)
  • Limpieza de historial y dispositivos

Instalación con Docker

Hub Docker

Docker Run
docker run -d \
  --name nettools \
  --network host \
  -v nettools-data:/data \
  -e TZ=Europe/Madrid \
  -e NETTOOLS_PORT=8080 \
  -e NETTOOLS_BACKEND_PORT=8000 \
  --restart unless-stopped \
  mbraut/nettools:latest
Docker Compose
services:
  nettools:
    image: mbraut/nettools:latest
    container_name: nettools
    restart: unless-stopped
    network_mode: host
    volumes:
      - nettools-data:/data
    environment:
      - TZ=Europe/Madrid
      - NETTOOLS_PORT=8080         # Puerto de la interfaz web
      - NETTOOLS_BACKEND_PORT=8000 # Puerto interno del backend API

volumes:
  nettools-data:
    driver: local
docker compose up -d

Accede a http://tu-servidor:8080

Nota: network_mode: host es obligatorio para que arp-scan y nmap puedan descubrir dispositivos en tu red local. Sin él, las pruebas de velocidad y herramientas de diagnóstico funcionarán, pero el escaneo de red no detectará dispositivos.


Instalación Manual

Requisitos
  • Python 3.10+
  • Nginx
  • Herramientas de red: arp-scan, nmap, traceroute, dnsutils, iputils-ping, net-tools
  • (Recomendado) Ookla Speedtest CLI
Pasos
# 1. Clonar el repositorio
git clone https://github.com/Enoret/Nettools.git
cd Nettools

# 2. Instalar dependencias del sistema
sudo apt-get install -y arp-scan nmap iputils-ping net-tools traceroute dnsutils nginx

# 3. Instalar Ookla Speedtest CLI (recomendado)
# Ver: https://www.speedtest.net/apps/cli
# Si no se instala, se utilizará speedtest-cli (Python) como alternativa

# 4. Configurar backend
sudo mkdir -p /opt/nettools
sudo cp docker/backend/*.py /opt/nettools/
sudo cp docker/backend/requirements.txt /opt/nettools/
cd /opt/nettools
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

# 5. Configurar frontend
sudo cp -r Nettools/nettools/* /var/www/html/

# 6. Configurar Nginx
sudo cp docker/nginx/nginx.conf /etc/nginx/sites-available/nettools
sudo ln -sf /etc/nginx/sites-available/nettools /etc/nginx/sites-enabled/
sudo rm -f /etc/nginx/sites-enabled/default
sudo systemctl restart nginx

# 7. Crear servicio systemd
sudo tee /etc/systemd/system/nettools.service > /dev/null <<EOF
[Unit]
Description=Backend de NetTools
After=network.target

[Service]
Type=simple
WorkingDirectory=/opt/nettools
ExecStart=/opt/nettools/venv/bin/uvicorn main:app --host 0.0.0.0 --port 8000
Restart=always
RestartSec=5
Environment=NETTOOLS_DB_PATH=/data/nettools.db
Environment=PYTHONUNBUFFERED=1

[Install]
WantedBy=multi-user.target
EOF

sudo mkdir -p /data
sudo systemctl daemon-reload
sudo systemctl enable nettools
sudo systemctl start nettools

Accede a http://tu-servidor:8080


Actualización

Docker
docker pull mbraut/nettools:latest
docker compose down
docker compose up -d


Manual
cd Nettools
git pull
cp -r nettools/* /var/www/html/
cp docker/backend/*.py /opt/nettools/
systemctl restart nettools

Arquitectura

              NETTOOLS_PORT (por defecto 8080)
                        |
                    [ Nginx ]
                    /       \
              Estático      /api/*
            (Frontend)        |
                    [ Uvicorn :NETTOOLS_BACKEND_PORT ]
                           (FastAPI)
                              |
                       [ Base de datos SQLite ]
                        /data/nettools.db
ComponenteTecnología
FrontendHTML5, CSS3, JavaScript (Vanilla)
GráficosApexCharts
IconosRemix Icon
BackendPython 3.12, FastAPI, Uvicorn
Base de datosSQLite (modo WAL)
Prueba de velocidadOokla Speedtest CLI / speedtest-cli (alternativa)
Escaneo de redarp-scan, nmap, python-nmap
NotificacionesTelegram Bot API

SCREENSHOTS

Screenshot de NETSPEED
Screenshot de NETALERT
Screenshot de NETALERT
Screenshot de NETCHECK
Screenshot de AJUSTES

API

El backend expone una API REST accesible vía Nginx en /api/. El puerto del backend es configurable mediante NETTOOLS_BACKEND_PORT (por defecto: 8000).

(Las tablas de endpoints se mantienen igual, ya que son rutas técnicas.)


Configuración Telegram

  1. Crea un bot con @BotFather en Telegram
  2. Copia el Bot Token
  3. Obtén tu Chat ID (puedes usar @userinfobot)
  4. En NetTools > Settings > Telegram Notifications:
    • Activa Telegram
    • Pega el Bot Token y el Chat ID
    • Haz clic en “Send Test” para verificar
    • Guarda la configuración

Recibirás una notificación cada vez que se detecte un nuevo dispositivo en tu red.


Volumen de datos

RutaContenido
/data/nettools.dbBase de datos SQLite con pruebas, dispositivos y configuración

Para hacer una copia de seguridad, simplemente copia el archivo /data/nettools.db.


Requisitos del sistema

RecursoMínimo
CPU1 núcleo
RAM256 MB
Disco100 MB + base de datos
RedAcceso LAN para escaneo
SOLinux (Docker o instalación directa)

Compatible con amd64arm64 (Raspberry Pi 4/5) y armhf.


Licencia

Licencia MIT – ver LICENSE


Créditos

Desarrollado por https://bytebeat.es

NetTools – Monitor de red y test de velocidad autoalojado

Chat Support