Ubuntu で apt-cacher-ng を導入しパッケージキャッシュサーバーを構築する

【概要】この記事では、Ubuntu環境において、aptパッケージのキャッシュサーバーソフトウェア「apt-cacher-ng」を導入する手順を解説します。apt-cacher-ngを利用することで、複数台のUbuntuマシンが存在する環境において、aptパッケージダウンロード時のネットワーク通信量を削減できます。本記事では、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 です。既定のまま利用できますが、次の項目は把握しておきます。

設定ファイルを編集した場合は、次のコマンドでサービスを再起動します。

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.confAdminAuth にユーザー名とパスワードを AdminAuth: ユーザー名:パスワード の形式で設定しておく必要があります。

キャッシュが利用されているかは、クライアントで sudo apt update や パッケージのインストールを2回行い、2回目のダウンロード時間や上記ページの統計値の変化で確認できます。