Repository ini menyediakan konfigurasi Docker lengkap untuk menjalankan Ookla Speedtest Server secara aman, efisien, dan siap pakai. Menggunakan base image debian:bookworm-slim dan dijalankan di bawah non-root user (ookla dengan UID/GID 1100).
- Docker Engine v20.10+
- Docker Compose v2.0+
- Port publik yang terbuka dan dapat diakses dari internet.
Server ini membutuhkan port berikut untuk diekspos agar pengujian kecepatan berjalan lancar:
| Port | Protokol | Deskripsi | Status |
|---|---|---|---|
| 80 | TCP | HTTP Legacy / Latency Test | Wajib |
| 443 | TCP | Secure HTTPS Connection | Wajib |
| 8080 | TCP & UDP | Port Utama Ookla Speedtest | Wajib |
| 5060 | TCP & UDP | Port Cadangan Ookla Speedtest | Wajib |
git clone https://github.com/tkjskanesga/dockerize-speedtest-ookla-server.git
cd dockerize-speedtest-ookla-serverSecara default, container akan langsung mengunduh versi server terbaru dari Ookla dan menjalankannya:
docker compose up -ddocker compose logs -fCompose sudah mengaktifkan pembaruan binary otomatis melalui:
ENTRYPOINT_AUTOUPDATE_BINARY: "true"
ENTRYPOINT_AUTOUPDATE_INTERVAL_SECONDS: "259200"Nilai 259200 adalah 3 hari. Updater memanggil installer resmi Ookla untuk mengambil versi stable terbaru. Waktu pemeriksaan terakhir disimpan di named volume /home/ookla, sehingga restart container tidak memicu download ulang sebelum interval selesai. Untuk mematikan fitur ini, ubah ENTRYPOINT_AUTOUPDATE_BINARY menjadi "false".
Jika Anda ingin menggunakan sertifikat SSL sendiri (misal dari Cloudflare, Commercial CA, atau sertifikat lokal) dan tidak menggunakan fitur auto Let's Encrypt bawaan Ookla, ikuti langkah berikut:
Buat folder certs di root project dan letakkan file sertifikat Anda (misal certificate.pem dan privatekey.pem) di dalamnya.
mkdir certs
# Copy file sertifikat Anda ke dalam folder certs/Aktifkan mounting folder certs dengan menghapus tanda komentar (#) pada baris volume certs:
volumes:
- speedtest-ookla-data:/home/ookla
- ./OoklaServer.properties:/home/ookla/OoklaServer.properties
- ./certs:/home/ookla/certs # <-- Aktifkan baris iniLangkah 3: Konfigurasi OoklaServer.properties
Buka berkas OoklaServer.properties dan sesuaikan parameter berikut:
- Matikan Auto Let's Encrypt:
OoklaServer.ssl.useLetsEncrypt = false - Tentukan Path Sertifikat:
Arahkan ke lokasi di dalam container (di dalam
/home/ookla/certs/):openSSL.server.certificateFile = /home/ookla/certs/certificate.pem openSSL.server.privateKeyFile = /home/ookla/certs/privatekey.pem
- Pastikan Auto Update Aktif (Wajib):
Ookla mewajibkan opsi ini bernilai
trueagar server selalu ter-update dengan protokol pengetesan terbaru:OoklaServer.enableAutoUpdate = true
Aplikasi berjalan menggunakan user non-root ookla (UID 1100). Jika Anda memetakan folder atau file langsung dari host (seperti ./certs atau ./OoklaServer.properties), dan file/folder tersebut dimiliki oleh root atau user host lain tanpa izin akses tulis/baca untuk UID 1100, OoklaServer akan memicu error/exception (terutama saat mencoba memperbarui dirinya sendiri dengan fitur auto-update).
Ubah kepemilikan berkas dan folder di host agar dapat diakses oleh UID 1100:
# Ubah ownership folder sertifikat dan konfigurasi ke UID/GID 1100
sudo chown -R 1100:1100 ./certs
sudo chown 1100:1100 ./OoklaServer.propertiesJika Anda mencoba melakukan bind mount seluruh directory kerja ke host seperti ini:
# JANGAN LAKUKAN INI jika folder di host kosong
- ./data:/home/ooklaMelakukan bind mount direktori host kosong ke /home/ookla akan menutupi/menyembunyikan seluruh file binary OoklaServer yang sudah diunduh di dalam image saat proses build docker dilakukan. Akibatnya container akan langsung mati karena file binary tidak ditemukan.
Selalu gunakan Named Volume untuk penyimpanan data utama /home/ookla:
# Rekomendasi (Docker akan menyalin isi internal container ke volume secara otomatis)
- speedtest-ookla-data:/home/ooklaJika Anda terpaksa menggunakan bind mount direktori penuh dari host, Anda harus menyalin terlebih dahulu binary OoklaServer ke direktori host tersebut sebelum menjalankan container.