Ubuntu で apt-cacher-ng を導入しパッケージキャッシュサーバーを構築する
はじめに
apt-cacher-ng は、aptがダウンロードしたパッケージファイルをサーバー上に保存し、次に同じパッケージが要求されたときにインターネットへ取りに行かずに応答するキャッシュプロキシです。同一のパッケージを複数のマシンが取得する環境で、外部への通信量が減ります。
この記事の手順は、管理者権限 (sudo) を持つユーザーで実行します。ファイアウォールとして UFW (Uncomplicated Firewall) が有効になっている環境を想定しています。
apt-cacher-ng のインストール
パッケージリストを更新します。
# パッケージリストの情報を更新
sudo apt update
apt-cacher-ng パッケージをインストールします。-y オプションを付けると、確認プロンプトなしでインストールが実行されます。
sudo apt -y install apt-cacher-ng
インストール後、サービスは自動的に起動します。起動状態を確認します。
systemctl status apt-cacher-ng
active (running) と表示されれば動作しています。
サーバーの設定ファイルとキャッシュの保存先
設定ファイルは /etc/apt-cacher-ng/acng.conf です。既定のまま利用できますが、次の項目は把握しておきます。
Port: 3142: 待ち受けるTCPポート番号。CacheDir: /var/cache/apt-cacher-ng: キャッシュファイルの保存先。ここの空き容量が消費されるため、十分な空き容量のあるパーティションを指定します。BindAddress: 待ち受けるアドレス。既定では全てのインタフェースで待ち受けます。
設定ファイルを編集した場合は、次のコマンドでサービスを再起動します。
sudo systemctl restart apt-cacher-ng
ファイアウォール設定 (UFW)
apt-cacher-ng は、既定でTCPポート 3142 でクライアントからの接続を待ち受けます。UFW を使用している場合、このポートへのアクセスを許可します。
sudo ufw allow 3142/tcp
これにより、他のマシン(クライアント)からこのサーバー上の apt-cacher-ng サービスへ接続できるようになります。sudo ufw allow 3142 のようにポート番号のみを指定するとTCPとUDPの両方が許可されます。aptの通信はTCPのみを使うため、上記のように /tcp を付けて指定します。
設定内容は次のコマンドで確認できます。
sudo ufw status
クライアントの設定
apt-cacher-ng サーバーを利用するには、キャッシュを利用したいクライアント側のUbuntuマシンで設定が必要です。/etc/apt/apt.conf.d/ ディレクトリ内に、プロキシ設定ファイル(例: 02proxy)を新規に作成し、以下の内容を記述します。
Acquire::http { Proxy "http://<apt-cacher-ngサーバーのIPアドレス>:3142"; };
<apt-cacher-ngサーバーのIPアドレス> の部分は、apt-cacher-ng をインストールしたサーバーの実際のIPアドレスまたは名前解決可能なホスト名に置き換えます。
この設定を行った後、クライアントマシンで sudo apt update などを実行すると、apt-cacher-ng サーバーを経由してパッケージ情報やパッケージファイルがダウンロードされます。
HTTPS のリポジトリについて
上記の設定が効くのは http:// で始まるリポジトリです。https:// で始まるリポジトリは通信内容が暗号化されており、そのままではキャッシュされません。HTTPSのリポジトリをプロキシを介さず直接取得させる場合は、同じ設定ファイルに次の行を追加します。
Acquire::https { Proxy "DIRECT"; };
Ubuntu の標準リポジトリの URL は既定で http://archive.ubuntu.com/ubuntu であり、この場合はキャッシュの対象になります。リポジトリの URL は /etc/apt/sources.list.d/ubuntu.sources(Ubuntu 24.04 以降)または /etc/apt/sources.list で確認できます。
動作確認と管理
apt-cacher-ng の動作状況やキャッシュの状況を確認するには、Webブラウザから以下のURLにアクセスします。
http://<apt-cacher-ngサーバーのIPアドレス>:3142/acng-report.html
この管理ページでは、転送量やキャッシュから応答した割合などの統計情報を確認できます。ページ上のキャッシュ整理などの操作を行うには、/etc/apt-cacher-ng/acng.conf の AdminAuth にユーザー名とパスワードを AdminAuth: ユーザー名:パスワード の形式で設定しておく必要があります。
キャッシュが利用されているかは、クライアントで sudo apt update や パッケージのインストールを2回行い、2回目のダウンロード時間や上記ページの統計値の変化で確認できます。