Speedtest Tracker to narzędzie, które można uruchomić na własnym komputerze lub serwerze. Wykorzystuje rozwiązanie Speedtest firmy Ookla do sprawdzania połączenia i jest łatwe w konfiguracji za pomocą Docker.
Zyskaj kontrolę nad swoim Internetem
W Speedtest Tracker możesz monitorować jakość Twojego połączenia i uzyskiwać przejrzyste wykresy prędkości. Jeśli Twój Internet działa wolniej niż obiecywał operator, otrzymasz gotowe dowody, które pozwolą Ci skutecznie interweniować.

Czego potrzebujesz? Głównym elementem, który będziemy wykorzystywać, jest mikrokomputer Raspberry Pi.

Raspberry Pi to rodzina komputerów jednopłytkowych opracowana przez fundację o tej samej nazwie, której celem było wspieranie edukacji informatycznej. Od rynkowego debiutu w 2012 roku platforma ta zdobyła ogromne uznanie zarówno w świecie nauki, jak i wśród hobbystów. Obecnie jest ona jednym z najpopularniejszych rozwiązań stosowanych w projektach z zakresu Internetu Rzeczy (IoT).
Testy narzędzia SpeedTest Tracker przeprowadzane są na modelu Raspberry Pi 5 (8GB). Wybór ten podyktowany jest jego wysoką wydajnością, szerokimi możliwościami konfiguracji oraz optymalnymi parametrami technicznymi dla tego typu zadań.
Zaczynamy
Mikrokomputer powinien mieć już zainstalowany oficjalny system operacyjny Raspberry Pi OS [download] oraz oprogramowanie Docker.
Uwaga: Użyj oficjalnego skryptu instalacyjnego Dockera, który zapewnia pobranie najnowszej wersji zoptymalizowanej pod architekturę ARM:
# Pobierz i uruchom skrypt instalacyjny Dockera
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# Dodaj swojego użytkownika do grupy docker (unikniesz potrzeby używania sudo za każdym razem)
sudo usermod -aG docker $USER
# Uruchom ponownie komputer lub wyloguj się/zaloguj, aby zmiany w grupach zaczęły obowiązywać
po ponownym uruchomieniu przetestuj to:
docker --version
docker run hello-world
Instalacja
Speedtest Tracker działa w kontenerze Docker, co pozwala na jego konfigurację na dowolnym systemie obsługującym konteneryzację. Zespół z LinuxServer.io tworzy obraz kontenera (tutaj znajdziesz więcej szczegółów na temat sposobu jego budowy).
Do naszych celów użyjemy instalacji Docker Compose. Jest to prosta i szybka opcja.
Docker Compose reprezentuje preferowaną metodę wdrażania, ponieważ automatycznie organizuje zarówno kontener aplikacji, jak i instancję bazy danych.
Skonfiguruj swój klucz aplikacji
Będziemy potrzebować klucza aplikacji. Jest on wymagany do szyfrowania. Skopiuj klucz wraz z prefiksem base64: i wklej go jako wartość do APP_KEY. Uruchom następujące polecenie, aby go wygenerować:
echo -n 'base64:'; openssl rand -base64 32;
na przykład:
raspi@raspi:~/speedtest_tracker $ echo -n 'base64:'; openssl rand -base64 32;
base64:Duu3R6xTUjvIMXukcrhrJqI9P4lBXkTAZ5LdRlUok+Y=
Konfiguracja środowiska Docker
Chociaż SQLite zapewnia odpowiednią funkcjonalność dla typowych wdrożeń, aplikacja obsługuje również konwencjonalne opcje RDBMS, w tym MariaDB, MySQL i PostgreSQL.
Utwórz plik docker-compose.yaml:
Wartości PUID i PGID użytkownika można uzyskać, wykonując polecenie id $user w systemie hosta.
services:
speedtest-tracker:
image: lscr.io/linuxserver/speedtest-tracker:latest
restart: unless-stopped
container_name: speedtest-tracker
ports:
- 8080:80
- 8443:443
environment:
- PUID=1000
- PGID=1000
- APP_KEY=base64:UmcouDGUgO[redacted]B22uEpVU=
- DB_CONNECTION=sqlite
- SPEEDTEST_SCHEDULE='*/30 * * * *'
- APP_TIMEZONE=Europe/Warsaw
- DISPLAY_TIMEZON=Europe/Warsaw
- APP_DEBUG=false
volumes:
- /path/to/data/data:/config
# - /path/to-custom-ssl-keys:/config/keys
Aby użyć własnych certyfikatów SSL, nazwij je cert.crt (dla pełnego łańcucha certyfikatów) i cert.key (dla klucza prywatnego), a następnie zamontuj je w /config/keys wewnątrz kontenera.
Zmienne środowiskowe
Skonfiguruj wymagane zmienne środowiskowe PUID, PGID, APP_KEY przed uruchomieniem aplikacji. W moim przypadku dodatkowo skonfigurowałem zmienną SPEEDTEST_SCHEDULE, aby uruchamiać aplikację co pół godziny. Jeśli chcesz uzyskać więcej szczegółów, sprawdź sekcję Zmienne środowiskowe details.
Uruchom kontener:
raspi@raspi:~/speedtest_tracker $ docker compose up -d
Sprawdź, czy kontener został utworzony zgodnie z oczekiwaniami:
raspi@raspi:~/speedtest_tracker $ docker ps | grep linuxserver/speedtest-tracker
4472bdc8aea8 lscr.io/linuxserver/speedtest-tracker:latest "/init" 10 months ago Up 2 months 0.0.0.0:8080->80/tcp, :::8080->80/tcp, 0.0.0.0:8443->443/tcp, :::8443->443/tcp speedtest-tracker
Pierwsze logowanie

