ホーム テクノロジー プライバシー 非公開: Raspberry PI と apt-cacher-ng を使用して APT プロキシを作成するにはどうすればよいですか?

Raspberry PI と apt-cacher-ng を使用して APT プロキシを作成するにはどうすればよいですか?

インターネットが遅い場所に住んで働いていて、多数の Debian や Ubuntu システムを更新する必要がある場合、この apt プロキシを使用すると、作業がはるかに簡単かつ迅速になります。

APT は、Debian および Ubuntu Linux ディストリビューションがソフトウェアのインストールと更新に使用するプログラムです。すぐに使える設定では、 apt を使用してプログラムをインストールする場合、たとえば次のようになります。

 sudo apt install inkscape

APT は配布リポジトリ サーバーからソフトウェア アーカイブをダウンロードしてインストールします。これは、ソフトウェア パッケージが小さく、ダウンロードする必要があるファイルが少数で、インターネット接続が高速な場合に最適です。

ただし、インストールするソフトウェアが多数あり、オフィスにすべて更新が必要なマシンがたくさんあり、インターネット接続が遅い場合は、すべてをダウンロードしてすべてのマシンにインストールするのに時間がかかることがあります。

プロキシ サーバー、特に apt-cacher-ng のようなキャッシュ プロキシは、更新しようとしているコンピューターと、ダウンロードしているソフトウェアを格納するリポジトリ サーバーの間に配置されるプログラムです。更新中のマシンはリポジトリではなくプロキシ サーバーにソフトウェアを要求し、プロキシはその要求をリポジトリに転送し、ソフトウェアをダウンロードして更新マシンに返します。

賢い部分は、プロキシがダウンロードしたすべてのソフトウェア ファイルのコピーを保持することです。ローカル ネットワーク上の別のマシンが同じファイルをダウンロードしようとすると、つまり、同じソフトウェアをインストールまたは更新したい場合、プロキシにはすでにコピーがあり、ダウンロードすることなく要求側のマシンに渡すことができます。

最初のダウンロードの後、それ以降のダウンロードはすべてローカル ネットワークの速度で高速に行われます。

Raspberry PI と apt-cacher-ng を使用して APT プロキシを作成するにはどうすればよいですか?
Raspberry PI と apt-cacher-ng を使用して APT プロキシを作成するにはどうすればよいですか?

要件

このガイドを完了するには、次のものが必要です。

  • Raspberry Pi に接続する画面とキーボード。 Raspberry Pi に SSH 接続できる場合、これらはオプションです。
  • Raspberry Pi 上の非 root の sudo が有効なユーザー。
  • ローカル ネットワーク上の Debian または Ubuntu システム。

これらの要件をすべて満たしたら、Raspberry PI のターミナルに sudo ユーザーとしてログインし、次のセクションに進みます。

Raspberry PI と apt-cacher-ng を使用して APT プロキシを作成するにはどうすればよいですか?
Raspberry PI と apt-cacher-ng を使用して APT プロキシを作成するにはどうすればよいですか?

apt-cacher-ng のインストール

Linux に新しいパッケージをインストールする前に、システムのアップデートを実行することをお勧めします。これにより、配布リポジトリで利用可能なものと同じバージョンのパッケージがシステムで実行され、パッケージ バージョンのローカル リストが最新であることが保証されます。これを行うと、 apt-cacher-ng のインストール中にエラーが発生しなくなります。

次のコマンドはシステムを更新します。

 $ sudo apt update
$ sudo apt upgrade

Raspberry PI が最新になったので、 apt-cacher-ng をインストールします。

 $ sudo apt install apt-cacher-ng

インストーラーは、 apt-cacher-ng を通じて HTTPS トンネルを有効にするかどうかを尋ねます。この質問には「いいえ」と答える必要があります。トンネルを必要とする代わりに、 apt-cacher-ng を介して HTTPS 接続をプロキシするように APT を構成します。さらに、必要に応じて、後で apt-cacher-ng 構成ファイル内のこれらのオプションを変更できます。

