{"id":28264543,"url":"https://github.com/haukened/mirrorselect","last_synced_at":"2026-04-06T03:35:47.045Z","repository":{"id":262492307,"uuid":"887404823","full_name":"haukened/mirrorselect","owner":"haukened","description":"A command line utility to select the fastest mirror for Ubuntu. Alternative to netselect or mirror protocol.","archived":false,"fork":false,"pushed_at":"2025-03-15T16:14:09.000Z","size":5609,"stargazers_count":20,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-06T03:35:29.020Z","etag":null,"topics":["apt","apt-fast","apt-get","mirrors","netselect","ubuntu","ubuntu-mirror"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/haukened.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-11-12T17:27:02.000Z","updated_at":"2026-03-25T09:07:43.000Z","dependencies_parsed_at":"2025-07-09T14:43:33.889Z","dependency_job_id":"37df13ef-64f1-4a3a-ae8f-2262ab015490","html_url":"https://github.com/haukened/mirrorselect","commit_stats":null,"previous_names":["haukened/mirrorselect"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/haukened/mirrorselect","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haukened%2Fmirrorselect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haukened%2Fmirrorselect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haukened%2Fmirrorselect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haukened%2Fmirrorselect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/haukened","download_url":"https://codeload.github.com/haukened/mirrorselect/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haukened%2Fmirrorselect/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31458838,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"online","status_checked_at":"2026-04-06T02:00:07.287Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apt","apt-fast","apt-get","mirrors","netselect","ubuntu","ubuntu-mirror"],"created_at":"2025-05-20T09:10:51.186Z","updated_at":"2026-04-06T03:35:47.040Z","avatar_url":"https://github.com/haukened.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/haukened/mirrorselect/dev.yml) ](https://github.com/haukened/mirrorselect/actions)\n[![GitHub Issues or Pull Requests](https://img.shields.io/github/issues/haukened/mirrorselect)](https://github.com/haukened/mirrorselect/issues)\n[![GitHub License](https://img.shields.io/github/license/haukened/mirrorselect)](https://github.com/haukened/mirrorselect/blob/main/LICENSE)\n[![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/haukened/mirrorselect)](https://go.dev/dl/)\n[![GitHub Release](https://img.shields.io/github/v/release/haukened/mirrorselect)](https://github.com/haukened/mirrorselect/releases)\n\n# MirrorSelect\n\nMirrorSelect is a command-line tool designed to help users select the best mirror for downloading packages. It tests the speed of various mirrors and suggests the fastest one for your location. Since the removal of `netselect` from the Ubuntu repositories, may users have been forced to use the mirror protocol.  This protocol, while useful, only test latency/priximity using a one-sided view of the world.  This leads to decent, but sub-optimal mirrors selections.\n\n### MirrorSelect performs a series of actions to ensure you get the best mirrors:\n\n1. Mirrors are sourced from the [Launchpad Mirror List](https://launchpad.net/ubuntu/+archivemirrors) instead of the [Ubuntu Mirrors Service](http://mirrors.ubuntu.com/).\n    1. The Ubuntu Mirrors service does not return the same mirrors every time its accessed, due to the fact it is guessing proximity to your GeoIP location and other factors.  This means that the results may be incomplete or different each time its run.\n    1. Launchpad has the most up-to-date and complete information on operational official mirrors.\n1. Every mirror (in the selected country) is tested for TCP latency instead of ICMP\n    1. TCP Latency tests the amount of time it takes for the web server to complete the HTTP request.\n    1. Other tools using ICMP latency only test the time the network takes, not how long it takes for the server to process the request.\n1. Once the mirrors are ranked by TCP latency for responsiveness, the top `N` servers are then ranked by download speed.\n    1. This ensures that you're actually getting the fastest server, not _just_ the quickest one to respond.\n    1. Even servers that respond quickly might have lower download speeds due to congestion, or other factors.\n\n## Features\n\n- Automatically selects the fastest mirror\n- GeoIP support for automatic country selection, or manual options for privacy.\n- Supports protocol selection (HTTP, HTTPS, any)\n- Easy to use command-line interface\n- Sane defaults\n\n## Installation\n\nTo install MirrorSelect, you can choose one of the following options:\n\n1. Snapcraft.io\n\n    [![Get it from the Snap Store](https://snapcraft.io/en/dark/install.svg)](https://snapcraft.io/mirrorselect)\n\n4. Installing with go:\n    \n    ```\n    go install github.com/haukened/mirrorselect@latest\n    ```\n\n5. Compiling from source:\n\n    ```\n    git clone https://github.com/haukened/mirrorselect\n    cd mirrorselect\n    go get -u ./...\n    go build\n    ./mirrorselect -h\n    ```\n\n## Usage\n\nMirrorSelect provides several command-line flags to customize its behavior:\n\n```sh\nmirrorselect [flags]\n```\n\n### Command-Line Flags\n\n- `-a`, `--arch`: Select the CPU architecture (default: current system)\n- `-c`, `--country`: Filter mirrors by ISO 3166 Alpha-2 country code (Default: Auto-Detect). Options: ISO-3166 Alpha-2 Country Codes.. `US`, `DE`, etc..\n- `-h`, `--help`: Display the help message and exit.\n- `-m`, `-max`: The max number of servers to perform download speed tests (Default 5)\n- `-p`, `--protocol`: Specify the protocol to use (default: ANY). Options: `http`, `https`, `any`.\n- `-r`, `--release`: Specify the ubuntu release (Default: Current). Options: Ubuntu codenames e.g. `noble`, `jammy`, `focal`, etc...\n- `-t`, `--timeout`: Set the timeout for each mirror latency test in milliseconds (default: 500ms).\n- `-v`, `--verbosity`: Show verbose information (Default: WARN) Options: DEBUG, INFO, WARN, ERROR.\n\n## Examples\n\nSelect the fastest mirror using default settings:\n\n```sh\nmirrorselect\n```\n\nSelect the fastest HTTPS mirror in the US:\n\n```sh\nmirrorselect --protocol https --country US\n```\n\nTest 5 mirrors with a timeout of 800ms:\n\n```sh\nmirrorselect --max 5 --timeout 800\n```\n\n## Contributing\n\nContributions are welcome! Please read the [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on how to contribute to this project.\n\n## License\n\nThis project is licensed under the GNU GPL v3 License. See the [LICENSE](LICENSE) file for details.\n\n## Contact\n\nFor any questions or suggestions, please open an issue on GitHub.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhaukened%2Fmirrorselect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhaukened%2Fmirrorselect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhaukened%2Fmirrorselect/lists"}