MirrorProxy:Rustでつくるセルフホスティングパッケージミラープロキシサーバー
MirrorProxy:Rustでつくるセルフホスティングパッケージミラープロキシサーバー
GitHubやDocker/OCI、npm、pip、Homebrew、apt/dnfリポジトリなど主要パッケージソースをまとめてミラーできるRust製セルフホスティングプロキシ。SQLiteベースの管理コンソール付きで企業内ネットワークや開発チームのパッケージキャッシュ・帯域節約に最適。
GitHubで急上昇中の inbjo/MirrorProxy をご紹介します。 スター数 204★ を獲得し、DevTool分野で注目されているツールです。
MirrorProxyとは?マルチレジストリ対応のRust製ミラープロキシ
MirrorProxyはinbjo氏が開発したRust製のセルフホスティングミラープロキシプラットフォームだ。アダプタベースのプロキシコアを採用し、GitHub、Docker/OCI、npm、pip/PyPI、Homebrew、Debian/Ubuntu APT、RHEL系DNF/YUMなど多様なパッケージレジストリに一元対応する。
最大の特徴は、単一のサーバー・クライアントで複数のパッケージエコシステムを透過的にミラーできる点だ。開発者はローカルのパッケージマネージャー設定を少し変えるだけで、以後のすべてのnpm install・pip install・docker pullがMirrorProxy経由のキャッシュから提供される。
サーバーにはReact製の管理コンソールが組み込まれており、アカウント管理・クォータ設定・トラフィック集計・IPアクセス制御をWebUIから操作できる。データはSQLiteで管理されるため、PostgreSQLやMySQL等の外部データベースが不要でセットアップが簡単だ。
こんな人におすすめ:
- エンジニア向け: 企業内ネットワークでパッケージキャッシュサーバーを構築したいインフラ・DevOpsエンジニア。Docker Composeで即デプロイでき、Rustの低リソース動作が魅力
- 非エンジニア向け: プログラミング・サーバー管理の知識が必要なため、インフラエンジニア専用ツールです
主な機能・特徴
マルチレジストリ対応アダプタシステム
MirrorProxyのコアはアダプタパターンで設計されており、各パッケージエコシステムへの対応を独立したアダプタとして実装している。現在対応しているプロキシアダプタには以下が含まれる。
| カテゴリ | 対応レジストリ |
|---|---|
| コンテナ | Docker Hub / OCI互換レジストリ |
| コード管理 | GitHub(アーカイブ・リリース) |
| 言語パッケージ | npm(Node.js)、pip(Python) |
| 開発ツール | Homebrew(macOS/Linux) |
| OSパッケージ | APT(Debian/Ubuntu)、DNF/YUM(RHEL系) |
統合管理WebコンソールとSQLite
ReactベースのWebUI管理コンソールがサーバーに組み込み済みで、別途フロントエンドを用意する必要がない。SQLiteによるデータ永続化は軽量かつポータブルで、バックアップも単一ファイルのコピーで完結する。
クォータ管理機能によりユーザーやIPレンジごとのトラフィック上限を設定でき、特定チームが帯域を占有するような状況も防げる。
オフラインGeoIPとIPアクセス制御
外部APIに依存しないオフラインのip2regionデータベースを使い、IPアドレスから国・地域を高速判定する。これにより地域別のトラフィックレポートや、CIDRレベルでのアクセス制御が完全プライベートに実現できる。
HTTPS自動証明書取得(ACME)
HTTP-01とDNS-01チャレンジによるACME(Let's Encrypt)証明書の自動取得・更新に対応。手動でSSL証明書を管理する必要がなく、本番環境でのHTTPS運用がゼロ設定で実現できる。
使い方・始め方
クライアントのインストール
MirrorProxyクライアントはパッケージマネージャー経由でインストールできる。
# macOS / Linux (Homebrew tap追加が初回のみ必要)
brew tap inbjo/tap
brew install mirrorproxy
# Debian / Ubuntu (APTリポジトリ追加後)
sudo apt install mirrorproxy
# Windows
winget install --id Inbjo.MirrorProxy --exact
サーバーのデプロイ(Docker Compose)
# GitHubからcompose.yamlを取得
curl -L https://raw.githubusercontent.com/inbjo/MirrorProxy/main/compose.yaml -o compose.yaml
# config.example.tomlをコピーして設定
cp config.example.toml config.toml
# サーバー起動
docker compose up -d
起動後はブラウザでhttp://localhost:8080にアクセスし、WebUI管理コンソールからアカウント作成・ミラー設定を行う。
クライアントでサーバーへ接続
# MirrorProxyサーバーを指定してクライアントを初期化
mirrorproxy setup --server https://your-mirror-proxy.example.com
# npm/pipなどのパッケージソースを自動的にMirrorProxy経由へ切り替え
mirrorproxy apply
これ以降、npm installやpip installは自動的にMirrorProxy経由で提供される。
活用事例
企業内開発環境での帯域削減
100名規模の開発チームを持つ企業が、MirrorProxyを社内インフラに導入することで、npmやDockerイメージの取得を全てキャッシュ経由に統一できる。同一パッケージが複数回インストールされる場合(CIビルドなど)に特に効果が大きく、外部向け通信帯域を大幅に削減できる。
CI/CDパイプラインの高速化
GitHub ActionsやGitLab CIのビルドジョブで毎回外部レジストリからパッケージを取得するのは遅く、コストもかかる。MirrorProxyをCI環境と同一ネットワークに置くことで、2回目以降のビルドではキャッシュから高速にパッケージを取得できる。
NexusやArtifactoryとの違い・なぜ今このツールか
パッケージリポジトリ管理ツールとして業界標準とされてきたのはSonatype NexusとJFrog Artifactoryだ。しかし、これらには大きな課題がある。
Nexus RepositoryはJavaで動作し、最低4〜8GBのRAMが必要で、設定の複雑さも高い。無料のOSS版でも多くの機能があるが、初期構築に数時間かかることがある。
Artifactoryはより多機能だが有料版でないと機能が制限され、特にCI/CD連携やHTTPS証明書自動化は有料プラン必須だ。
MirrorProxyの差別化ポイント:
- Rustベースで低メモリ・高スループット(サーバーRAM 512MBでも動作)
- Docker Composeで5分以内にデプロイ完了
- SQLiteのみで依存なし(PostgreSQL/MySQLは不要)
- ACME証明書自動取得で別途certbot等が不要
「軽量・シンプル・マルチレジストリ」という組み合わせは従来のツールになかった位置付けで、中小規模チームや個人プロジェクトでの採用に適している。
こんな人に向いている
インフラエンジニア・SRE
チームのCI/CDパイプラインのビルド時間短縮やネットワーク帯域コスト削減を担うインフラ担当者。Docker Composeでの導入が容易で、既存のnpm ci・pip installコマンドを変更せずにキャッシュ効果を得られる透過的な設計が特に便利だ。
DevOpsエンジニア
GitHub ActionsやGitLab CI等のCIパイプラインを管理するDevOpsエンジニア。セルフホスティングで完全コントロール下に置けるため、外部レジストリへの依存を減らしつつパイプラインの安定性と速度を向上させたい場面に活用できる。
セキュリティ重視の企業担当者
外部パッケージレジストリへの直接アクセスを制限し、社内審査済みパッケージのみを使いたい企業のセキュリティ担当者。IPアクセス制御とクォータ機能を使い、特定のIPレンジからのみアクセスを許可するポリシーを簡単に実施できる。
使う前に知っておきたいこと
SQLiteの規模上限
MirrorProxyはSQLiteをデータストアに使用しているため、同時書き込みが多発する超大規模環境(数千ユーザーが同時アクセスするケース)ではパフォーマンスが限界に達する可能性がある。数十〜数百名規模のチームでは問題ないが、エンタープライズ向けの大規模展開ではNexusやArtifactoryの方が適している。
サポートするアダプタの範囲
現時点でサポートするアダプタはGitHub・Docker/OCI・npm・pip・Homebrew・APT・DNF/YUMが中心だ。Maven(Java)やNuGet(.NET)、Cargo(Rust)など一部の言語固有レジストリは未対応の可能性がある。公式Wikiの「Supported proxy adapters」ページで最新情報を確認することを推奨する。
Rustビルド環境の必要性(ソースからビルドする場合)
DockerイメージまたはHomebrewでインストールする場合はビルド不要だが、ソースコードからビルドする場合はRustツールチェーン(cargo)が必要だ。クライアントCLI、管理コンソールの独自カスタマイズを行う際はcargo build環境を準備する必要がある。
ライセンス
MirrorProxyはMITライセンスで公開されており、商用利用・改変・再配布は自由だ。
関連ツール・おすすめサービス
- DigitalOcean — MirrorProxyのセルフホスティングサーバーとして利用できるシンプルなクラウドDroplets。月額固定料金でコスト予測が立てやすい
- さくらVPS — 国内リージョンでMirrorProxyを運用したい場合に適した国産VPSサービス
まとめ
MirrorProxyはRustの軽量性とシンプルなSQLite管理を組み合わせることで、従来のNexus/Artifactoryでは重すぎた中小規模チームにとっての「ちょうどよいパッケージミラーサーバー」を実現した。
特にCI/CDパイプラインのビルド高速化や社内ネットワークの帯域節約を手軽に実現したいチームにとって、Docker Composeで数分以内にデプロイできる手軽さは大きな魅力だ。マルチレジストリ対応とWebUI管理コンソールを備えながらもシンプルな構成を維持している点で、今後のエコシステム拡大に期待できるツールだ。
この技術を学ぶ
DevTool・インフラ管理に興味を持った方には、UdemyのDevOpsオンラインコースもおすすめです。
- 🎓 DevOps・インフラ関連コース一覧 — セール時(最大90%OFF)を狙うとお得です
関連記事
この記事が役に立ったらシェアしてください