最新のソフトウェア規約に従って、 apt-cacher-ng をインストールすると systemd サービス ファイルが作成され、有効になります。これは、 apt-cacher-ng 起動時に自動的に開始され、通常の systemd サービス コマンドを使用して apt-cacher-ng 管理することもできることを意味します。

 $ sudo systemctl start apt-cacher-ng.service
$ sudo systemctl stop apt-cacher-ng.service
$ sudo systemctl restart apt-cacher-ng.service

apt-cacher-ng 現在、ポート 3142 でリッスンするシステム デーモンとして実行されており、 apt からの接続を受け入れる準備ができています。

Raspberry PI と apt-cacher-ng を使用して APT プロキシを作成するにはどうすればよいですか?
Raspberry PI と apt-cacher-ng を使用して APT プロキシを作成するにはどうすればよいですか?

Raspberry PI での apt の構成

apt-cacher-ng プロキシを使用するように構成する最初のシステムは、Raspberry PI 上で apt になります。 apt-cacher-ng プロキシを使用するように apt を設定する方法は、 apt のソース ファイル内の URL を書き直すことです。ソース ファイルには、ディストリビューションのソフトウェアをダウンロードできるリポジトリの URL のリストが含まれています。

Raspbian のメイン ソース ファイルは /etc/apt/sources.list にあり、新規インストールでは次のようになります。

 deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
# deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi

ここで唯一のアクティブな (コメントされていない) 行は最初の行です。

 deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi

この行を変更する必要があるため、テキスト エディタでファイルを開きます。ここでは nano を使用します。

 $ sudo nano /etc/apt/sources.list

最初の行を次のように変更します。

 deb http://127.0.0.1:3142/raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi

ここで行ったのは、URL に 127.0.0.1:3142 を挿入することでした。

IP アドレス 127.0.0.1 常にローカル コンピュータの IP であり、「localhost」と呼ばれることがよくあります。 :3142 部分はポートを示します。

CTRL+o ENTER CTRL+x を押して、 nano を保存して終了します。

次に、 /etc/apt/sources.list.d/raspi.list にあるソース ファイルに同じ変更を加える必要があります。

apt apt-cacher-ng をテストする準備ができました。

Raspberry PI と apt-cacher-ng を使用して APT プロキシを作成するにはどうすればよいですか?
Raspberry PI と apt-cacher-ng を使用して APT プロキシを作成するにはどうすればよいですか?

apt-cacher-ng を使用した apt のテスト

apt を実行すると、ダウンロードしたファイルのコピーがキャッシュされます。 apt これを行うのは、不必要なダウンロードを行わないことと、インターネットが存在しない場合にパッケージを再インストールする必要がある場合に備えて、インストール アーカイブのローカル コピーを保存するためです。

このローカル キャッシュは、リポジトリが変更されていない場合、 apt update または apt upgrade を実行するときに apt プロキシに接続しないことを意味します。したがって、プロキシをテストするには、 apt キャッシュを手動でクリアする必要があります。次のコマンドは、 apt のキャッシュされたパッケージをすべてクリアします。

 $ sudo rm -rf /var/lib/apt/lists/
