Speedtest Trackerは、インターネット接続の速度と稼働状態を監視するための自己ホスト型アプリケーションで、Dockerコンテナ上で動作します。インターネット速度の履歴を追跡し、インターネットサービスプロバイダー(ISP)が提供する速度が広告通りであるかを確認できます。Dockerを使用して簡単にデプロイ可能で、ユーザーが接続品質に関する通知を受け取れるように設計されています。
本記事では、[henrywhitaker3/speedtest-tracker]を紹介していましたが、当該アプリケーションの更新が停止してしまい、正常動作しなくなったため、開発継続している[lscr.io/linuxserver/speedtest-tracker]を使用する記事に変更しました。
前提 本記事でのDSM(OS)バージョンは、Synology DSM 7.2 を用いています。
1.speedtest-trackerについて
Speedtest Trackerは、インターネット接続の速度と稼働状態を監視するための自己ホスト型アプリケーションで、Dockerコンテナ上で動作します。
インターネット速度の履歴を追跡し、インターネットサービスプロバイダー(ISP)が提供する速度が広告通りであるかを確認できます。Dockerを使用して簡単にデプロイ可能で、ユーザーが接続品質に関する通知を受け取れるように設計されています。
Speedtest Trackerの主な機能は、インターネット接続の速度テストを定期的に実行し、速度や遅延の履歴を追跡することです。接続のパフォーマンスや安定性をモニタリングし、ISPの提供する速度が期待通りかどうかを確認できます。また、インターネット接続が遅延または停止した場合にアラートを送信する通知機能も備えています。
speedtest-trackerはDocker-HUBにてイメージが公開されていますので、Synology NASにてDocker環境下でインストール・セットアップして回線速度監視を実施してみました。
2.Container Managerパッケージのインストール
Container Managerパッケージがインストールされていなければ、パッケージセンターよりインストールを行います。

3.speedtest-trackerコンテナの構築
Container Managerを用いてspeedtest-tracker環境を構築する手順を紹介します。
speedtest-trackerが動作するときに測定結果を記録するデーターベース領域・その他の格納領域をデータ永続化として準備し、コンテナから参照できるようにする必要があります。
3-1.プロジェクトフォルダの作成
DSMコンソールより[FileStation]を起動し、[Docker]共有フォルダ以下に[speedtest-tracekr]フォルダを作成します。

[speedtest-tracekr]の中に、[config]フォルダの作成と、[docker-compose.yml]ファイルの作成を行います。構成は以下のようになります。
speedtest-tracker/
config/
docker-compose.yml
[docker-compose.yml]ファイルについては、作業用のPCでメモ帳などのエディタで作成して、[FileStation]でアップロードするのが良いと思います。内容は以下の通りです。
version: '3.3'
services:
speedtest-tracker:
image: lscr.io/linuxserver/speedtest-tracker:latest
container_name: speedtest-tracker
environment:
- PUID=1000
- PGID=1000
- DISPLAY_TIMEZONE=Asia/Tokyo
- APP_KEY=*******************************************************
- APP_URL=
- DB_CONNECTION=sqlite
- SPEEDTEST_SCHEDULE=5 */2 * * *
- SPEEDTEST_SERVERS=
volumes:
- ./config:/config:Z,U
ports:
- 8765:80
restart: unless-stopped
上記の中のAPP_KEY(*****で表示している箇所)については、以下のリンクにアクセスし、表示されたAPP_KEYを貼り付けます。
最終的にフォルダ構成は以下のようになります。

3-2.Container Managerのプロジェクト作成
Container Managerの[プロジェクト]>[作成]をクリックし、[プロジェクトを作成]ダイアログにて以下を入力します。
- プロジェクト名:speedtest-tracker
- パス:3.1で作成したプロジェクトフォルダを選択(プロジェクトフォルダを選択すると既存のdocker-compose.ymlがある旨のダイアログが表示されるので、[既存のdocker-compose.ymlを使用してプロジェクトを作成]を選択してOKをクリックします)

入力が終わったら[次へ]をクリックします。
Webポータル設定の画面で、「ウェブポータルをWeb Station経由でセットアップ」にチェックを入れます。
これにより、Web Stationで本Webアプリをコンテンツとして管理することができるようになります。
(なお、ローカル環境だけで本Webアプリを使用するのであれば本設定はなしでもよいです。また、Webポータル設定を行わず、リバースプロキシ設定でインターネット側からの連携を行う方法もあります。後で説明します。)

