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
Kontak Penulis & Konsultasi
ALSYUNDAWY IT SOLUTION
- 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=".">menjadihref="https://alsyundawy.com"agar structured data valid. - Keamanan — Copy Button Feedback: mengganti pemulihan
innerHTMLmenjaditextContentpada tombol copy untuk menghindari potensi XSS vector. - Performa — Preload Fix: menghapus
<link rel="preload" as="style">yang tidak memilikionloaddan 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-hiddendenganclip-path: inset(50%)untuk menggantikanclip: rect()yang deprecated. - Aksesibilitas — Reduced Motion: menambahkan
@media (prefers-reduced-motion: reduce)untuk menonaktifkanscroll-behavior: smoothdan transisi panjang bagi pengguna dengan vestibular disorder. - Aksesibilitas — Alert Callouts: menambahkan
role="alert"pada elemen.alert-calloutagar screen reader dapat mengumumkan peringatan penting. - Aksesibilitas — Live Region: menambahkan
aria-live="polite"pada elemen#copyFeedbackuntuk 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.
- 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.
- Rilis awal dokumentasi panduan instalasi Ookla Speedtest Server Dual Stack di Debian & Ubuntu dengan systemd auto-start.
Ringkasan Status Komponen & Arsitektur
Komponen utama yang digunakan dalam panduan instalasi Ookla Speedtest Server dual-stack ini:
| 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 |
IPv6 (dual-stack) untuk server yang ingin tampil di Speedtest.net di sebagian besar wilayah.
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 |
|---|---|
| Akurasi pengukuran lokal | Pengguna mendapatkan hasil speedtest yang lebih representatif karena server berada di jaringan yang sama atau berdekatan |
| Branding & visibility | Nama perusahaan/ISP muncul di Speedtest.net, meningkatkan eksposur dan kepercayaan publik |
| Monitoring kualitas layanan | Dapat digunakan sebagai baseline untuk memantau kualitas koneksi dari waktu ke waktu |
| Kontribusi ekosistem | Berkontribusi pada dataset global Speedtest.net yang digunakan oleh pemerintah, akademisi, dan industri |
| Compliance & SLA | Mendukung 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.
Persyaratan Sistem
| 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 | Protokol | Arah | Fungsi |
|---|---|---|---|
8080 | TCP / UDP | Inbound / Outbound | Port utama Speedtest Server |
5060 | TCP / UDP | Inbound / Outbound | Packet Loss Measurement |
80 | TCP | Inbound / Outbound | HTTP (Legacy & ACME Challenge) |
443 | TCP | Inbound / Outbound | HTTPS (setelah Let's Encrypt aktif) |
22 | TCP | Inbound | SSH Management |
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
# 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)
# 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)
# 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
A (IPv4) dan AAAA (IPv6) yang mengarah ke IP publik server. Tanpa AAAA, server tidak akan lolos review dual-stack (persyaratan Ookla sejak 2023/2024 untuk wilayah dengan adopsi IPv6 ≥ 30%).
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:
# 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)
# 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
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.
./ooklaserver.sh install di direktori yang sama.
4.1 Download & Install sebagai 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:
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:
# 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
# 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
http://IP-SERVER:8080 atau http://speedtest.example.com:8080. Halaman status OoklaServer akan muncul jika daemon aktif.
Konfigurasi Dual Stack & OoklaServer.properties
Edit file konfigurasi agar mendukung IPv6 penuh dan pengaturan optimal.
5.1 Edit File 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):
# 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
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)
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:
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
# 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
active (running) dan enabled, maka service akan otomatis hidup setiap kali server di-reboot.
Konfigurasi Firewall (UFW)
Buka port yang dibutuhkan untuk IPv4 dan IPv6.
# 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
IPV6=yes di /etc/default/ufw.
7.1 Tuning Conntrack untuk High-Throughput
Untuk provider dengan throughput tinggi atau banyak koneksi concurrent, sesuaikan conntrack:
# 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
Verifikasi Instalasi & Dual Stack
8.1 Cek Proses & Port Listening
# 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
# 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
curl -4 dan curl -6 berhasil, dual-stack sudah berfungsi dengan baik.
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
- Buka https://account.ookla.com dan daftarkan akun organisasi/ISP.
- Verifikasi email dan pastikan contact address aktif (Ookla mengirim update status ke email terdaftar).
- 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:
| Item | Status | Catatan |
|---|---|---|
| DNS A record valid | Wajib | Hostname harus resolve ke IP publik |
| DNS AAAA record valid | Wajib | Khususnya wilayah IPv6 ≥ 30% |
| Dual-stack aktif | Wajib | IPv4 + IPv6 harus bisa diakses |
| Port 8080 & 5060 terbuka | Wajib | TCP + UDP inbound/outbound |
| Server Tester lolos | Wajib | Gunakan Host Tester |
| GeoIP MaxMind akurat | Disarankan | Cek di MaxMind Demo |
| Hostname (bukan IP mentah) | Wajib | Contoh: speedtest.example.com:8080 |
| OoklaServer.properties valid | Wajib | useIPv6=true, allowedDomains, ports, SSL |
9.3 Pengisian Form Submit Server
Submit server melalui form resmi: https://account.ookla.com/servers/create
- Hostname: gunakan format
speedtest.example.com:8080(jangan gunakan IP mentah). - Lokasi: isi kota dan negara sesuai GeoIP MaxMind. Jika berbeda, submit koreksi MaxMind terlebih dahulu.
- Provider / Organisasi: isi nama perusahaan/ISP yang sah dan memiliki website publik.
- Advanced Options: centang atau isi custom port jika menggunakan port non-standar (catatan: custom port membuat server hanya bisa dipakai secara privat).
- 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:
# 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:
- Cek lokasi IP publik Anda di MaxMind GeoIP2 Precision Demo.
- Jika kota/provinsi salah, submit koreksi via MaxMind GeoIP Data Correction Request.
- Tunggu 1–2 minggu untuk review MaxMind. Speedtest mensinkronisasi data dua kali seminggu, sehari setelah MaxMind publish update.
- Setelah koreksi ter-reflect, submit server ke Ookla.
9.6 Timeline & Approval
- Setelah disetujui, Let's Encrypt akan otomatis provision sertifikat SSL.
- HTTPS akan aktif; test HTTPS di Server Tester setelah provisioning selesai.
- Server mulai muncul di Speedtest.net untuk pengguna terdekat.
- Pantau email untuk notifikasi perubahan status atau masalah.
9.7 Alasan Penolakan Umum & Cara Mengatasinya
| Alasan | Solusi |
|---|---|
| GeoIP tidak cocok | Koreksi MaxMind terlebih dahulu |
| Tidak ada AAAA record | Buat AAAA record untuk IPv6 |
| Server Tester gagal | Perbaiki port, firewall, atau konfigurasi |
| Versi OoklaServer outdated | Jalankan ./ooklaserver.sh install untuk update |
| Hostname tidak valid | Gunakan hostname publik dengan A + AAAA |
| Bandwidth tidak memenuhi | Pastikan bandwidth ≥ 500 Mbps, disarankan 1 Gbps+ |
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
# 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
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 = trueagar 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.propertiesdan unit systemd.
# 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:
# 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:
# 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:
# Install node_exporter untuk metrik system
apt install -y prometheus-node-exporter
# Verifikasi metrics
curl http://localhost:9100/metrics | grep -i network
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
| Skenario | CPU | RAM | Bandwidth | Concurrent Tests |
|---|---|---|---|---|
| Small POP | 2 Core | 4 GB | 1 Gbps | ~200 |
| Medium POP | 4 Core | 8 GB | 10 Gbps | ~1,000 |
| Large POP / IX | 8 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.logdanjournalctluntuk error setelah update. - Simpan konfigurasi backup sebelum setiap update.
12.4 Troubleshooting Multi-Server
| Gejala | Kemungkinan Penyebab | Solusi |
|---|---|---|
| Server tidak muncul di Speedtest | Belum approved / GeoIP salah | Cek email Ookla, perbaiki GeoIP |
| Throughput rendah | NIC saturation / TCP tuning kurang | Aktifkan BBR, cek NIC offloading |
| Beberapa node tidak reachable | Firewall / routing issue | Verifikasi UFW, BGP, anycast |
| SSL error setelah update | Let's Encrypt provisioning gagal | Cek port 443, DNS, dan log Ookla |
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 | Tanggal Rilis | Perubahan Utama |
|---|---|---|
| 2.11.5 | 4 Juni 2026 | OpenSSL 3.5.5, HSTS redirect ke hostname valid, full TLS chain fix |
| 2.11.1 | 1 Feb 2024 | Log rotation default (10MB / 10 archives), ipTracking, websocket frame size limit, Cache-Control: no-store, security headers |
| 2.6+ | 2022 | Automated Let's Encrypt provisioning |
./ooklaserver.sh --version untuk mengecek versi lokal.
13.2 Konfigurasi Default vs Optimal (OoklaServer.properties)
| Properti | Default | Rekomendasi Optimal | Alasan |
|---|---|---|---|
OoklaServer.useIPv6 | false (kadang commented) | true | Wajib untuk listing publik di wilayah IPv6 ≥ 30% |
OoklaServer.allowedDomains | * (terbatas) | *.ookla.com, *.speedtest.net, yourdomain.com | Batasi akses hanya ke domain yang diperlukan |
OoklaServer.tcpPorts | 5060,8080 | 5060,8080 | Jangan ubah jika ingin listing publik (custom port = private only) |
OoklaServer.udpPorts | 5060,8080 | 5060,8080 | Sama seperti TCP |
OoklaServer.enableAutoUpdate | true | true (atau false + manual update mingguan untuk audit) | Patch keamanan & performa otomatis |
OoklaServer.ssl.useLetsEncrypt | false | true | HTTPS otomatis setelah server disetujui Ookla |
logging.loggers.app.level | commented / information | information untuk produksi, error untuk minimisasi disk | Logging untuk debugging dan audit |
logging.loggers.app.channel.path | commented / default | ${application.dir}/ooklaserver.log | Lokasi log yang jelas |
OoklaServer.ipTracking.maxConnPerBucketPerIp | 20000 (5 menit) | 20000 (atau sesuaikan dengan kapasitas) | Rate limiting default sudah cukup untuk大多数 kasus |
OoklaServer.websocket.frameSizeLimitBytes | 5242880 (5MB) | 5242880 | Tetap default kecuali ada kebutuhan khusus |
openSSL.server.minimumTLSProtocol | 1.2 | 1.2 | Cukup 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:
# ============================================
# 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
# ============================================
OoklaServer.properties sebelum mengubah konfigurasi. Setelah edit, jalankan ./ooklaserver.sh restart atau systemctl restart ooklaserver.service untuk menerapkan perubahan.
13.4 Verifikasi Konfigurasi Aktif
Setelah restart, verifikasi bahwa konfigurasi baru telah diterapkan:
# 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
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
| Kategori | Fungsi | Contoh / Bukti |
|---|---|---|
| MUST | Wajib untuk keberlanjutan layanan dan kelolosan listing Speedtest.net | Dual stack aktif, server disubmit & disetujui Ookla, firewall minimal, backup rutin, logging aktif |
| SHOULD | Disarankan untuk performa, keamanan, dan akurasi pengukuran optimal | BBR aktif, non-root runtime, pre-submission verification, auto-update terjadwal, allowedDomains dibatasi |
| MAY | Opsional tergantung kebijakan organisasi dan kompleksitas lingkungan | fail2ban, AppArmor, Prometheus & Grafana, multi-server anycast, custom certificate |
| AVOID | Praktik yang dapat menyebabkan penolakan, downtime, atau kerentangan keamanan | Submit dengan IP mentah, custom port untuk listing publik, IPv6 dinonaktifkan, auto-update tanpa backup |
Wajib Dilakukan
5 poin kritis untuk keberlanjutan layanan dan kelolosan Ookla review.
Disarankan
5 poin untuk performa, keamanan, dan akurasi pengukuran yang optimal.
Opsional
5 pilihan enhancement untuk lingkungan production yang lebih kompleks.
Hindari
6 praktik berisiko yang dapat menolak server atau menimbulkan kerentangan.
14.2 MUST — Wajib Dilakukan
- Dual Stack aktif: pastikan
OoklaServer.useIPv6 = truedan 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.propertiesdan unit systemd sebelum setiap perubahan besar. Gunakan cron untuk backup otomatis mingguan. - Monitoring dasar: aktifkan logging dan pantau
ooklaserver.logsertajournalctl -u ooklaserver.service -fsecara 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
speedtestdan 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 = trueuntuk patch keamanan & performa otomatis, atau buat schedule manual mingguan jika diperlukan audit perubahan. - Tentukan allowedDomains: batasi akses hanya ke domain yang diperlukan di
OoklaServer.propertiesuntuk 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/ooklaserverjika 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.certificateFiledanopenSSL.server.privateKeyFiledengan 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.