$ sudo rm -rf /var/cache/apt/*

次に、アップデートを実行してエラーを確認して、 apt をテストします。

 $ sudo apt update

次のような出力が数行表示されるはずです。

 Get:1 http://127.0.0.1:3142/raspbian.raspberrypi.org/raspbian buster InRelease [15.0 kB]

http://127.0.0.1:3142/ で始まる URL は、 apt apt-cacher-ng から更新ファイルを受信して​​いることを示します。

次のコマンドを実行して、 apt-cacher-ng ログ ファイルでエラーを監視することもできます。

 $ tail -f /var/log/apt-cacher-ng/apt-cacher.log

2番目のターミナルで。エラーが発生しなかった場合は、ローカル ネットワーク上で Debian または Ubuntu システムの構成に進むことができます。

Raspberry PI と apt-cacher-ng を使用して APT プロキシを作成するにはどうすればよいですか?
Raspberry PI と apt-cacher-ng を使用して APT プロキシを作成するにはどうすればよいですか?

apt-cacher-ng を使用するための Ubuntu または Debian システムの構成

apt-cacher-ng プロキシの恩恵を受けるローカル ネットワーク上の Debian または Ubuntu システムには、追加のソフトウェアをインストールする必要はありません。必要なのは、リポジトリに直接アクセスするのではなく apt-cacher-ng からすべての更新を収集するようにソース ファイルを書き直すことだけです。

ソース ファイルに加える必要がある変更は、 127.0.0.1 の代わりに Raspberry PI の IP アドレスを使用する必要がある点を除いて、Raspberry PI 上のソースに行った編集とまったく同じです。

これは、まず Raspberry Pi の IP アドレスを取得する必要があることを意味します。 Raspberry PI の IP アドレスを取得する最も簡単な方法は、Raspberry PI のターミナルで次のコマンドを実行することです。

 $ hostname -I

これにより、Raspberry PI が持つ IP アドレスが出力されます。最初の IPv4 IP アドレスを使用します。ここでは、例としてアドレス 192.168.0.2 を使用します。 Raspberry PI の IP アドレスを置き換える必要があります。

クライアント マシンに戻り、テキスト エディタを使用してメイン ソース ファイルを開きます。ここでは nano を使用します。

 $ sudo nano /etc/apt/sources.list

このファイルには、Raspberry PI の /etc/apt/sources.list と同じ形式の行が含まれます。 Debian Buster インストールの行の例を次に示します。

 deb http://ftp.debian.org/debian buster main

Raspberry PI の IP を使用して、これらの行を次のように編集する必要があります。例:

 deb http://192.168.0.2:3142/ftp.debian.org/debian buster main

/etc/apt/sources.list 内のすべての行と、 /etc/apt/sources.list.d/ の下にあるその他のソース ファイルを編集します。次に、テストのためにローカルにキャッシュされたファイルをすべて削除します。

 $ sudo rm -rf /var/lib/apt/lists/*
$ sudo rm -rf /var/cache/apt/*

システムを再度更新します。

 $ sudo apt update
$ sudo apt upgrade

apt からの出力には、プロキシの IP を含む次のような行が表示され、更新ファイルが apt-cacher-ng プロキシからのものであることが示されます。

 Hit:1 http://192.168.0.2:3142/ftp.debian.org/debian buster InRelease

これで、このマシンは新しい apt プロキシを利用するように完全に構​​成されました。今後このマシンに追加する新しいソース ファイルには、ディストリビューションのアップグレードのために追加される新しい行も含め、編集する必要があります。

HTTPS 経由の APT

これまで見てきたソース ファイルはすべて HTTP 接続を使用していました。インストール アーカイブには悪意のある改ざんを阻止する内部暗号化署名が組み込まれているため、これは Debian と Ubuntu による意図的な設計上の決定です。したがって、HTTPS によってセキュリティが大幅に強化されるわけではありませんが、地理的に多様なミラーを多数持つことによるエンジニアリングの負担は大幅に増加します。

ただし、HTTPS を使用するといくつかの利点があるため、一部の非公式リポジトリでは HTTPS が使用されます。 apt-cacher-ng HTTPS リポジトリを処理する 2 つの方法をサポートしています。

1 つ目は、クライアントからリポジトリ サーバーに接続を直接渡すことです。これにより、パッケージが apt-cacher-ng によってキャッシュされなくなるという残念な結果が生じます。このモードで apt-cacher-ng を実行する場合は、テキスト エディターで /etc/apt-cacher-ng/acng.conf を開きます。

 $ sudo nano /etc/apt-cacher-ng/acng.conf

そして、次の行を追加します。

 PassThroughPattern: .*

これにより、HTTPS 接続がクライアントからリポジトリにパススルーできるように apt-cacher-ng が構成されます。

2 番目の方法は、クライアントが HTTP 経由で apt-cacher-ng に接続するが、 apt-cacher-ng HTTPS 経由でリポジトリに接続するように、クライアントのソース ファイル内のリポジトリ行を変更することです。パッケージは HTTPS 経由で apt-cacher-ng にダウンロードされ、その後 HTTP 経由でクライアント マシンに送信されます。 apt-cacher-ng パッケージをキャッシュできるため、HTTPS の利点を失うことはありません。

次のソース行は、HTTPS 経由で Docker リポジトリにアクセスするためのものです。

 deb [arch=amd64] https://download.docker.com/linux/debian buster stable

HTTP 行を編集したときに、URL に 192.168.0.2:3142 を追加しました。 HTTPS 行を編集するときは、 192.168.0.2:3142/HTTPS/// を追加する必要があります。例:

 deb [arch=amd64] http://192.168.1.67:3142/HTTPS///download.docker.com/linux/debian buster stable

これで、クライアント マシンは HTTP 経由で apt-cacher-ng からパッケージをリクエストし、 apt-cacher-ng HTTPS 経由で Docker からパッケージをダウンロードしてキャッシュします。

apt-cacher-ng の管理

ローカル ネットワーク上で apt-cacher-ng 管理するために Web GUI を使用できます。この GUI にアクセスするには、ブラウザで次の場所を指定する必要があります。

 http://<Proxy IP>:3142/acng-report.html

ローカル ネットワーク IP の例 192.168.0.2 を置き換えると、次のようになります。

 http://192.168.0.2:3142/acng-report.html

GUI の最初の最も重要なセクション「転送統計」では、リポジトリからダウンロードされたデータ量とキャッシュから提供されたデータ量に関する情報が提供されます。次の図は、GUI のこのセクションを示しています。

「キャッシュ効率」セクションでは、 apt-cacher-ng がキャッシュから提供したファイルの数とキャッシュをバイパスしたファイルの数を示します。 「ヒット」はプロキシがキャッシュから提供したファイルを示し、「ミス」はプロキシ マシンがリポジトリからダウンロードしてキャッシュに追加したファイルを示します。

キャッシュの管理

apt-cacher-ng がダウンロードしてローカル ネットワーク上のクライアント マシンに提供するファイルは、開発者が新しいバージョンをリポジトリに追加すると古くなります。この問題が発生した場合、これらの古い apt-cacher-ng 不要になり、ドライブ上のスペースを占有するため、キャッシュから削除する必要があります。 Raspberry PI はキャッシュを確認し、古いファイルを自動的に削除します。

apt-cacher-ng をインストールすると、次の場所に cron ファイルもインストールされます。

 /etc/cron.daily/apt-cacher-ng

これは毎日 cron によって実行され、キャッシュがクリアされます。

キャッシュを手動で確認してクリアしたい場合は、Web GUI にログインし、「スキャンの開始および/または有効期限切れ」とマークされたボタンをクリックする必要があります。通常、これを実行する必要はありませんが、急速に更新されるリポジトリから更新する場合は、実行する必要がある場合があります。

これで、オフィスや自宅での大規模な繰り返しのシステム アップデートによるネットワークの負担を軽減する、効率的な apt なプロキシが手に入りました。

Raspberry Pi の探索に興味がある場合は、 このオンライン コースをチェックしてください

「 Raspberry PI と apt-cacher-ng を使用して APT プロキシを作成するにはどうすればよいですか?」についてわかりやすく解説!絶対に観るべきベスト2動画

ラズベリーパイ Pico で使えるパーツ!
ラズベリーパイ用高画質カメラがやってきたぞ!HQ Camera+望遠レンズで月を撮ったり、色々なレンズを試してみました