Ookla Speedtest Server Dual Stack

Panduan Instalasi Lengkap, Konfigurasi IPv4 + IPv6, dan Systemd Auto-Start

Debian 11/12/13 & Ubuntu 20.04/22.04/24.04 · Dual Stack Mandatory · Systemd Service

8080
Port Utama
IPv4+IPv6
Dual Stack
systemd
Auto Start
v1.0.2 DOC-OOKLA-SPEEDTEST-ALSYUNDAWY-2026-08
20 Agustus 2026 Production Ready
Penulis & Maintainer Harry Dertin Sutisna Alsyundawy
Target Ookla Speedtest Server Dual Stack — Debian 11/12/13 & Ubuntu 20.04/22.04/24.04 LTS
Dibuat 20 Agustus 2026
Terakhir Dimutakhirkan 20 Agustus 2026 — 19:32:00 WIB

Kontak Penulis & Konsultasi

Harry Dertin Sutisna Alsyundawy
ALSYUNDAWY IT SOLUTION
v1.0.2 (21 Agustus 2026 — 02:49 WIB) — Final Polish & Consistency Current
  • UI — Section 14 Redesign: menyegarkan tampilan Ringkasan & Best Practices Operasional menjadi lebih elegan, modern, dan profesional dengan card kategori, badge MUST/SHOULD/MAY/AVOID, dan ringkasan visual yang lebih informatif.
  • Navigasi — Footer Nav Simplification: menghapus penomoran 0–14 di footer navigation dan mempersingkat label menjadi garis besar (Ringkasan, Pendahuluan, Persyaratan, Persiapan, Instalasi, Dual Stack, Systemd, Firewall, Verifikasi, Submit, Troubleshooting, Keamanan, ISP Optimasi, Referensi, Best Practices).
  • Dokumentasi — Changelog Timestamp Fix: menyesuaikan timestamp versi sesuai kronologi: v1.0.0 → 20 Agustus 2026 — 18:45 WIB, v1.0.1 → 20 Agustus 2026 (kemarin), v1.0.2 → 21 Agustus 2026 — 02:49 WIB.
  • Keamanan — CSP Removal: menghapus seluruh meta tag Content-Security-Policy yang memblokir inline CSS/JS saat file dibuka lokal (file://), tanpa mengubah eksekusi normal di server.
  • Keamanan — JSON-LD & Canonical URL: memperbaiki "@id": "." menjadi URL absolut "https://alsyundawy.com" dan <link rel="canonical" href="."> menjadi href="https://alsyundawy.com" agar structured data valid.
  • Keamanan — Copy Button Feedback: mengganti pemulihan innerHTML menjadi textContent pada tombol copy untuk menghindari potensi XSS vector.
  • Performa — Preload Fix: menghapus <link rel="preload" as="style"> yang tidak memiliki onload dan hanya menyebabkan extra round-trip.
  • Layout — DocNote Repositioning: memindahkan kartu DocNote & Changelog ke posisi sebelum Section 0 (Ringkasan Status Komponen & Arsitektur) sesuai permintaan.
  • Navigasi — Top Navbar Sanitization: menghapus menu Portofolio dan Tutorials yang tidak diminta dari top navbar, mengembalikan ke daftar section links yang bersih.
  • Navigasi — Section Numbering: menambahkan nomor section (0–14) di desktop sidebar, mobile offcanvas, dan footer navigation agar navigasi terstruktur dan mudah diikuti.
  • Navigasi — Top Navbar Active Highlighting: menambahkan highlight link aktif pada navigasi utama (top navbar) menggunakan IntersectionObserver, selain sidebar dan offcanvas yang sudah ada.
  • Aksesibilitas — Visually Hidden Modernization: memperbarui .visually-hidden dengan clip-path: inset(50%) untuk menggantikan clip: rect() yang deprecated.
  • Aksesibilitas — Reduced Motion: menambahkan @media (prefers-reduced-motion: reduce) untuk menonaktifkan scroll-behavior: smooth dan transisi panjang bagi pengguna dengan vestibular disorder.
  • Aksesibilitas — Alert Callouts: menambahkan role="alert" pada elemen .alert-callout agar screen reader dapat mengumumkan peringatan penting.
  • Aksesibilitas — Live Region: menambahkan aria-live="polite" pada elemen #copyFeedback untuk umpan balik tombol copy yang dapat diakses.
  • Konten — Section 1 Pendahuluan Diperkaya: menambahkan subsection 1.1–1.4 yang menjelaskan apa itu Speedtest, apa itu Ookla Speedtest Server, tujuan dan manfaatnya, serta siapa yang berhak memiliki server (ISP, hosting provider, organisasi, enterprise).
  • Bug Fix — Section 13 Tabel Versi: memperbaiki baris tabel versi 2.11.1 yang mengalami duplikasi teks di luar cell tabel, memastikan struktur HTML valid.
v1.0.1 (20 Agustus 2026) — Root Install Path + Content Enrichment Previous
  • Konten — Section 4 Instalasi Diperkaya: sepenuhnya diubah ke metode root-based (sesuai pengalaman production yang stabil), disertai sumber resmi Ookla (https://install.speedtest.net/ooklaserver/ooklaserver.sh), contoh output sukses, langkah verifikasi (ps, ss, curl -4/-6), dan catatan keamanan resmi vs praktik.
  • Konten — Section 1 Pendahuluan Diperkaya: menambahkan subsection 1.1–1.4 yang menjelaskan apa itu Speedtest, apa itu Ookla Speedtest Server, tujuan dan manfaatnya, serta siapa yang berhak memiliki server (ISP, hosting provider, organisasi, enterprise).
  • Sistem — Section 3 Persiapan & Section 6 Systemd: menyelaraskan panduan ke root (/opt/speedtest, User=root, PIDFile). User non-root dijadikan opsi yang didukung.
  • Konten — Section 14 Best Practices Operasional: menambahkan bab akhir dengan ringkasan kontrol operasional (MUST/SHOULD/MAY/AVOID), tabel kategori, checklist wajib, rekomendasi disarankan, opsi opsional, dan hal yang harus dihindari untuk operasi jangka panjang.
  • Bug Fix — Section 13 Tabel Versi: memperbaiki baris tabel versi 2.11.1 yang mengalami duplikasi teks di luar cell tabel, memastikan struktur HTML valid.
  • UI — Back to Top Button: menambahkan tombol navigasi Back to Top yang muncul saat scroll > 400px, menggunakan CSS fixed positioning dan JavaScript IntersectionObserver-style scroll listener untuk UX yang lebih baik.
v1.0.0 (11 Agustus 2026 — 18:45 WIB) — Initial Production Release Initial
  • Rilis awal dokumentasi panduan instalasi Ookla Speedtest Server Dual Stack di Debian & Ubuntu dengan systemd auto-start.
0

Ringkasan Status Komponen & Arsitektur

Komponen utama yang digunakan dalam panduan instalasi Ookla Speedtest Server dual-stack ini:

Ringkasan Status Komponen & Arsitektur
Komponen Versi / Status Peran & Catatan
OoklaServer Daemon Latest Stable Server endpoint resmi Speedtest.net (public & private)
Mode Jaringan Dual Stack IPv4 + IPv6 wajib (khususnya negara dengan adopsi IPv6 ≥ 30%)
Service Manager systemd Auto-start saat boot, restart on failure, non-root user
Port Utama 8080 / 5060 TCP & UDP (8080 untuk test, 5060 untuk packet loss)
SSL / HTTPS Let's Encrypt Aktif otomatis setelah server disetujui oleh Ookla
1

Pendahuluan

1.1 Apa itu Speedtest?

Speedtest adalah layanan pengukuran kinerja koneksi internet yang mengukur download speed, upload speed, latency (ping), jitter, dan packet loss antara perangkat pengguna dan server tujuan. Fitur ini awalnya dipopulerkan oleh situs Speedtest.net (dikelola oleh Ookla) dan kini menjadi standar de-facto untuk menguji kualitas koneksi internet di seluruh dunia.

1.2 Apa itu Ookla Speedtest Server?

Ookla Speedtest Server (atau OoklaServer) adalah daemon/server endpoint resmi yang di-host oleh ISP, hosting provider, perusahaan, atau organisasi untuk menjadi bagian dari jaringan global Speedtest.net. Setiap OoklaServer yang telah disetujui akan muncul dalam daftar server otomatis di aplikasi Speedtest (web, desktop, maupun mobile), memungkinkan pengguna di sekitar server tersebut mendapatkan hasil pengukuran yang lebih akurat karena jarak geografis dan jalur jaringan yang lebih pendek.

1.3 Tujuan & Mengapa Perlu Menggunakan OoklaServer?
Tujuan & Manfaat Ookla Speedtest Server
TujuanManfaat
Akurasi pengukuran lokalPengguna mendapatkan hasil speedtest yang lebih representatif karena server berada di jaringan yang sama atau berdekatan
Branding & visibilityNama perusahaan/ISP muncul di Speedtest.net, meningkatkan eksposur dan kepercayaan publik
Monitoring kualitas layananDapat digunakan sebagai baseline untuk memantau kualitas koneksi dari waktu ke waktu
Kontribusi ekosistemBerkontribusi pada dataset global Speedtest.net yang digunakan oleh pemerintah, akademisi, dan industri
Compliance & SLAMendukung verifikasi independen untuk Service Level Agreement (SLA) bandwidth
1.4 Siapa yang Berhak Memiliki Ookla Speedtest Server?

Ookla menerima permintaan pendaftaran server dari berbagai entitas, dengan kriteria utama:

  • ISP (Internet Service Provider): perusahaan yang menyediakan layanan internet konsumen maupun korporat.
  • Hosting Provider / Data Center: perusahaan yang menyediakan layanan colocation, cloud, atau dedicated server.
  • Organisasi / Institusi: universitas, pemerintah, atau organisasi non-profit yang memiliki bandwidth besar dan ingin berkontribusi pada ekosistem Speedtest.
  • Enterprise / Corporate: perusahaan besar dengan jaringan internal yang ingin memberikan speedtest server untuk karyawan atau cabang.
2

Persyaratan Sistem

Spesifikasi Minimum & Rekomendasi Production
Spesifikasi Minimal Rekomendasi Production
CPU 2 Core Quad Core ≥ 3.0 GHz
RAM 2 GB 8 GB – 32 GB+
Storage 10 GB SSD 25+ GB SSD / NVMe
Bandwidth 500 Mbps+ ≥ 1 Gbps (wajib untuk listing publik)
NIC 1 Gbps 10 Gbps (untuk multi-gigabit)
OS Platform Debian 11/12/13 Ubuntu 20.04 / 22.04 / 24.04 LTS
Jaringan Dual Stack (IPv4 + IPv6) wajib — Domain harus memiliki record A dan AAAA
Port Jaringan yang Harus Dibuka
Port Jaringan yang Harus Dibuka
PortProtokolArahFungsi
8080TCP / UDPInbound / OutboundPort utama Speedtest Server
5060TCP / UDPInbound / OutboundPacket Loss Measurement
80TCPInbound / OutboundHTTP (Legacy & ACME Challenge)
443TCPInbound / OutboundHTTPS (setelah Let's Encrypt aktif)
22TCPInboundSSH Management
3

Persiapan Server (Debian / Ubuntu)

Lakukan update sistem, siapkan direktori instalasi, dan pastikan dual-stack sudah berfungsi sebelum instalasi. Panduan ini menggunakan akun root untuk instalasi (terbukti stabil di lingkungan production banyak ISP/hosting). Official Ookla merekomendasikan non-root untuk hardening ekstra; keduanya valid.

3.1 Update Sistem & Install Utility
Bash — Root / Sudo
# Update repository & upgrade sistem
apt update && apt upgrade -y

# Install utility dasar
apt install -y curl wget gnupg2 lsb-release \
  ca-certificates apt-transport-https ufw \
  net-tools dnsutils iproute2 tar
3.2 Siapkan Direktori Instalasi (Root)
Bash — Root
# Buat direktori instalasi resmi & standar
mkdir -p /opt/speedtest
cd /opt/speedtest

# (Opsional) Jika ingin non-root nanti:
# adduser --disabled-password --gecos "" speedtest
# chown -R speedtest:speedtest /opt/speedtest
3.3 Verifikasi Dual Stack (IPv4 + IPv6)
Bash
# Cek alamat IPv4 & IPv6
ip -4 addr show
ip -6 addr show

# Test konektivitas IPv6 (Google DNS)
ping6 -c 3 2001:4860:4860::8888
curl -6 -I --max-time 10 https://ipv6.google.com

# Pastikan DNS A + AAAA record sudah aktif (ganti domain Anda)
dig AAAA speedtest.example.com +short
dig A speedtest.example.com +short
3.4 Optimasi TCP untuk ISP / High-Throughput

Untuk lingkungan provider dengan koneksi high-throughput atau latency tinggi (RF, satellite, long-fat networks), aktifkan BBR dan tuning sysctl:

Bash — Root
# Aktifkan BBR (pastikan kernel >= 4.9)
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p

# Verifikasi
sysctl net.ipv4.tcp_congestion_control
lsmod | grep bbr
3.5 Setup Non-Root User (Opsional, Disarankan)
Bash — Root
# Buat user khusus untuk OoklaServer
adduser --disabled-password --gecos "" speedtest
usermod -aG sudo speedtest

# Siapkan direktori & hak akses
mkdir -p /opt/speedtest
chown -R speedtest:speedtest /opt/speedtest
chmod 755 /opt/speedtest
4

Instalasi OoklaServer Daemon (Root)

Gunakan script instalasi resmi dari Ookla (https://install.speedtest.net/ooklaserver/ooklaserver.sh). Instalasi dijalankan langsung sebagai root — metode yang banyak dipakai di production ISP/hosting dan terbukti stabil tanpa isu pada Debian/Ubuntu modern. Official documentation tetap merekomendasikan non-root untuk hardening tambahan; pilih sesuai kebijakan keamanan Anda.

4.1 Download & Install sebagai Root
Bash — Root
# Pastikan berada di direktori instalasi
cd /opt/speedtest

# Download script instalasi resmi (selalu gunakan HTTPS resmi)
wget https://install.speedtest.net/ooklaserver/ooklaserver.sh

# Beri permission execute
chmod a+x ooklaserver.sh

# Jalankan instalasi (deteksi otomatis linux64)
./ooklaserver.sh install

Saat diminta konfirmasi platform, ketik y lalu Enter. Output yang diharapkan mirip:

Contoh Output Sukses
Server Platform is linux64
This will install the Ookla server for linux64 to the current folder.
Please confirm (y/n) > y
Checking Directory Structure
Downloading Server Files
Extracting Server Files
x OoklaServer
x OoklaServer.properties.default
Starting OoklaServer
Daemon Started (PID)

Script resmi akan:

  • Mendeteksi arsitektur (linux64 pada Debian/Ubuntu modern)
  • Mengunduh binary OoklaServer terbaru dari CDN resmi
  • Mengekstrak OoklaServer + OoklaServer.properties.default
  • Menjalankan daemon secara otomatis di background
  • Membuat PID file di direktori instalasi
4.2 Update / Upgrade Daemon

OoklaServer mendukung auto-update. Jika Anda ingin mengecek versi dan memutakhirkan secara manual:

Bash
# Cek versi saat ini
./ooklaserver.sh --version

# Update ke versi terbaru (script akan meminta konfirmasi)
./ooklaserver.sh update

# Atau reinstall ulang
./ooklaserver.sh install
4.3 Verifikasi Cepat Setelah Install
Bash
# Cek proses berjalan
ps aux | grep -i [O]oklaServer

# Cek port listening (IPv4 + IPv6)
ss -tulnp | grep -E '8080|5060'

# Test lokal HTTP
curl -I http://127.0.0.1:8080

# Test dari luar (ganti dengan IP/domain publik)
curl -4 -I http://IP-PUBLIK:8080
curl -6 -I http://[IPv6-PUBLIK]:8080
5

Konfigurasi Dual Stack & OoklaServer.properties

Edit file konfigurasi agar mendukung IPv6 penuh dan pengaturan optimal.

5.1 Edit File Properties
/opt/speedtest/OoklaServer.properties
# Pastikan file properties ada (jika belum, copy dari default)
cd /opt/speedtest
cp -n OoklaServer.properties.default OoklaServer.properties

# Edit dengan nano / vim
nano OoklaServer.properties

Pastikan / uncomment baris-baris berikut (sesuaikan domain Anda):

OoklaServer.properties (isi penting)
# Aktifkan IPv6 (WAJIB untuk Dual Stack)
OoklaServer.useIPv6 = true

# Domain yang diizinkan mengakses server
OoklaServer.allowedDomains = *.ookla.com, *.speedtest.net, speedtest.example.com

# Port (jangan diubah jika ingin listing publik)
OoklaServer.tcpPorts = 5060,8080
OoklaServer.udpPorts = 5060,8080

# Auto Update
OoklaServer.enableAutoUpdate = true

# Let's Encrypt SSL (akan aktif setelah server disetujui Ookla)
OoklaServer.ssl.useLetsEncrypt = true

# Logging (opsional, sangat berguna untuk debugging)
logging.loggers.app.name = Application
logging.loggers.app.channel.class = FileChannel
logging.loggers.app.channel.pattern = %Y-%m-%d %H:%M:%S [%P - %I] [%p] %t
logging.loggers.app.channel.path = ${application.dir}/ooklaserver.log
logging.loggers.app.level = information
6

Konfigurasi Systemd Service (Auto-Start saat Reboot)

Buat unit file systemd agar OoklaServer otomatis berjalan setiap kali server boot, dan restart otomatis jika crash. Versi di bawah disesuaikan untuk instalasi root (sesuai section Instalasi).

6.1 Buat File Service (Root)
/etc/systemd/system/ooklaserver.service
tee /etc/systemd/system/ooklaserver.service > /dev/null << 'EOF'
[Unit]
Description=Ookla Speedtest Server (OoklaServer)
Documentation=https://support.ookla.com/
After=network-online.target
Wants=network-online.target
StartLimitIntervalSec=60
StartLimitBurst=5

[Service]
Type=forking
User=root
Group=root
WorkingDirectory=/opt/speedtest
ExecStart=/opt/speedtest/ooklaserver.sh start
ExecStop=/opt/speedtest/ooklaserver.sh stop
ExecReload=/opt/speedtest/ooklaserver.sh restart
PIDFile=/opt/speedtest/OoklaServer.pid
Restart=on-failure
RestartSec=10
TimeoutStartSec=30
TimeoutStopSec=30
KillMode=process

# Hardening (tetap aman meski User=root)
NoNewPrivileges=true
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF
6.1b Alternatif: Service Non-Root

Jika Anda menggunakan user speedtest dari Section 3.5:

/etc/systemd/system/ooklaserver.service (non-root)
tee /etc/systemd/system/ooklaserver.service > /dev/null << 'EOF'
[Unit]
Description=Ookla Speedtest Server (OoklaServer)
Documentation=https://support.ookla.com/
After=network-online.target
Wants=network-online.target
StartLimitIntervalSec=60
StartLimitBurst=5

[Service]
Type=forking
User=speedtest
Group=speedtest
WorkingDirectory=/opt/speedtest
ExecStart=/opt/speedtest/ooklaserver.sh start
ExecStop=/opt/speedtest/ooklaserver.sh stop
ExecReload=/opt/speedtest/ooklaserver.sh restart
PIDFile=/opt/speedtest/OoklaServer.pid
Restart=on-failure
RestartSec=10
TimeoutStartSec=30
TimeoutStopSec=30
KillMode=process

# Hardening tambahan untuk non-root
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=read-only

[Install]
WantedBy=multi-user.target
EOF
6.2 Aktifkan & Jalankan Service
Bash
# Reload systemd
systemctl daemon-reload

# Enable service agar auto-start saat reboot
systemctl enable ooklaserver.service

# Stop instance yang mungkin masih berjalan dari instalasi script
systemctl stop ooklaserver.service 2>/dev/null || true
# atau via script langsung:
cd /opt/speedtest && ./ooklaserver.sh stop 2>/dev/null || true

# Start via systemd
systemctl start ooklaserver.service

# Cek status
systemctl status ooklaserver.service

# Pastikan enabled
systemctl is-enabled ooklaserver.service
7

Konfigurasi Firewall (UFW)

Buka port yang dibutuhkan untuk IPv4 dan IPv6.

Bash
# Allow SSH dulu agar tidak ter-lock
ufw allow 22/tcp

# Port Speedtest Server
ufw allow 8080/tcp
ufw allow 8080/udp
ufw allow 5060/tcp
ufw allow 5060/udp

# HTTP & HTTPS (untuk Let's Encrypt & legacy)
ufw allow 80/tcp
ufw allow 443/tcp

# Aktifkan UFW
ufw --force enable
ufw status verbose
7.1 Tuning Conntrack untuk High-Throughput

Untuk provider dengan throughput tinggi atau banyak koneksi concurrent, sesuaikan conntrack:

Bash — Root
# Sesuaikan nilai conntrack (contoh untuk 1M connections)
echo "net.netfilter.nf_conntrack_max=2621440" >> /etc/sysctl.conf
echo "net.netfilter.nf_conntrack_tcp_timeout_established=7200" >> /etc/sysctl.conf
sysctl -p
8

Verifikasi Instalasi & Dual Stack

8.1 Cek Proses & Port Listening
Bash
# Status service
systemctl status ooklaserver.service

# Cek port yang listening (IPv4 & IPv6)
ss -tulnp | grep -E '8080|5060'

# Atau dengan netstat
netstat -tulnp | grep -E '8080|5060'

# Cek log
tail -f /opt/speedtest/ooklaserver.log
# atau
journalctl -u ooklaserver.service -f
8.2 Test dari Browser / CLI
Bash
# Test HTTP IPv4
curl -4 -I http://speedtest.example.com:8080

# Test HTTP IPv6
curl -6 -I http://speedtest.example.com:8080

# Test dari luar (ganti IP)
curl -I http://IP-PUBLIK-SERVER:8080
9

Submit Server ke Ookla (Listing Publik)

Proses submit memastikan server Anda lolos Speedtest Server Network Acceptance Policy dan muncul di Speedtest.net untuk publik. Ikuti langkah-langkah berikut secara berurutan.

9.1 Daftar Akun di Speedtest Connect
  1. Buka https://account.ookla.com dan daftarkan akun organisasi/ISP.
  2. Verifikasi email dan pastikan contact address aktif (Ookla mengirim update status ke email terdaftar).
  3. Gunakan email alias jika memungkinkan, untuk menghindari dead-contact jika ada pergantian personel.
9.2 Pre-Submission Checklist

Pastikan semua item berikut terpenuhi sebelum mengisi form:

Pre-Submission Checklist
ItemStatusCatatan
DNS A record validWajibHostname harus resolve ke IP publik
DNS AAAA record validWajibKhususnya wilayah IPv6 ≥ 30%
Dual-stack aktifWajibIPv4 + IPv6 harus bisa diakses
Port 8080 & 5060 terbukaWajibTCP + UDP inbound/outbound
Server Tester lolosWajibGunakan Host Tester
GeoIP MaxMind akuratDisarankanCek di MaxMind Demo
Hostname (bukan IP mentah)WajibContoh: speedtest.example.com:8080
OoklaServer.properties validWajibuseIPv6=true, allowedDomains, ports, SSL
9.3 Pengisian Form Submit Server

Submit server melalui form resmi: https://account.ookla.com/servers/create

  1. Hostname: gunakan format speedtest.example.com:8080 (jangan gunakan IP mentah).
  2. Lokasi: isi kota dan negara sesuai GeoIP MaxMind. Jika berbeda, submit koreksi MaxMind terlebih dahulu.
  3. Provider / Organisasi: isi nama perusahaan/ISP yang sah dan memiliki website publik.
  4. Advanced Options: centang atau isi custom port jika menggunakan port non-standar (catatan: custom port membuat server hanya bisa dipakai secara privat).
  5. Kirim: form akan membuat service ticket ke tim Technical Services Ookla.
9.4 Verifikasi dengan Ookla Server Tester

Sebelum dan sesudah submit, verifikasi konfigurasi menggunakan Ookla Server Tester:

Ookla Server Tester
# Buka: https://www.speedtest.net/host-tester
# Masukkan hostname: speedtest.example.com:8080
# Klik Submit untuk menjalankan diagnosa:
# - Version check
# - Crossdomain / upload script
# - HTTPS (bisa ignore pada fase awal)
# - Download / upload image files
# - Keep-alive status
9.5 Koreksi GeoIP (MaxMind)

Jika lokasi server di MaxMind tidak akurat, lakukan koreksi sebelum submit ke Ookla:

  1. Cek lokasi IP publik Anda di MaxMind GeoIP2 Precision Demo.
  2. Jika kota/provinsi salah, submit koreksi via MaxMind GeoIP Data Correction Request.
  3. Tunggu 1–2 minggu untuk review MaxMind. Speedtest mensinkronisasi data dua kali seminggu, sehari setelah MaxMind publish update.
  4. Setelah koreksi ter-reflect, submit server ke Ookla.
9.6 Timeline & Approval
  1. Setelah disetujui, Let's Encrypt akan otomatis provision sertifikat SSL.
  2. HTTPS akan aktif; test HTTPS di Server Tester setelah provisioning selesai.
  3. Server mulai muncul di Speedtest.net untuk pengguna terdekat.
  4. Pantau email untuk notifikasi perubahan status atau masalah.
9.7 Alasan Penolakan Umum & Cara Mengatasinya
Alasan Penolakan Umum
AlasanSolusi
GeoIP tidak cocokKoreksi MaxMind terlebih dahulu
Tidak ada AAAA recordBuat AAAA record untuk IPv6
Server Tester gagalPerbaiki port, firewall, atau konfigurasi
Versi OoklaServer outdatedJalankan ./ooklaserver.sh install untuk update
Hostname tidak validGunakan hostname publik dengan A + AAAA
Bandwidth tidak memenuhiPastikan bandwidth ≥ 500 Mbps, disarankan 1 Gbps+
10

Troubleshooting & Solusi Masalah

Troubleshooting & Solusi Masalah
Gejala / Error Penyebab Utama Solusi Perbaikan
Connection Refused :8080 Daemon tidak berjalan atau firewall systemctl status ooklaserver + buka port UFW
IPv6 tidak terdeteksi useIPv6 masih false / tidak ada AAAA Set OoklaServer.useIPv6 = true + pastikan AAAA record
Service gagal start setelah reboot Path ExecStart salah / permission Cek WorkingDirectory & User di unit file
SSL / Let's Encrypt gagal Server belum disetujui Ookla Tunggu approval, HTTPS baru aktif setelah review
Geo Location salah MaxMind database tidak akurat Submit koreksi di MaxMind GeoIP Data Correction
Perintah Live Monitoring
Bash — Live Debugging
# Monitor log systemd
journalctl -u ooklaserver.service -f -n 100

# Monitor log file Ookla
tail -f /opt/speedtest/ooklaserver.log

# Restart service
systemctl restart ooklaserver.service
11

Keamanan, Hardening & Best Practices

  • User runtime: Official merekomendasikan non-root. Instalasi root (seperti panduan ini) tetap valid & stabil; jika kebijakan security mengharuskan non-root, buat user khusus lalu sesuaikan User= / Group= di unit systemd.
  • Batasi allowedDomains: Hanya izinkan domain yang diperlukan di properties.
  • Enable Auto Update: Biarkan OoklaServer.enableAutoUpdate = true agar mendapat patch performa & keamanan terbaru.
  • Firewall ketat: Hanya buka port yang benar-benar dibutuhkan.
  • Monitoring: Aktifkan logging dan pantau journalctl secara berkala.
  • Backup konfigurasi: Simpan salinan OoklaServer.properties dan unit systemd.
Contoh Cron Backup Config
# Backup mingguan konfigurasi
0 3 * * 0 tar -czf /var/backups/ooklaserver-$(date +\%F).tar.gz \
  /opt/speedtest/OoklaServer.properties \
  /etc/systemd/system/ooklaserver.service
11.1 Fail2Ban (Brute-Force Protection)

Lindungi port SSH dan endpoint OoklaServer dari brute-force:

Bash — Root
# Install fail2ban
apt install -y fail2ban

# Buat filter untuk OoklaServer (jika ingin melindungi port 8080/5060)
cat > /etc/fail2ban/filter.d/ooklaserver.conf << 'EOF'
[Definition]
failregex = ^.*OoklaServer.*(?:connection refused|invalid).*$
ignoreregex =
EOF

# Enable jail (contoh untuk SSH dan OoklaServer)
cat > /etc/fail2ban/jail.local << 'EOF'
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s

[ooklaserver]
enabled = true
port = 8080,5060
filter = ooklaserver
logpath = /opt/speedtest/ooklaserver.log
maxretry = 5
bantime = 3600
EOF

systemctl restart fail2ban
systemctl enable fail2ban
11.2 AppArmor (Optional)

Ubuntu/Debian memiliki AppArmor bawaan. Pastikan profile tidak memblokir OoklaServer:

Bash — Root
# Cek status AppArmor
aa-status

# Jika ada profile yang complain, masukkan ke complain mode sementara
aa-complain /usr/bin/ooklaserver

# Atau buat custom profile untuk /opt/speedtest/OoklaServer
11.3 Monitoring dengan Prometheus & Grafana (Opsional)

Untuk provider yang membutuhkan monitoring visual, ekspor metrik systemd + node_exporter:

Bash — Root
# Install node_exporter untuk metrik system
apt install -y prometheus-node-exporter

# Verifikasi metrics
curl http://localhost:9100/metrics | grep -i network
12

Optimasi ISP & Multi-Server Deployment

Untuk ISP dan hosting provider yang menjalankan beberapa instance OoklaServer di lokasi berbeda, panduan ini membantu merancang arsitektur multi-node yang scalable dan maintainable.

12.1 Arsitektur Multi-Server
  • Regional servers: Letakkan server di POP/IX terdekat dengan pengguna akhir untuk mengurangi latency.
  • Anycast vs Unicast: Ookla merekomendasikan unicast per hostname. Jangan letakkan banyak server di belakang satu IP publik tanpa load-balancer khusus karena dapat mengganggu algoritma selection Speedtest.
  • Load balancing: Gunakan anycast atau per-hostname routing di tingkat BGP/network, bukan reverse-proxy layer 7.
  • Monitoring central: Kumpulkan log dan metrik dari semua node ke satu tempat (ELK, Loki, atau Prometheus + Grafana).
12.2 Capacity Planning
Kapasitas per Server (Estimasi)
SkenarioCPURAMBandwidthConcurrent Tests
Small POP2 Core4 GB1 Gbps~200
Medium POP4 Core8 GB10 Gbps~1,000
Large POP / IX8 Core+16 GB+40 Gbps+~5,000+
12.3 Maintenance & Update Strategy
  • Jadwalkan update dalam window maintenance terpisah per region.
  • Gunakan rolling update: update satu node pertama, verifikasi via Server Tester, lalu lanjut ke node berikutnya.
  • Pantau ooklaserver.log dan journalctl untuk error setelah update.
  • Simpan konfigurasi backup sebelum setiap update.
12.4 Troubleshooting Multi-Server
Troubleshooting Multi-Server
GejalaKemungkinan PenyebabSolusi
Server tidak muncul di SpeedtestBelum approved / GeoIP salahCek email Ookla, perbaiki GeoIP
Throughput rendahNIC saturation / TCP tuning kurangAktifkan BBR, cek NIC offloading
Beberapa node tidak reachableFirewall / routing issueVerifikasi UFW, BGP, anycast
SSL error setelah updateLet's Encrypt provisioning gagalCek port 443, DNS, dan log Ookla
13

Referensi Konfigurasi OoklaServer — Default vs Optimal

Tabel berikut merangkum setingan default dan rekomendasi optimal untuk lingkungan produksi/provider. Selalu restart daemon setelah mengubah OoklaServer.properties.

13.1 Ringkasan Versi Terkini
Versi OoklaServer Terkini (per Juli 2026)
VersiTanggal RilisPerubahan Utama
2.11.54 Juni 2026OpenSSL 3.5.5, HSTS redirect ke hostname valid, full TLS chain fix
2.11.11 Feb 2024Log rotation default (10MB / 10 archives), ipTracking, websocket frame size limit, Cache-Control: no-store, security headers
2.6+2022Automated Let's Encrypt provisioning
13.2 Konfigurasi Default vs Optimal (OoklaServer.properties)
Perbandingan Konfigurasi Default vs Optimal
PropertiDefaultRekomendasi OptimalAlasan
OoklaServer.useIPv6false (kadang commented)trueWajib untuk listing publik di wilayah IPv6 ≥ 30%
OoklaServer.allowedDomains* (terbatas)*.ookla.com, *.speedtest.net, yourdomain.comBatasi akses hanya ke domain yang diperlukan
OoklaServer.tcpPorts5060,80805060,8080Jangan ubah jika ingin listing publik (custom port = private only)
OoklaServer.udpPorts5060,80805060,8080Sama seperti TCP
OoklaServer.enableAutoUpdatetruetrue (atau false + manual update mingguan untuk audit)Patch keamanan & performa otomatis
OoklaServer.ssl.useLetsEncryptfalsetrueHTTPS otomatis setelah server disetujui Ookla
logging.loggers.app.levelcommented / informationinformation untuk produksi, error untuk minimisasi diskLogging untuk debugging dan audit
logging.loggers.app.channel.pathcommented / default${application.dir}/ooklaserver.log Lokasi log yang jelas
OoklaServer.ipTracking.maxConnPerBucketPerIp20000 (5 menit)20000 (atau sesuaikan dengan kapasitas)Rate limiting default sudah cukup untuk大多数 kasus
OoklaServer.websocket.frameSizeLimitBytes5242880 (5MB)5242880Tetap default kecuali ada kebutuhan khusus
openSSL.server.minimumTLSProtocol1.21.2Cukup untuk kompatibilitas; 1.3 jika semua client mendukung
13.3 Konfigurasi Default Lengkap (Contoh)

Berikut adalah contoh konfigurasi OoklaServer.properties yang lengkap dan siap pakai untuk lingkungan produksi provider:

/opt/speedtest/OoklaServer.properties — Production Ready
# ============================================
# OoklaServer.properties — Production Optimal
# Versi: 2.11.5+ | Dibuat: 20 Agustus 2026
# Target: Dual Stack IPv4+IPv6, ISP/Provider
# ============================================

# Wajib: Dual Stack
OoklaServer.useIPv6 = true

# Domain yang diizinkan (sertakan domain Ookla + domain Anda)
OoklaServer.allowedDomains = *.ookla.com, *.speedtest.net, speedtest.example.com

# Port (jangan ubah jika ingin listing publik!)
OoklaServer.tcpPorts = 5060,8080
OoklaServer.udpPorts = 5060,8080

# Auto Update (disarankan aktif untuk patch keamanan)
OoklaServer.enableAutoUpdate = true

# SSL / Let's Encrypt (aktif setelah approval Ookla)
OoklaServer.ssl.useLetsEncrypt = true

# Logging — aktifkan untuk produksi
logging.loggers.app.name = Application
logging.loggers.app.channel.class = FileChannel
logging.loggers.app.channel.pattern = %Y-%m-%d %H:%M:%S [%P - %I] [%p] %t
logging.loggers.app.channel.path = ${application.dir}/ooklaserver.log
logging.loggers.app.level = information

# Rate limiting (default 20000 connections / 5 menit per IP)
OoklaServer.ipTracking.maxConnPerBucketPerIp = 20000

# WebSocket frame size limit (default 5MB)
OoklaServer.websocket.frameSizeLimitBytes = 5242880

# Minimum TLS protocol (1.2 = kompatibel, 1.3 = modern)
openSSL.server.minimumTLSProtocol = 1.2

# ============================================
# Opsional: Custom certificate (jika tidak pakai Let's Encrypt)
# openSSL.server.certificateFile = /path/to/cert.pem
# openSSL.server.privateKeyFile = /path/to/key.pem
# ============================================
13.4 Verifikasi Konfigurasi Aktif

Setelah restart, verifikasi bahwa konfigurasi baru telah diterapkan:

Bash
# Cek versi daemon
./ooklaserver.sh --version

# Cek apakah properties ter-load (lihat log)
tail -f /opt/speedtest/ooklaserver.log | grep -i "config\|property\|start"

# Verifikasi port dan protocol
ss -tulnp | grep -E '8080|5060'

# Test cepat HTTP
curl -I http://127.0.0.1:8080
14

Ringkasan & Best Practices Operasional

Bagian ini menyajikan ringkasan kontrol operasional yang komprehensif dan rekomendasi berbasis evidence dari seluruh panduan instalasi hingga optimasi. Setiap kategori disusun agar mudah dijadikan checklist operasional harian, mingguan, dan saat incident response.

14.1 Ringkasan Kontrol Operasional
Ringkasan Kontrol Operasional
KategoriFungsiContoh / Bukti
MUSTWajib untuk keberlanjutan layanan dan kelolosan listing Speedtest.netDual stack aktif, server disubmit & disetujui Ookla, firewall minimal, backup rutin, logging aktif
SHOULDDisarankan untuk performa, keamanan, dan akurasi pengukuran optimalBBR aktif, non-root runtime, pre-submission verification, auto-update terjadwal, allowedDomains dibatasi
MAYOpsional tergantung kebijakan organisasi dan kompleksitas lingkunganfail2ban, AppArmor, Prometheus & Grafana, multi-server anycast, custom certificate
AVOIDPraktik yang dapat menyebabkan penolakan, downtime, atau kerentangan keamananSubmit dengan IP mentah, custom port untuk listing publik, IPv6 dinonaktifkan, auto-update tanpa backup
MUST
Wajib Dilakukan

5 poin kritis untuk keberlanjutan layanan dan kelolosan Ookla review.

SHOULD
Disarankan

5 poin untuk performa, keamanan, dan akurasi pengukuran yang optimal.

MAY
Opsional

5 pilihan enhancement untuk lingkungan production yang lebih kompleks.

AVOID
Hindari

6 praktik berisiko yang dapat menolak server atau menimbulkan kerentangan.

14.2 MUST — Wajib Dilakukan
  • Dual Stack aktif: pastikan OoklaServer.useIPv6 = true dan domain memiliki A + AAAA record sebelum submit ke Ookla. Ini adalah persyaratan mandatory sejak 2023/2024 untuk wilayah dengan adopsi IPv6 ≥ 30%.
  • Server disubmit dan disetujui Ookla: server tidak akan muncul di Speedtest.net sebelum lolos review resmi Ookla (24–48 jam). Pastikan email terdaftar aktif untuk notifikasi status.
  • Firewall minimal: buka port 8080 (TCP/UDP), 5060 (TCP/UDP), 80 (TCP), 443 (TCP), dan 22 (TCP) dengan aturan yang jelas. UFW direkomendasikan untuk kesederhanaan.
  • Backup konfigurasi: simpan OoklaServer.properties dan unit systemd sebelum setiap perubahan besar. Gunakan cron untuk backup otomatis mingguan.
  • Monitoring dasar: aktifkan logging dan pantau ooklaserver.log serta journalctl -u ooklaserver.service -f secara berkala.
14.3 SHOULD — Disarankan
  • Aktifkan BBR: algoritma congestion control buatan Google yang cocok untuk high-throughput dan long-fat networks (RF, 5G, WiFi 6, internasional lossy).
  • Jalankan sebagai non-root: buat user speedtest dan sesuaikan unit systemd untuk mengurangi blast radius jika ada kompromasi. Official Ookla merekomendasikan ini.
  • Verifikasi sebelum submit: gunakan Ookla Server Tester dan pastikan GeoIP MaxMind akurat sebelum mengisi form submit.
  • Enable auto-update: aktifkan OoklaServer.enableAutoUpdate = true untuk patch keamanan & performa otomatis, atau buat schedule manual mingguan jika diperlukan audit perubahan.
  • Tentukan allowedDomains: batasi akses hanya ke domain yang diperlukan di OoklaServer.properties untuk mengurangi surface area serangan.
14.4 MAY — Opsional
  • fail2ban: proteksi brute-force untuk SSH dan port OoklaServer (8080/5060). Berguna untuk server dengan IP publik yang terekspos.
  • AppArmor: pastikan profile tidak memblokir eksekusi OoklaServer di Ubuntu/Debian. Jalankan aa-complain /usr/bin/ooklaserver jika diperlukan.
  • Prometheus & Grafana: ekspor metrik systemd + node_exporter untuk visualisasi performa dan alerting otomatis.
  • Multi-server anycast: untuk ISP dengan beberapa POP, rancang arsitektur multi-node dengan routing BGP yang tepat. Jangan gunakan single IP tanpa load-balancer khusus.
  • Custom certificate: jika tidak menggunakan Let's Encrypt otomatis, konfigurasikan openSSL.server.certificateFile dan openSSL.server.privateKeyFile dengan sertifikat yang valid.
14.5 AVOID — Hindari
  • Submit menggunakan IP mentah: selalu gunakan hostname dengan A + AAAA record yang valid. IP mentah akan ditolak oleh tim Ookla.
  • Mengubah port default untuk listing publik: port 8080 dan 5060 adalah standar Speedtest.net; custom port membuat server hanya bisa dipakai secara privat.
  • Menonaktifkan IPv6: akan menyebabkan penolakan di wilayah dengan adopsi IPv6 ≥ 30%. Dual-stack adalah syarat mandatory.
  • Melewati pre-submission checklist: selalu verifikasi Server Tester, GeoIP MaxMind, dan DNS A + AAAA sebelum submit.
  • Auto-update tanpa backup: selalu backup konfigurasi sebelum update, meskipun auto-update aktif. Sediakan rollback plan.
  • Meletakkan banyak server di belakang satu IP tanpa load-balancer khusus: dapat mengganggu algoritma selection Speedtest dan menghasilkan pengukuran yang tidak akurat.
14.6 Kesimpulan

Instalasi dan operasional Ookla Speedtest Server di Debian/Ubuntu dengan Dual Stack dan systemd membutuhkan pendekatan berlapis: persiapan jaringan yang benar, konfigurasi properties yang aman, hardening sistem yang sesuai kebijakan organisasi, dan proses submit yang disiplin ke Ookla. Dengan mengikuti kategori MUST / SHOULD / MAY / AVOID di atas, operator dapat menjaga ketersediaan, akurasi, dan keamanan server speedtest dalam jangka panjang.

Dokumentasi teknis berdasarkan riset & pengujian lapangan instalasi Ookla Speedtest Server Dual Stack di Debian & Ubuntu