{"id":13765912,"url":"https://github.com/fedora-infra/mirrormanager2","last_synced_at":"2025-07-28T05:08:31.102Z","repository":{"id":16669361,"uuid":"19425076","full_name":"fedora-infra/mirrormanager2","owner":"fedora-infra","description":"Rewrite of the MirrorManager application in Flask and SQLAlchemy","archived":false,"fork":false,"pushed_at":"2025-07-28T02:42:15.000Z","size":42990,"stargazers_count":69,"open_issues_count":43,"forks_count":50,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-07-28T04:23:50.104Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://mirrormanager.fedoraproject.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fedora-infra.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-GPLv2","code_of_conduct":null,"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":"2014-05-04T11:26:26.000Z","updated_at":"2025-07-28T02:42:18.000Z","dependencies_parsed_at":"2023-11-11T05:35:26.560Z","dependency_job_id":"960579fc-a725-4ee5-9075-eabda54dc34f","html_url":"https://github.com/fedora-infra/mirrormanager2","commit_stats":null,"previous_names":[],"tags_count":71,"template":false,"template_full_name":null,"purl":"pkg:github/fedora-infra/mirrormanager2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fedora-infra%2Fmirrormanager2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fedora-infra%2Fmirrormanager2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fedora-infra%2Fmirrormanager2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fedora-infra%2Fmirrormanager2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fedora-infra","download_url":"https://codeload.github.com/fedora-infra/mirrormanager2/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fedora-infra%2Fmirrormanager2/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267463738,"owners_count":24091490,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-28T02:00:09.689Z","response_time":68,"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":[],"created_at":"2024-08-03T16:00:48.680Z","updated_at":"2025-07-28T05:08:31.077Z","avatar_url":"https://github.com/fedora-infra.png","language":"Python","funding_links":[],"categories":["Linux"],"sub_categories":["Red Hat/Fedora"],"readme":"Fedora MirrorManager\n====================\n\nMirrorManager2 is a rewrite of `mirrormanager \u003chttps://pagure.io/mirrormanager/\u003e`_\nusing flask and SQLAlchemy.\n\nMirrorManager is the application that keeps track of the nearly 400 public mirrors,\nand over 300 private mirrors, that carry Fedora, EPEL, and RHEL content, and is used\nby rpmfusion.org, a third party repository. It automatically selects the \"best\"\nmirror for a given user based on a set of fallback heuristics.\n\nThe complete MirrorManager functionality requires `generate-mirrorlist-cache`\nand `mirrorlist-server` which can be found at\nhttps://github.com/adrianreber/mirrorlist-server.\n\nMailing list for announcements and discussions:\nhttps://lists.fedoraproject.org/archives/list/mirror-admin@lists.fedoraproject.org/\n\nThe full documentation is hosted on ReadTheDocs:\nhttp://mirrormanager.readthedocs.io/\n\n\nHacking\n-------\n\nUsing Tinystage\n~~~~~~~~~~~~~~~\nMirrorManager2 authenticates using OpenID Connect. For this, it requires an\nOIDC provider, and the tiny-stage environment provides that.\n\nDownload tiny-stage from Github with::\n\n    $ git clone https://github.com/fedora-infra/tiny-stage\n    $ cd tiny-stage\n\nNow install Ansible, Vagrant and the vagrant-libvirt plugin from the official\nFedora repos, and startup tiny-stage::\n\n    $ sudo dnf install ansible vagrant vagrant-libvirt vagrant-sshfs\n    $ vagrant up ipa auth\n\nIt takes a bit of time, but tiny-stage will now be installed, with dummy users\nand groups.\n\n\nHacking with Vagrant\n~~~~~~~~~~~~~~~~~~~~\nQuickly start hacking on mirrormanager2 using the vagrant setup that is included\nin the repo is super simple.\n\nFrom within main directory (the one with the Vagrantfile in it) of your git\ncheckout of mirrormanager2, run the ``vagrant up`` command to provision your dev\nenvironment::\n\n    $ vagrant up\n\nWhen this command is completed (it may take a while) you will be able to the\ncommand to start the mirrormanager server::\n\n    $ vagrant ssh -c \"sudo systemctl restart mirrormanager2\"\n\nOnce that is running, simply go to https://mirrormanager2.tinystage.test/ in\nyour browser on your host to see your running mirrormanager test instance.\n\n\nManual Setup\n~~~~~~~~~~~~\nHere are some preliminary instructions about how to stand up your own instance\nof mirrormanager2. All required packages for MirrorManager2 are part of Fedora\nor RHEL/CentOS/EPEL. In the following example we will, however use a virtualenv\nand a sqlite database and we will install our dependencies from the Python\nPackage Index (PyPI).\n\nNote: this setup still needs tiny-stage running.\n\nFirst, install development dependencies::\n\n    $ sudo dnf install poetry tox\n\nNext, install MirrorManager's dependencies::\n\n    $ poetry install\n\nTinystage has a self-signed certificate, it needs to be added to the known\ncertificates::\n\n    $ curl -k https://ipsilon.tinystage.test/ca.crt \u003e\u003e $(poetry run python -m certifi)\n    $ poetry run oidc-register https://ipsilon.tinystage.test/idp/openidc/ http://localhost:5000/authorize\n\nYou should then create your own sqlite database for your development instance of\nmirrormanager2::\n\n    $ poetry run flask -A mirrormanager2.app db sync\n\nIf all goes well, you can start a development instance of the server by\nrunning::\n\n    $ poetry run ./runserver.py\n\nOpen your browser and visit http://localhost:5000 to check it out.\n\nOnce you made your changes please run the test suite to verify that nothing\ncovered by tests has been broken::\n\n    $ tox\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffedora-infra%2Fmirrormanager2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffedora-infra%2Fmirrormanager2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffedora-infra%2Fmirrormanager2/lists"}