Domyślna nazwa użytkownika i hasło są automatycznie tworzone podczas pierwszego uruchomienia kontenera.
Nazwa użytkownika: [email protected]
hasło: password
Użyj tych danych logowania i zaktualizuj domyślne informacje użytkownika po zalogowaniu się do aplikacji.

Podsumowanie
Speedtest Tracker to samoobsługowa aplikacja open-source zaprojektowana do monitorowania wydajności i czasu pracy połączenia internetowego. Działa jako zamiennik porzuconego projektu o tej samej nazwie autorstwa Henry’ego Whitakera, oferując ulepszone UI i zaktualizowany zestaw funkcji.
Cel
Podstawowym celem aplikacji jest pomoc użytkownikom w budowaniu historycznego zapisu prędkości internetu i czasu pracy dostawcy usług internetowych (ISP). Te dane są przydatne do:
- Weryfikacji, czy otrzymujesz prędkości deklarowane przez dostawcę internetowego.
- Identyfikowania wzorców spadków wydajności.
- Posiadania udokumentowanego dowodu problemów z usługą.
Podstawy techniczne
- Framework: Zbudowany przy użyciu Laravel (PHP).
- Silnik: Wykorzystuje Speedtest CLI firmy Ookla® do dokładnych pomiarów.
- Wdrożenie: Zaprojektowany do łatwego wdrożenia za pomocą Dockera.
Kluczowe funkcje
- Automatyczne testowanie: Planuj testy prędkości w określonych odstępach czasu, aby śledzić wydajność w czasie.
- Wizualizacja danych: Panel wyświetlający historię prędkości i metryki wydajności dostawcy internetowego.
- Integracje i powiadomienia: Obsługa różnych integracji danych i systemów powiadomień, które informują, gdy prędkość spadnie poniżej określonego progu.
- Bezpieczeństwo: Zawiera wbudowane uwierzytelnianie, autoryzację i szyfrowanie.
- Obsługa API: Posiada API dla użytkowników, którzy chcą programowo współdziałać ze swoimi danymi testów prędkości.
- Elastyczność bazy danych: Obsługuje wiele sterowników baz danych.
Zostaw komentarz