要約の画面で設定内容が表示されるので、内容確認してから「完了」をクリックします。

[docker-compose.yml]ファイルの内容に従い、コンテナイメージがレジストリからダウンロードされ、speedtest-trackerのコンテナが生成されます。
続いて、WebStationに進んでウェブポータルの設定を行うよう促すダイアログが表示されるので、「OK」をクリックします。

WebStationのウェブサービスポータルをセットアップダイアログに遷移するので、ここで設定を行います。
本設定を行うことにより、ウェブサービスとして外部からアクセスできるようになります。
ホスト名としては、使用しているSynology NASのドメイン名にサブドメインを追加して使用することが、Synology NASの証明書も共用できるのでお勧めです。(ただし、Synlogy NASのドメイン名の証明書がワイルドカード証明書となっていることが前提です)
設定内容を入力したら「作成」をクリックします。

WebStationでWebポータルが設定され、設定したドメイン名で[speedtest-tracker]にアクセスできるようになります。

Conainer Managerに戻ると、[speedtest-tracker]が起動され、正常動作していることがわかります。

4.speedtest-trackerアプリの設定
4-1.ログインアカウントの設定
ブラウザで、ウェブサービスポータルで設定した本アプリのドメイン名をURLに指定することにより、speedtest-trackerのログインダイアログ画面が表示されます。

デフォルトのアカウント名(Email address)が[admin@example.com]で、パスワードが[password]となっていますので、上記を入力して[Sign in]をクリックします。
(なお、デフォルトアカウント、パスワードのままで放置するのは危険なので、速やかに変更する必要があります。)

右上のアイコンから[Profile]画面を呼び出し、名前、Email address、New passwordに本番アカウント名とパスワード設定を行って、[save change]で設定を確定させます。これで、次回からは変更したEmail addressとパスワードでログインすることとなります。
4-2.dashboard画面
再設定したアカウントでログインを行うと、dashboard画面に測定値が表示されます。
測定周期については、[docker-compose.yml]ファイルの環境変数設定
[SPEEDTEST_SCHEDULE=5 */2 * * *]
で設定しており、cronの形式で設定を行います。本設定例では、2時間ごとに、正時から5分ずらしたタイミングで測定しています。

# cronの起動時間設定
* * * * * (起動したい処理)
| | | | |
| | | | |- 曜日
| | | |--- 月
| | |----- 日
| |------- 時
|--------- 分
5.Webポータル設定しない場合
3-2節で、Webポータル設定を行ってWebステーション経由で、ホスト名を割り当ててインターネット側からアクセスする設定を行いましたが、ローカル環境でのみアクセスを行い、インターネット側から本アプリにアクセスする必要がないのであれば、Webポータル設定で「ウェブポータルをWebStation経由でセットアップ」のチェックを行わずにコンテナプロジェクトの作成を行います。

この場合、WebStationとの連携処理は行われずに、Container Manager上でコンテナプロジェクトが作成されます。

speedtest-trackerアプリにアクセスするには、ブラウザで[自分のNASのIPアドレス:8765]をURLに指定することにより、speedtest-trackerのログイン画面が表示されます。
また、やはりインターネット側からのアクセスができるようにしたいとなった場合、最初からコンテナプロジェクトの生成をやり直しする以外に、リバースプロキシ設定を追加することにより外部アクセスのパスを追加することも可能です。
詳細な設定方法については以下のページリンクを参照してください。
6.まとめ
Synology NASでDocker環境下にspeedtest-trackerをインストール・セットアップして回線速度監視を行った事例について紹介しました。
参考までに、我が家のインターネット環境で約1週間測定を行った結果としては、以下のようなものでした。(測定サーバ:21569 i3D.net)
- Ping:10.7ms(average) 18.5ms(maximum)10.1ms(minimum)
- Download:337.9Mbit/s(average) 644.0Mbit/s(maximum)121.8Mbit/s(minimum)
- Upload:342.0Mbit/s(average) 476.2Mbit/s(maximum)132.2Mbit/s(minimum)
我が家の回線はso-net光プラス(フレッツ光コラボ)ですが、「みんなのネット回線速度」というサイトで紹介されている平均速度よりは上回っており、まあまあ優秀なのではと思いました。
また、自動的に常時測定が行われているので、測定結果のトレンドが確認できるかと思います。
以上、最後まで記事を読んでいただき、ありがとうございました。