LibreSpeedとDockerでプライベートなスピードテストサーバーを構築する

HomeLab tutorial - IT technology blog
HomeLab tutorial - IT technology blog

なぜHomeLabにローカルのスピードテストが必要なのか

映画のクライマックスでJellyfinのストリーミングがバッファリングを始めたり、TrueNASサーバーへの50GBのバックアップがカタツムリのような速度に感じられたりしたことは誰にでもあるでしょう。多くのユーザーはすぐにSpeedtest.netを確認しますが、それはインターネットへの経路を測定しているに過ぎません。安価なイーサネットケーブルが1Gbpsリンクのボトルネックになっていたり、Wi-Fiアクセスポイントがオーバーヒートしていたりする場合、外部テストでは何も分かりません。

LibreSpeedはこのギャップを埋めてくれます。FlashやJavaの肥大化を排除した軽量なオープンソースユーティリティです. Dockerで実行することでポータビリティが高まり、管理も非常に簡単になります。私の経験上、これはHomeLabの基盤となるツールです。ラック内の他のすべてのサービスのトラブルシューティングに役立つ「真実の基準(グランドトゥルース)」を提供してくれます。

クイックスタート:60秒でデプロイ

遅延が発生している接続を今すぐ診断する必要がある場合は、コマンド1つでコンテナを起動できます。LinuxServer.ioがメンテナンスしているイメージの使用をお勧めします。これらは定期的に更新され、安全であり、汎用的な代替イメージよりもユーザー権限の処理がはるかに優れています。

docker run -d \
  --name=librespeed \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Asia/Tokyo \
  -p 8080:80 \
  --restart unless-stopped \
  lscr.io/linuxserver/librespeed:latest

コンテナが起動したら、ブラウザで http://[サーバーのIPアドレス]:8080 にアクセスしてください。広告のないクリーンなインターフェースが表示されます。「Start」を押すと、すぐに内部帯域幅の限界を確認できます。非常にシンプルです。

より良い方法:Docker Composeでのセットアップ

ワンライナーはテストには最適ですが、長期的な運用にはDocker Composeをお勧めします。設定をYAMLファイルに保存できるため、後でバックアップや新しいサーバーへの移行が簡単になります。まず、プロジェクトディレクトリと docker-compose.yml ファイルを作成します。

mkdir librespeed && cd librespeed
nano docker-compose.yml

以下の設定をファイルに貼り付けます:

services:
  librespeed:
    image: lscr.io/linuxserver/librespeed:latest
    container_name: librespeed
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Tokyo
      - PASSWORD=安全なパスワード
    volumes:
      - ./config:/config
    ports:
      - 8080:80
    restart: unless-stopped

スタックを起動します:

docker compose up -d

パラメータの解説

  • PUID/PGID: これらの変数は、コンテナ内のユーザーをホストのユーザーにマッピングします。これにより、コンテナが /config フォルダに書き込もうとした時の権限エラーを防ぎます。
  • Volumes: configディレクトリをマッピングすることで、カスタムCSSやテレメトリデータを永続的に保存できます。これがないと、コンテナを削除したときにデータが消えてしまいます。
  • Ports: ここでは8080番ポートを使用しました。これは、PortainerやNginxなど、先に80番ポートを使用しがちな一般的なツールとの衝突を避けるためです。

高度な使い方:パフォーマンスの経時変化を追跡する

単発のスピードテストはあくまでスナップショットに過ぎません。全体像を把握するには、テレメトリ(遠隔測定)機能が必要です。この機能はすべてのテスト結果をデータベースに保存するため、子供たちがゲームを始めたときや、重いバックアップを実行しているときにネットワークが劣化するかどうかを確認できます。

テレメトリの有効化

LinuxServer’sのイメージには、SQLiteデータベースが組み込まれています。これを有効にするには、Composeファイルに以下の環境変数を追加してコンテナを再起動します:

    environment:
      - TELEMETRY=true
      - PASSWORD=マイパスワード # 統計ページを保護します

http://[サーバーのIPアドレス]:8080/results/stats.php で履歴を確認できます。これはパターンの特定に非常に役立ちます。例えば、Wi-Fiルーターの近くで電子レンジを使っている間だけ、スループットが200Mbps低下することに気づくかもしれません。

正確なベンチマークのためのプロのヒント

自前でホストしたテストが「遅い」という不満をよく耳にします。多くの場合、ボトルネックはネットワークではなく、テスト方法にあります。以下の4つのポイントを念頭に置いてください:

1. ブラウザのCPU負荷に注意

LibreSpeedはJavaScriptで動作します。高速ではありますが、10Gbpsの接続をテストすると、ネットワークの限界に達する前にノートPCのCPUが限界に達することがあります。クライアントマシンのサーマルスロットリングが原因で、1Gbpsのテストが600Mbps程度にしかならないケースを見てきました。

2. 目的地だけでなく、経路をテストする

メインのワークステーションからテストするだけでは不十分です。基準となる有線接続のPC、Wi-Fiのデッドゾーンを見つけるための地下室のスマートフォン、暗号化のオーバーヘッドを測定するためのVPN経由のノートPCなど、複数の地点からテストを実行してください。

3. ローカルテストではリバースプロキシを避ける

Nginx Proxy ManagerやTraefikを使用している場合は、内部テストではそれらをバイパスするようにしてください。プロキシは処理レイヤーを追加するため、遅延が発生する可能性があります。最も正確な生データを得るには、常にサーバーのローカルIPアドレスに直接接続してください。

4. ハードウェアの限界を知る

ハードウェアは重要です。Raspberry Pi 3でDockerを実行している場合、1Gbpsが出ることはありません。Pi 3のイーサネットポートはUSBポートとバスを共有しているため、約300Mbpsが上限です。Cat6ケーブルを交換し始める前に、必ずホストの物理スペックを確認してください。

ネットワークのトラブルシューティングから推測を排除し、確かなデータを提供してくれます。一度稼働させれば、ルーターの設定を微調整したり、アクセスポイントを移動したりするたびに、このツールを使っている自分に気づくはずです。

Share: