【ツール活用|豆知識】ビルドの安定化と高速化を実現!Verdaccioで社内npmプロキシを構築しよう

導入: なぜ今、社内パッケージプロキシが必要なのか

モダンな開発において、npmやDockerなどの外部レジストリへの依存は避けられません。しかし、外部の障害でビルドが止まったり、毎回インターネット経由でパッケージをダウンロードすることでCI/CDの速度が低下したりといった課題に直面したことはないでしょうか。Verdaccioのようなパッケージレジストリ・プロキシを導入することで、パッケージをローカルにキャッシュし、外部障害の影響を最小限に抑えつつ、インストールを劇的に高速化できます。

基礎知識: パッケージレジストリ・プロキシとは

パッケージレジストリ・プロキシとは、npmやPyPIなどの公開パッケージの「中継地点」として機能するサーバーです。

キャッシュサーバーとしての役割: 初回アクセス時に外部からダウンロードしたパッケージをローカルストレージに保存し、2回目以降は社内ネットワーク内から即座に提供します。
プライベートレジストリとしての役割: 社外に公開したくない独自のモジュールを管理し、社内限定で安全に配布することができます。
オフラインビルドへの対応: 一度キャッシュしたパッケージがあれば、外部ネットワークが遮断された環境や制限下でも安定したビルド環境を維持できます。

実装/解決策: DockerでVerdaccioを起動する

VerdaccioはDocker環境があれば数分で構築可能です。以下の設定では、永続化ボリュームを作成し、社内からアクセス可能な状態で起動します。

サンプルプログラム: docker-compose.yml

以下のコードをファイルとして保存し、`docker-compose up -d`を実行するだけで、npmプロキシサーバーが立ち上がります。


version: ‘3’
services:
verdaccio:
image: verdaccio/verdaccio
container_name: verdaccio
ports:

  • “4873:4873” # デフォルトのポート

volumes:

  • ./storage:/verdaccio/storage # パッケージを保存するディレクトリ
  • ./conf:/verdaccio/conf # 設定ファイル用ディレクトリ

restart: always

構築後、クライアント側のnpm設定で以下を実行します
npm config set registry http://<サーバーのIP>:4873/
これでnpm installがプロキシ経由になります

応用・注意点: 現場で運用する際のポイント

1. ストレージの容量管理
キャッシュを無制限に増やすとディスクを圧迫します。`config.yaml`内でキャッシュの有効期限や最大容量を設定し、定期的に不要なキャッシュを削除する運用を検討してください。

2. 認証の管理
社外秘のパッケージを扱う場合は、`htpasswd`などを利用してアカウント認証を必須にすることをお勧めします。誰でもパッケージをプッシュできる状態はセキュリティリスクになるため、初期設定で権限(access, publish)を適切に制御しましょう。

3. セキュリティの脆弱性対策
プロキシサーバー自体が古いバージョンのパッケージ(脆弱性を含むもの)をキャッシュし続ける可能性があります。npmの`audit`コマンドと組み合わせ、定期的にプロジェクト内の脆弱性チェックを行うフローをCIに組み込むのがベストプラクティスです。

Verdaccioを導入することで、開発チーム全体の「ビルドが遅い」「突然パッケージが取得できなくなった」というストレスを解消しましょう。

コメント

タイトルとURLをコピーしました