← Todos los posts

Infraestructura · · Lectura de 8 min

Instala un OoklaServer en Debian 12 y Debian 13

Esta guía instala el servidor público Speedtest de Ookla en un host Debian. DNS, firewall y registro ante Ookla permanecen bajo control del administrador.

Antes de comenzar

Usa un host Debian 12/13 nuevo o revisado con IPv4 o IPv6 público. Elige un hostname como speedtest.ejemplo.com y crea los registros DNS antes de solicitar el certificado.

  • Ejecuta como root o mediante sudo.
  • Permite los puertos requeridos por la documentación actual de Ookla y TCP/80 para el desafío del certificado.
  • Lee los requisitos y el proceso de registro de Ookla antes de publicar el servidor.

Usa el instalador versionado

El instalador detecta Debian 12/13, pide hostname y correo de contacto, instala el servidor oficial, crea la unidad systemd y puede aplicar un perfil balanceado opcional. No crea registros DNS.

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

Descarga el instalador inmutable v1 e inicia el flujo interactivo con privilegios administrativos.

sh
curl -fsSL https://scripts.lrq.lat/speedtest/v1.1.7/install.sh | sudo bash -s -- status

Muestra el estado del servicio y la configuración local guardada sin cambiar el host.

sh
curl -fsSL https://scripts.lrq.lat/speedtest/v1.1.7/install.sh | sudo bash -s -- tls

Repite solo la etapa de Certbot y asociación del certificado cuando DNS o el puerto 80 estén listos.

Instalación manual y segura

Este camino deja cada cambio explícito. Úsalo donde exista control de cambios o no quieras emplear el instalador rápido.

sh
sudo apt update
sudo apt install -y ca-certificates curl tar

Actualiza el índice APT e instala las herramientas usadas para descargar y descomprimir la distribución oficial.

sh
sudo install -d -m 0755 /opt/ooklaserver
curl -fsSLo /tmp/ooklaserver.sh https://install.speedtest.net/ooklaserver/ooklaserver.sh
sudo sh /tmp/ooklaserver.sh --force --installdir /opt/ooklaserver install

Descarga el asistente oficial de Ookla e instala los archivos en /opt/ooklaserver sin responder manualmente al prompt del proveedor.

ini
[Unit]
Description=OoklaServer
After=network-online.target
Wants=network-online.target

[Service]
Type=forking
WorkingDirectory=/opt/ooklaserver
RuntimeDirectory=ooklaserver
PIDFile=/run/ooklaserver/ooklaserver.pid
ExecStart=/opt/ooklaserver/OoklaServer --daemon --pidfile=/run/ooklaserver/ooklaserver.pid
Restart=on-failure

[Install]
WantedBy=multi-user.target

Esta unidad systemd supervisa el binario del proveedor sin depender de comandos amplios para matar procesos.

sh
sudo install -m 0644 /dev/stdin /etc/systemd/system/ooklaserver.service <<'EOF'
[Unit]
Description=OoklaServer
After=network-online.target
Wants=network-online.target

[Service]
Type=forking
WorkingDirectory=/opt/ooklaserver
RuntimeDirectory=ooklaserver
PIDFile=/run/ooklaserver/ooklaserver.pid
ExecStart=/opt/ooklaserver/OoklaServer --daemon --pidfile=/run/ooklaserver/ooklaserver.pid
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now ooklaserver

Escribe la unidad, recarga systemd e inicia el servicio ahora y en próximos arranques.

Tuning balanceado opcional

Aplícalo solo después de entender su impacto en el host. El perfil usa un drop-in propio, por lo que puede eliminarse sin editar /etc/sysctl.conf.

sh
sysctl net.ipv4.tcp_available_congestion_control
sudo tee /etc/sysctl.d/90-lrqnet-ooklaserver.conf >/dev/null <<'EOF'
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
net.core.somaxconn=65535
net.core.rmem_max=16777216
net.core.wmem_max=16777216
EOF
sudo sysctl --system

Confirma BBR, crea el perfil opcional y carga los drop-ins. No lo apliques si otro equipo administra la política de red del host.

TLS con Certbot

El comando TLS usa HTTP-01 standalone. El dominio debe resolver a este host y el puerto 80 debe ser accesible. Después de la emisión, el timer systemd de Certbot renueva el certificado automáticamente y un hook de deploy reinicia OoklaServer. Si falla, el servidor instalado continúa funcionando.

sh
sudo apt install -y certbot
sudo systemctl enable --now certbot.timer
sudo certbot certonly --standalone -d speedtest.ejemplo.com -m admin@ejemplo.com --agree-tos --no-eff-email

Instala Certbot, habilita explícitamente su timer de renovación automática y obtiene un certificado Let’s Encrypt. Sustituye hostname y correo por los valores reales.

sh
sudo tee -a /opt/ooklaserver/OoklaServer.properties >/dev/null <<'EOF'
openSSL.server.certificateFile = /etc/letsencrypt/live/speedtest.ejemplo.com/fullchain.pem
openSSL.server.privateKeyFile = /etc/letsencrypt/live/speedtest.ejemplo.com/privkey.pem
EOF
sudo systemctl restart ooklaserver

Asocia certificado y clave privada a OoklaServer y reinicia el servicio. Usa el hostname real en ambas rutas.

sh
sudo install -d -m 0755 /etc/letsencrypt/renewal-hooks/deploy
sudo tee /etc/letsencrypt/renewal-hooks/deploy/ooklaserver-restart >/dev/null <<'EOF'
#!/bin/sh
systemctl restart ooklaserver
EOF
sudo chmod 750 /etc/letsencrypt/renewal-hooks/deploy/ooklaserver-restart
sudo systemctl status certbot.timer --no-pager

Crea el hook de deploy que reinicia OoklaServer tras cada renovación correcta y confirma que el timer de renovación automática de Certbot está activo.

Validación y mantenimiento

Verifica el servicio antes de completar el registro público. Mantén las configuraciones críticas bajo control de cambios.

sh
sudo systemctl status ooklaserver --no-pager
sudo journalctl -u ooklaserver -n 100 --no-pager
sudo /opt/ooklaserver/OoklaServer -v

Muestra estado, logs recientes y versión instalada.

sh
sudo certbot renew --dry-run

Prueba la renovación sin cambiar el certificado activo.

Script y release