MirrorProxy MirrorProxy contributors
winget install --id=Inbjo.MirrorProxy -e Configure package managers and development tools to use MirrorProxy or supported public mirrors, with safe preview, write, and rollback operations.
winget install --id=Inbjo.MirrorProxy -e Configure package managers and development tools to use MirrorProxy or supported public mirrors, with safe preview, write, and rollback operations.
Official sources unreachable and public mirrors unreliable? Deploy MirrorProxy—one self-hosted gateway for every source your builds depend on.
In restricted networks, official sources are often unreachable or too slow for normal use. Even after finding a public mirror, it may be inaccessible, unstable, or gone without warning—and every tool has a different way to change sources. Developers keep switching configurations while CI builds can stall at any time. The real cost is not just download time, but the time of the entire team.
Instead of continually searching for and maintaining somebody else's mirrors, deploy your own MirrorProxy on a server with reliable upstream connectivity. It brings GitHub, container registries, language packages, developer toolchains, and operating-system repositories behind your domain: one project, one console, and one stable gateway for the mainstream software sources used every day.
MirrorProxy fetches and caches content on demand, so it does not require a full copy of every repository. When one upstream becomes unavailable, it can switch to another automatically. Individuals can stop hunting, benchmarking, and reconfiguring mirrors; teams also gain consistent source settings, access control, quotas, health monitoring, and traffic reporting—turning a patchwork of public mirrors into infrastructure they truly control.
MirrorProxy includes around 30 proxy adapter types and supports additional administrator-defined static operating-system repositories:
| Category | Supported sources and ecosystems |
|---|---|
| Code and release assets | GitHub, GitHub Raw, read-only Git smart HTTP clone |
| Containers and OCI | Docker Hub, GitHub Container Registry, GitLab Container Registry, Quay, Kubernetes Registry, GCR, Microsoft MCR, Elastic Registry, NVIDIA NVCR, Oracle Container Registry, Homebrew OCI |
| JavaScript / Node.js | npm, NVM, Bun through the npm protocol |
| Python | PyPI / pip, Poetry, uv, PDM, Anaconda |
| Rust / Go | crates.io / Cargo, Rustup, Go Modules |
| JVM / .NET | Maven Central, Clojars, NuGet |
| Other language ecosystems | Composer, RubyGems, CPAN, CRAN, Hackage, Julia, LuaRocks, CocoaPods, Pub, OPAM |
| Developer tools and application sources | Homebrew, WinGet, TeX Live, ELPA, Nix, GNU Guix, Flatpak |
| Linux / BSD / operating-system sources | Debian, Ubuntu, Fedora, Arch Linux, Alpine, openSUSE, Void Linux, Gentoo, FreeBSD, Kali, Rocky Linux, AlmaLinux, Manjaro, Raspberry Pi OS, Armbian, openEuler, Anolis OS, Deepin, Linux Mint, Solus, Trisquel, Linux Lite, NetBSD, OpenBSD |
| Specialized systems and tool sources | OpenWrt, Termux, MSYS2, ROS, and administrator-defined static repositories |
Download the included compose.yaml, set an administrator password, and start the service. The named volume keeps the database, cache, and GeoIP data across container upgrades.
MIRRORPROXY_ADMIN_PASSWORD='choose-a-strong-password' docker compose up -d
The console is available at http://localhost:3000/admin when running locally.
Download the server archive for your Linux architecture from the latest release, verify its SHA-256 file, extract it into a durable directory, then copy and adapt the configuration before starting the server:
cp config.example.toml config.toml
./mirrorproxy-server --config ./config.toml serve
For systemd, TLS, reverse proxies, persistent storage, and production settings, see Deployment.
# macOS / Linux
curl -fsSL https://sina.dev/https://raw.githubusercontent.com/inbjo/MirrorProxy/main/scripts/install.sh | sh
# Windows PowerShell
irm https://sina.dev/https://raw.githubusercontent.com/inbjo/MirrorProxy/main/scripts/install.ps1 | iex
The scripts install only the standalone client, select the current platform
release automatically, and verify its SHA-256 checksum. Run mirrorproxy --version
after installation to confirm it is available.
# macOS / Linux
brew install inbjo/tap/mirrorproxy
# Windows (available after the WinGet submission is merged)
winget install --id Inbjo.MirrorProxy --exact
# Debian / Ubuntu: add the signed MirrorProxy APT repository once
curl -fsSL https://raw.githubusercontent.com/inbjo/MirrorProxy/apt/mirrorproxy-archive-keyring.gpg \
| sudo tee /usr/share/keyrings/mirrorproxy-archive-keyring.gpg >/dev/null
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/mirrorproxy-archive-keyring.gpg] https://raw.githubusercontent.com/inbjo/MirrorProxy/apt stable main" \
| sudo tee /etc/apt/sources.list.d/mirrorproxy.list >/dev/null
sudo apt update
sudo apt install mirrorproxy
See Client distribution for details.