ゲームをローカル環境にキャッシュする
Published on 2024/01/03Tags
概要
LanCache.NET を導入してゲームをローカル環境にキャッシュすることで、ゲームのインストールを高速化します。
今回は Steam のゲームをキャッシュしますが、他にもさまざまなゲームをキャッシュすることができます。
サポートされているサービスについては、 uklans/cache-domains を参照してください。
前提条件
- ホストマシンで Git が使用できる必要があります。
- ホストマシンで Docker, Docker Compose が使用できる必要があります。
環境
ホストマシン
LanCache.NET を導入してゲームをキャッシュする PC です。
ハードウェア
- CPU: AMD Ryzen 7 5700G
- Memory: 128GB
- Storage: Samsung SSD 970 EVO Plus 2TB
- Network: Anker PowerExpand USB-C & 2.5Gbps イーサネットアダプタ
ソフトウェア
- OS: Ubuntu 22.04.3 LTS
- Docker: version 20.10.24
- Docker Compose: version v2.17.2
- LanCache.NET: lancache-dns, monolithic
クライアントマシン
ゲームをインストールしてプレイする PC です。
ハードウェア
- CPU: AMD Ryzen 7 6800U
- Memory: 32GB
- Storage: WD_Black SN770 2TB
- Network: Planex USB-LAN2500R
ソフトウェア
- OS: Windwos 11 Home (23H2)
- Steam: version 1702079146
導入手順
ホストマシン
公式ドキュメントの The Simplest Method を参考に導入します。
-
次のコマンドで docker-compose を lancache フォルダにダウンロードします。
git clone https://github.com/lancachenet/docker-compose/ lancache
-
lancache フォルダの .env をエディターで開いて編集します。今回は vim で編集します。
cd lancache vim .env
-
More Detail を参考に .env を編集します。
- LANCACHE_IP: LanCache.NET の IP アドレスです。通常はホストマシンの IP アドレスを設定します。
- DNS_BIND_IP: DNSコンテナの IP アドレスです。LANCACHE_IP と同じ値を設定します。
- UPSTREAM_DNS: 上流の DNS サーバーです。複数のアップストリーム DNS サーバーをセミコロン (またはスペース) で区切って設定できます。
- CACHE_ROOT: キャッシュデータを保存する場所です。
- CACHE_DISK_SIZE: キャッシュするボリュームのサイズです。
- TZ: Docker コンテナのタイムゾーンです。日本にする場合は Asia/Tokyo を設定します。
-
次のコマンドで LanCache.NET(lancache-dns, monolithic) を起動します。
sudo docker-compose up -d
LanCache.NET を終了する場合は次のコマンドを実行します。
sudo docker-compose down
ルーター
DNS ポイズニングを行うために lancache-dns の IP アドレスを渡すようにルーターを設定します。
ルーターによって設定方法は異なりますが、多くの場合は LAN 設定から DNS サーバーの IP を変更することができます。
詳細は公式ドキュメントの Configuring your firewall を参照してください。
今回はクライアント側で DNS 設定を変更するためこの手順はスキップします。
クライアントマシン
DNS を lancache-dns の IP アドレスに設定します。
-
設定画面を開きます。
-
サイドメニューの「ネットワークとインターネット」から「イーサーネット」を開きます。
-
「DNS サーバーの割り当て」の
編集
ボタンを押下します。 -
「DNS 設定の編集」を
手動
に変更し次の設定を行います。- IPv4: オンにします。
- 優先 DNS: lancache-dns の IP アドレスに設定します。
検証
Steam で Left 4 Dead 2 (8.5GB) のインストールにかかる時間をキャッシュ前とキャッシュ後で比較します。
テスト結果 | 最大ダウンロード速度 | インストール時間 |
---|---|---|
キャッシュ前 | 11.8 MB/s | 29分30秒 |
キャッシュ後 | 102.6MB/s | 02分05秒 |
キャッシュ後は大幅にインストール時間が短縮されました。
トラブルシューティング
LanCache.NET が起動しない
詳細
次のエラーが発生して起動に失敗します。
st-little@ap-server:~/lancache$ sudo docker-compose up -d
[+] Running 2/3
✔ Network lancache_default Created 0.1s
✔ Container lancache-monolithic-1 Started 0.7s
⠿ Container lancache-dns-1 Starting 0.7s
Error response from daemon: driver failed programming external connectivity on endpoint lancache-dns-1 (4b1ad8818c8767b6bc7d398368294be9e1a1cbd38a2e54ba7d96bdb6396ff446): Error starting userland proxy: listen tcp4 192.168.210.110:53: bind: cannot assign requested address
原因
既にポート 53 が systemd-resolved に使用されています。
st-little@ap-server:~/lancache$ sudo lsof -i :53
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd-r 571 systemd-resolve 13u IPv4 23945 0t0 UDP localhost:domain
systemd-r 571 systemd-resolve 14u IPv4 23946 0t0 TCP localhost:domain (LISTEN)
解決方法
次のコマンドで systemd-resolved を無効にします。
sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved