Speedtest CLI es la versión de línea de comandos de Speedtest by Ookla. Mide la latencia, la velocidad de descarga y de subida y la pérdida de paquetes de tu servidor contra la red de servidores de Speedtest, sin necesidad de entorno gráfico. En este tutorial instalarás el cliente oficial en Ubuntu 24.04 (igual en Debian 12), ejecutarás una prueba, elegirás un servidor de prueba concreto y guardarás los resultados en un formato que puedas comparar más adelante.

Requisitos previos

Para seguir esta guía necesitas:

  • Un servidor con Ubuntu 24.04 LTS o Debian 12, x86_64 o arm64, por ejemplo un VPS o un servidor dedicado de CubePath.
  • Un usuario con privilegios sudo.
  • Salida a Internet por HTTPS (puerto 443) y por el puerto 8080, que usan los servidores de Speedtest.

Paso 1: Descargar Speedtest CLI

Ookla publica el cliente como un binario estático que funciona en cualquier distribución. Comprueba primero la arquitectura del servidor:

uname -m
x86_64

Descarga el archivo que corresponde a tu arquitectura desde la web oficial de Ookla. Para x86_64:

cd /tmp
curl -fsSLO https://install.speedtest.net/app/cli/ookla-speedtest-1.2.0-linux-x86_64.tgz

Si uname -m devolvió aarch64, descarga en su lugar ookla-speedtest-1.2.0-linux-aarch64.tgz desde la misma ruta. Consulta en https://www.speedtest.net/apps/cli si hay una versión más reciente y ajusta el nombre del archivo.

Paso 2: Instalar el binario

Extrae solo el ejecutable del archivo y cópialo a /usr/local/bin con permisos de ejecución:

tar -xzf ookla-speedtest-1.2.0-linux-x86_64.tgz speedtest
sudo install -m 0755 speedtest /usr/local/bin/speedtest

Comprueba que el comando está disponible:

speedtest --version
Speedtest by Ookla 1.2.0.84 ...

Puedes borrar los archivos descargados:

rm -f /tmp/ookla-speedtest-1.2.0-linux-x86_64.tgz /tmp/speedtest

Paso 3: Ejecutar la primera prueba

La primera vez, el cliente pide aceptar la licencia de Ookla y el aviso de privacidad (GDPR). Puedes aceptarlos directamente con estas opciones, que también sirven para usarlo en scripts:

speedtest --accept-license --accept-gdpr

La aceptación se guarda en ~/.config/ookla/, así que las siguientes veces basta con speedtest. La prueba tarda unos 20 a 30 segundos:

   Speedtest by Ookla

      Server: Adamo - Madrid (id: 1680)
         ISP: CubePath
Idle Latency:     8.92 ms   (jitter: 0.10ms, low: 8.82ms, high: 8.98ms)
    Download:   938.45 Mbps (data used: 1.1 GB)
                  9.01 ms   (jitter: 1.95ms, low: 8.86ms, high: 31.79ms)
      Upload:   937.72 Mbps (data used: 819.2 MB)
                 12.62 ms   (jitter: 0.43ms, low: 8.84ms, high: 13.52ms)
 Packet Loss:     0.0%
  Result URL: https://www.speedtest.net/result/c/068ae5b7-8013-41f3-a6c3-5c0b8be35aad

Cómo leer el resultado:

  • Server: el servidor de Speedtest contra el que se ha medido. El cliente elige por defecto uno cercano con baja latencia.
  • Idle Latency: la latencia con la conexión en reposo. Las dos líneas bajo Download y Upload son la latencia con la conexión cargada.
  • Download / Upload: el ancho de banda medido en cada sentido.
  • Packet Loss: el porcentaje de paquetes perdidos. En un servidor sano debería ser 0.0%.
  • Result URL: un enlace público al resultado, útil para compartirlo.

Paso 4: Elegir el servidor de prueba

El resultado depende mucho del servidor remoto: uno saturado o lejano da cifras bajas aunque tu servidor esté bien. Lista los servidores cercanos:

speedtest -L
Closest servers:

    ID  Name                           Location             Country
==============================================================================
  1680  Adamo                          Madrid               Spain
 14979  Orange Spain                   Madrid               Spain
 ...

Lanza la prueba contra uno concreto con su ID:

speedtest -s 14979

Repetir la medición contra dos o tres servidores distintos ayuda a distinguir un problema de tu servidor de uno del servidor remoto. Para ver por qué el cliente eligió un servidor en la prueba automática, añade --selection-details.

Paso 5: Guardar los resultados en JSON

Para comparar mediciones a lo largo del tiempo o procesarlas con otras herramientas, usa el formato JSON. -p no desactiva la barra de progreso:

speedtest -f json-pretty -p no

Extrae solo los valores que te interesan con jq (instálalo con sudo apt install jq). Los campos bandwidth están en bytes por segundo, así que se multiplican por 8 y se dividen entre 1.000.000 para obtener Mbps:

speedtest -f json -p no | jq '{ping: .ping.latency, down_mbps: (.download.bandwidth * 8 / 1000000), up_mbps: (.upload.bandwidth * 8 / 1000000), loss: .packetLoss}'
{
  "ping": 8.921,
  "down_mbps": 938.451,
  "up_mbps": 937.72,
  "loss": 0
}

Otros formatos disponibles con -f son csv, tsv, jsonl y human-readable (el predeterminado).

Solución de problemas

  • Cannot read from socket o Configuration - Couldn't resolve host name. El servidor no tiene salida a Internet o no resuelve DNS. Comprueba con ping -c 3 1.1.1.1 y getent hosts www.speedtest.net, y revisa las reglas de salida de tu cortafuegos.
  • Velocidades muy por debajo de lo contratado. Repite la prueba contra otros servidores (paso 4) y en otro momento del día. Comprueba también que ningún proceso está usando la red mientras mides, por ejemplo con sudo apt install iftop y sudo iftop.
  • speedtest: command not found. Revisa que /usr/local/bin/speedtest existe y es ejecutable. Si instalaste antes el paquete no oficial speedtest-cli, su comando es speedtest-cli y usa otras opciones.

Conclusión

Tienes el cliente oficial de Speedtest instalado y sabes medir contra servidores concretos y guardar los resultados en JSON. Si los resultados son bajos de forma persistente contra varios servidores, abre un ticket en el soporte de CubePath e incluye los enlaces Result URL de las pruebas para que podamos revisarlo. Como siguiente paso, puedes medir el rendimiento entre dos servidores propios con iperf3 o comprobar la ruta hasta un destino con mtr.