Mirava is a curated list of Iranian package mirrors, providing reliable and fast access to essential software resources within Iran.
- Project Overview
- Project Features
- Official Mirrors in Iran
- Global & Official Mirrors
- Usage
- What Mirava Does Now
- Changes in This Update
- How to Contribute
- Contact Info
English (Primary) · فارسی · العربية · Русский · 简体中文
Mirava is a comprehensive and fast collection of public software mirrors and package repositories hosted inside Iran.
The goal of this project is to provide easy, fast, and reliable access to up-to-date software packages for Iranian developers, companies, and users.
Especially under conditions such as international internet restrictions, national network mode, or foreign connectivity outages, Mirava helps ensure continuity, stability, and high-speed access to essential resources.
This repository maintains an up-to-date list of trusted domestic mirrors for widely used open-source projects and package managers.
- A curated and frequently updated list of trusted mirrors inside Iran
- Bash script to check availability and health of each mirror
- Compatible with synchronization tools such as
rsyncandwget - Lightweight and extensible data structure using YAML
- Automated nightly checks (CI-friendly)
- Reusable in other projects, operating systems, and internal servers
| Mirror (Link) | Description | Covered Packages |
|---|---|---|
| shatel.ir | Ubuntu mirror | Ubuntu, Debian, Kali repositories and installers |
| kubarcloud.com | Kubar internal mirror with support | Linux kernel sources and various open-source archives |
| repo-portal.ito.gov.ir | Maintained by Iran Information Technology Organization | CentOS, Fedora, Rocky, Python, npm, Yarn, and more |
| jamko.ir | Documentation and config examples | Maven, Gradle, Android SDK, APT, RPM, NuGet, Yarn, Composer, pip |
| runflare.com | Daily auto-updated with simple guides | Composer/Packagist, PyPI, npm, Node.js |
| hub.hamdocker.ir | Docker registry | Docker Registry |
| repo.iut.ac.ir | Comprehensive mirror by Isfahan University of Technology | Debian, Ubuntu, Mint, Arch, Manjaro, Alpine, Rocky, Fedora, OpenSUSE, OpenBSD, CTAN |
| maven.myket.ir | Android-focused Maven mirror | Maven Central, Google Maven, JitPack |
| arvancloud.ir | High-speed mirrors hosted on ArvanCloud | Debian, Ubuntu, CentOS, Alpine, Arch, OpenSUSE, Manjaro |
| iranserver.com | High-speed mirrors by IranServer | Debian, Ubuntu, CentOS |
| docker.mobinhost.com | Docker registry | Docker Registry |
| mobinhost.com | Comprehensive GNU/Linux mirrors | FreeBSD, AlmaLinux, Alpine, Arch, Debian, EPEL, Manjaro, MariaDB, MongoDB, Ubuntu, Zabbix |
| arvancloud.ir | Docker mirror | Docker Registry |
| focker.ir | Docker mirror | Docker Registry |
| liara.ir | Mirrors with documentation and config examples | Fedora, Alpine, OpenSUSE, Arch, Manjaro, CentOS, Ubuntu, Debian, Rocky, PyPI, NPM, Go, Composer, NuGet, Docker images Registry, Quay, Github, Microsoft, K8S |
| en-mirror.ir | Gradle and Android libraries mirror | Google, Maven Central, JitPack |
| docker.kernel.ir | Docker registry | Docker Registry |
| terraform.peaker.info | Official Terraform proxy | Terraform |
| afranet.com | GNU/Linux distributions mirror | Debian, Ubuntu, CentOS |
| ubuntu.pishgaman.net | Ubuntu mirror | Ubuntu |
| pardisco.co | GNU/Linux & programming package mirrors | Ubuntu, Debian, Alpine, PyPI, NPM, Go, NuGet, Docker, OmniOS |
| cran.um.ac.ir | R packages mirror | CRAN |
| ir.archive.ubuntu.com | Official Ubuntu mirror | Ubuntu |
| 0-1.cloud | Multi-distribution mirror | AlmaLinux, Alpine, Arch, Debian, Fedora, FreeBSD, Ubuntu, Windows |
| manageit.ir | Ubuntu mirror | Ubuntu |
| aminidc.com | GNU/Linux & Windows Server mirrors | Debian, RHEL, Rocky, Ubuntu, Windows Server |
| kimiahost.com | Ubuntu mirror | Ubuntu |
| digitalvps.ir | Ubuntu mirror | Ubuntu |
| ir.ubuntu.sindad.cloud | Ubuntu mirror | Ubuntu |
| ir.centos.sindad.cloud | CentOS mirror | CentOS |
| ir.epel.sindad.cloud | EPEL mirror | EPEL |
| faraso.org | CentOS, EPEL, Java & Chrome packages | CentOS, EPEL, Java Runtime, Java Dev |
| chat.shhh.ir | DeltaChat mirror | DeltaChat |
| atlantiscloud.ir | Docker, Ubuntu, and NPM mirrors | Ubuntu, Docker Registry, NPM |
| iran.chabokan.net | Programming package services | NPM, Python, PHP, Docker, NuGet |
| repo.abrha.net | GNU/Linux OS mirrors | Ubuntu, AlmaLinux, Debian, EPEL, Proxmox |
| parsdev.com | GNU/Linux distributions mirror | Ubuntu, AlmaLinux, Debian |
| linuxmirrors.ir | GNU/Linux distributions mirror | Debian, Ubuntu, Fedora, Rocky, Oracle Linux |
| kargadan.ir | High-Speed Package Mirror for Iranian Developers | NuGet, PyPI, Yarn, Docker Registry, MCR, Maven/Gradle, Go Proxy, Composer, |
| hyperclouds.ir | Hyperclouds Mirrors | Cargo, Ubuntu, Alpine, Debian, RubyGems, Go Proxy, PyPI, Docker Registry |
| gitdl.theazizi.ir | A tool designed to bypass GitHub download restrictions for releases and source code | Simple GitHub release proxy |
| alldriver.ir | A large repository for downloading hardware drivers (printers, GPUs, modems, and more) | Driver archive / mirror |
| llm.targoman.ir | A multi-purpose mirror hosting datasets, LLM resources, software packages, ISO files, security tools, and development resources | Data & software mirror hub |
| IranGit | A fast, modern, and powerful platform for searching, viewing, and downloading GitHub repositories with a professional, fully Persian user interface | GitHub Mirror |
| Asiatech | Repository docker-images-group | Docker Registry |
| Parmin | Maintained by Parmin | GitHub Mirror, Quay Registry, Docker Registry, GitLab Registry, NVIDIA Container Registry, Kubernetes Registry, Microsoft Registry, NPM, Go Proxy, Nuget, Composer, PyPI, Hugging Face |
This project also includes selected high-quality global mirrors from other countries and official upstream sources.
These mirrors provide redundancy, higher availability, and alternative routing paths in case of regional network instability.
The following mirrors are well-known, actively maintained, and widely used within the open-source community.
| Mirror / Country | URL | Description | Covered Packages |
|---|---|---|---|
| NYIST Mirror (China) | nyist.edu.cn | University-operated open-source mirror providing a wide range of Linux distributions and language package repositories | Debian, Ubuntu, CentOS, Fedora, Arch Linux, Alpine, openSUSE, Kali, Linux Mint, PyPI, CRAN, CPAN, RubyGems and more |
| NJU Mirror (China) | nju.edu.cn | Nanjing University official mirror site serving major Linux distributions and development ecosystems | Debian, Ubuntu, CentOS, Fedora, Arch Linux, Alpine, openSUSE, Manjaro, Gentoo, PyPI and more |
| Huawei Cloud Mirror (China) | huaweicloud.com | Enterprise-grade mirror service operated by Huawei Cloud with CDN acceleration and global accessibility. | Debian, Ubuntu, CentOS Stream, Fedora, Arch Linux, Alpine, openEuler, PyPI, Maven, Docker, Kubernetes and more |
| USTC Mirror (China) | ustc.edu.cn | University of Science and Technology of China (USTC) mirror | Debian, Ubuntu, CentOS, Fedora, Arch Linux, Alpine, openSUSE, Kali, Manjaro, PyPI, CRAN, Homebrew and more |
| Yandex Mirror (Russia) | yandex.ru | High-speed Russian mirror operated by Yandex providing major Linux distributions and open-source repositories | Debian, Ubuntu, CentOS, Fedora, Arch Linux and more |
| Tsinghua University Mirror (China) | tuna.tsinghua.edu.cn | TUNA (Tsinghua University Network Association) mirror | Debian, Ubuntu, CentOS, Fedora, Arch Linux, Alpine, openSUSE, Kali, Manjaro, PyPI, Homebrew, Docker and more |
| Tsinghua University TUNA Association (China) | bfsu.edu.cn | TUNA (Tsinghua University Network Association) mirror | Slackware, Gentoo, Garuda, Deepin, Arch Linuxcn, NetBSD, Blackarch, MX Linux, Prometheus, PuTTY, QEMU, Zabbix and more |
| Tsinghua University TUNA Association (China) | bfsu.edu.cn | TUNA (Tsinghua University Network Association) mirror | Slackware, Gentoo, Garuda, Deepin, Arch Linuxcn, NetBSD, Blackarch, MX Linux, Prometheus, PuTTY, QEMU, Zabbix and more |
Mirava v3.4.1 can be used interactively or through direct CLI options. When it is started in an interactive terminal without arguments, it opens the menu automatically. In non-interactive input/output, running without arguments falls back to checking all registered mirrors.
git clone https://github.com/MiravaOrg/Mirava.git
cd Mirava
chmod +x check_mirrors.sh
./check_mirrors.shTo use only the script, download it first and then execute it. This lets the portable launcher install missing bootstrap dependencies and restart itself with Bash when necessary:
curl -fsSL https://raw.githubusercontent.com/MiravaOrg/Mirava/refs/heads/main/check_mirrors.sh -o check_mirrors.sh
chmod +x check_mirrors.sh
./check_mirrors.sh| Key | Menu action | What it does |
|---|---|---|
1 |
Optimize repository for this Linux system | Detects the distro/package manager, validates compatible repository layouts, benchmarks candidates, ranks them by measured speed and TTFB, and optionally applies the fastest compatible mirror after confirmation. |
2 |
Find fastest repository/package mirror | Lets you choose any package/repository type from mirrors_list.yaml, validates and benchmarks matching mirrors, and shows a ranked result. If the selected type matches the detected system repository family, Mirava can also offer to apply it. |
3 |
Check all registered mirrors/packages | Checks all registered mirror/package endpoints in parallel and reports reachable/unreachable results with adaptive progress output. |
4 |
DNS benchmark & management | Opens the DNS submenu for local, global, or combined resolver benchmarks, current DNS display, optional application of the fastest pair, and reset of Mirava-managed DNS changes. |
5 |
Show current DNS | Reads the system's currently configured DNS servers and prints them without changing anything. |
6 |
Show server / network overview | Shows hostname, RAM/uptime, OS/architecture, public IP/location when available, current DNS, active Linux repository, and Docker package repository. |
7 |
Show detected backend | Displays the detected OS ID/version/codename, native package manager, repository family, and whether automatic repository application is supported. |
8 |
List supported package types | Prints package/repository types discovered from the YAML data file. |
9 |
Doctor / data validation | Validates runtime commands, Python availability, distro/backend detection, YAML data, DNS/mirror statistics, and the available privilege path (root, sudo, or doas). |
0 |
Exit | Leaves the interactive menu. |
| Key | Action |
|---|---|
1 |
Benchmark Iranian/local DNS resolvers. |
2 |
Benchmark global DNS resolvers. |
3 |
Benchmark all imported DNS entries. |
4 |
Show the current DNS configuration. |
5 |
Reset DNS changes managed by Mirava back to automatic/default behavior where supported. |
0 |
Return to the main menu. |
DNS ranking requires stable replies and measures real query latency with dig. After a successful benchmark, the interactive flow can offer to apply the two fastest measured resolvers.
| Command | Purpose |
|---|---|
./check_mirrors.sh --menu |
Open the interactive menu explicitly. |
./check_mirrors.sh --system-repo |
Detect and benchmark the current system repository family; on a TTY it can optionally apply the selected mirror. |
./check_mirrors.sh --apply-system-repo --yes |
Detect, benchmark, and apply the fastest compatible system mirror non-interactively. The explicit --yes is required. |
./check_mirrors.sh --check-all |
Check every registered mirror/package endpoint. |
./check_mirrors.sh --fastest PACKAGE |
Benchmark mirrors for a package type such as Ubuntu, Debian, PyPI, or npm. Quote package names that contain spaces. |
./check_mirrors.sh --fastest-ubuntu |
Shortcut for benchmarking Ubuntu mirrors. |
./check_mirrors.sh --dns local |
Benchmark local DNS resolvers. |
./check_mirrors.sh --dns global |
Benchmark global DNS resolvers. |
./check_mirrors.sh --dns all |
Benchmark all DNS resolvers. |
./check_mirrors.sh --current-dns |
Show the current DNS servers. |
./check_mirrors.sh --system-info |
Show the server/network overview. |
./check_mirrors.sh --backend-info |
Show distro/package-manager detection results. |
./check_mirrors.sh --doctor |
Validate runtime dependencies, backend detection, and Mirava data. |
./check_mirrors.sh --list-packages |
List package types known by mirrors_list.yaml. |
./check_mirrors.sh --help |
Show built-in help. |
Useful environment variables include MIRAVA_MIRROR_FILE, MIRAVA_JOBS, MIRAVA_BENCH_RUNS, MIRAVA_OS_RELEASE_FILE, MIRAVA_PACKAGE_MANAGER, and MIRAVA_SKIP_NETINFO.
Mirava uses check_mirrors.sh for execution and mirrors_list.yaml for repository and DNS data.
The interactive menu starts with the official project link first, followed by the FarshidSar repository:
- Official:
https://github.com/MiravaOrg/Mirava - FarshidSar:
https://github.com/farshidsar/Mirava
Before the menu options, Mirava renders a short system table with only the useful at-a-glance fields: server name with RAM/uptime, operating system with architecture, public IP/location, current DNS servers, the active Linux package repository, and the Docker package repository. DNS/repository/Docker values are re-read from the current system configuration when the menu is drawn.
Public IP/location lookup uses short timeouts and does not block the tool when unavailable. Set MIRAVA_SKIP_NETINFO=1 to disable the external public-IP/location lookup. The same overview can be printed directly with ./check_mirrors.sh --system-info.
Run from a clone:
chmod +x check_mirrors.sh
./check_mirrors.shOn supported Linux families, Mirava detects the native package manager and installs missing runtime requirements when possible:
- bootstrap:
bash,curl,ca-certificates - data parsing: Python 3, only when it is missing
- DNS benchmark: the package that provides
dig(dnsutils,bind-utils,bind, orbind-tools, depending on the distribution)
Mirava does not require yq or PyYAML at runtime.
Mirava can detect the current Linux family, find compatible repository candidates, validate real repository metadata, benchmark valid endpoints, and rank them by measured transfer speed and TTFB. Duplicate repository URLs are removed from the data and candidates are de-duplicated before benchmarking.
During repository, DNS, and full mirror checks, Mirava redraws a single adaptive progress row in interactive terminals instead of printing a new line for every spinner tick. The row shows checked/total, percentage, successful/failed checks, active workers and remaining items; on wide terminals it can also show the current endpoint. The progress line automatically shortens to the terminal width so it does not wrap. Redirected/CI output uses plain log-friendly progress lines.
| Family | Supported systems | Backend / behavior |
|---|---|---|
| APT | Ubuntu, Debian | validates Release, backs up APT configuration, applies the selected mirror, refreshes indexes, and rolls back when validation/application fails |
| DNF/YUM | Fedora, Rocky Linux, AlmaLinux, CentOS/Stream | validates repomd.xml, adds the selected repository while keeping existing repositories as fallback |
| Pacman | Arch Linux, Manjaro | validates repository databases, prioritizes the selected server, and preserves fallback mirrors |
| APK | Alpine Linux | validates APKINDEX.tar.gz, backs up /etc/apk/repositories, applies the selected mirror, and rolls back on failure |
| Zypper | openSUSE Leap/Tumbleweed | validates repomd.xml, adds the selected repository with higher priority, and preserves existing repositories |
Known derivatives can still be benchmarked by repository family, but Mirava avoids automatic configuration rewrites when the exact distro layout is not known.
Mirava contains local and global DNS candidates in mirrors_list.yaml. It measures real DNS query latency with dig, removes duplicate IPs, ranks responsive resolvers, and can optionally apply the fastest pair.
DNS application supports NetworkManager, systemd-resolved, resolvconf/openresolv, dhcpcd, and a backed-up /etc/resolv.conf fallback. Mirava can also display the current DNS configuration or reset Mirava-managed DNS changes.
Before changing repository or DNS configuration, Mirava creates backups where applicable. Interactive system changes require confirmation, and non-interactive repository application requires the explicit --yes flag. Backups are stored under /var/backups/mirava.
Running ./check_mirrors.sh in a terminal opens the menu. Available CLI operations include:
./check_mirrors.sh --system-repo
./check_mirrors.sh --apply-system-repo --yes
./check_mirrors.sh --check-all
./check_mirrors.sh --fastest Ubuntu
./check_mirrors.sh --fastest-ubuntu
./check_mirrors.sh --dns local
./check_mirrors.sh --dns global
./check_mirrors.sh --dns all
./check_mirrors.sh --current-dns
./check_mirrors.sh --system-info
./check_mirrors.sh --backend-info
./check_mirrors.sh --doctor
./check_mirrors.sh --list-packagesFor a one-file download, save the script first and then run it so the bootstrap stage can restart itself with Bash if necessary:
curl -fsSL https://raw.githubusercontent.com/MiravaOrg/Mirava/refs/heads/main/check_mirrors.sh -o check_mirrors.sh
chmod +x check_mirrors.sh
./check_mirrors.shThe "fastest" result is specific to the current machine and network at test time and may change with routing, filtering, congestion, and mirror load.
Cross-distribution repository/DNS optimizer and menu enhancements: FarshidSar.
This update turns check_mirrors.sh from a basic mirror reachability checker into a portable cross-distribution repository and DNS optimizer while keeping mirror discovery and validation in one project.
- Added a portable POSIX launcher that can bootstrap
bash,curl, and CA certificates with supported native package managers. - Removed the runtime
yq/PyYAML requirement; Mirava now uses its embedded data reader and installs Python 3 only when it is missing. - Added Linux distribution and package-manager detection plus safe repository workflows for APT, DNF/YUM, Pacman, APK, and Zypper families.
- Added real repository metadata validation, parallel benchmarking, average transfer-speed/TTFB ranking, candidate de-duplication, and adaptive terminal progress.
- Added automatic backup/rollback safeguards for supported repository changes and backups under
/var/backups/mirava. - Added DNS benchmarking for local/global resolvers plus optional DNS apply/reset support through NetworkManager,
systemd-resolved,resolvconf/openresolv,dhcpcd, or a guarded/etc/resolv.conffallback. - Added system/network overview, backend information, package listing, doctor/data validation, and non-interactive CLI modes.
- Added multilingual documentation in English, Persian, Arabic, Russian, and Simplified Chinese. English remains the primary README.
If you know a reliable mirror (especially one located inside Iran and accessible without a VPN), we’d love to include it.
Before getting started, please read our contribution guidelines:
See Contributing
Thanks for helping improve the project!
- Hosted inside Iran and accessible without filtering
- Linux repositories (Debian, Ubuntu, Arch, etc.)
- Package registries: PyPI, npm, Docker, GitHub Releases
- Any service that helps during national network mode or sanctions
- 🔗 X (twitter)
- 📣 Telegram Channel
Special thanks to Arman Taheri
ArmanTaheriGhaleTaki
for contributing multiple mirror links.
Enhancements to the cross-distribution repository/DNS optimizer, interactive menu, and multilingual documentation by Farshid Sar.