{"id":13744870,"url":"https://github.com/victorb/arch-mirror","last_synced_at":"2025-04-28T17:03:56.204Z","repository":{"id":148376808,"uuid":"123932772","full_name":"victorb/arch-mirror","owner":"victorb","description":"IPFS mirror of pacman repositories","archived":false,"fork":false,"pushed_at":"2018-08-14T12:41:23.000Z","size":21,"stargazers_count":32,"open_issues_count":5,"forks_count":5,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-30T11:32:55.396Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/victorb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2018-03-05T14:38:26.000Z","updated_at":"2024-05-27T13:00:00.000Z","dependencies_parsed_at":"2023-05-19T22:30:19.010Z","dependency_job_id":null,"html_url":"https://github.com/victorb/arch-mirror","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/victorb%2Farch-mirror","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/victorb%2Farch-mirror/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/victorb%2Farch-mirror/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/victorb%2Farch-mirror/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/victorb","download_url":"https://codeload.github.com/victorb/arch-mirror/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251352546,"owners_count":21575859,"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","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-03T05:01:17.602Z","updated_at":"2025-04-28T17:03:56.182Z","avatar_url":"https://github.com/victorb.png","language":"Shell","funding_links":[],"categories":["Shell"],"sub_categories":[],"readme":"## arch-mirror\n\u003e Scripts for syncing arch repositories, adding to IPFS and maintaining publishes to IPNS\n\nFollow along with discussions here: https://github.com/ipfs/notes/issues/84\n\n### Usage TLDR\n\nAdd `Server = https://ipfs.io/ipns/arch.victor.earth/$repo/os/$arch` in the top of `/etc/pacman.d/mirrorlist`\n\n### Using as a repository\n\n- Add `https://ipfs.io/ipns/arch.victor.earth/$repo/os/$arch` to your list of repositories\n- Run `pacman -Syyu` to upgrade your packages\n- Enjoy immutable and distributed updates to your system!\n\nThere are a few ways you can use the IPFS Arch mirror.\n\n- Use IPNS directly (slow): https://ipfs.io/ipns/Qmb6FJZfVpVeLGKkDvysW1g6XNBLC95trg3EDf6FHioS49\n- Use IPFS directly (fast but harder for you to update): /ipfs/QmQgfsgwenh3tiCmgbhtxr9sAVCaxbBRFyYu1GjAp84rgo\n- Use DNS (fast but centralized naming [also currently no https]): http://arch.victor.earth\n- Use DNS via IPNS (fast and can be resolved anywhere): https://ipfs.io/ipns/arch.victor.earth\n\nI would recommend to use DNS via IPNS for now, until performance issues with IPNS\nhas been resolved.\n\nNotice: Don't forget to add `$repo/os/$arch` after when you add it to your `mirrorlist`.\n\n### Usage with local daemon\n\nTo get the most benefit of IPFS when downloading packages, you should be running\na local go-ipfs node. Once you have it up and running, you can replace `ipfs.io`\nwith `localhost:8080` and everything should work the same, except you get better\ncaching and you help rehost the packages you download.\n\nTip: as of early 2018 IPFS is having problems with content discovery.  To speed \nup things and avoid timeouts it may be smart to be sure your swarm has a direct \nconnection to one of the peers hosting the mirror:\n\n    ipfs swarm connect /ip4/88.18.104.235/tcp/7000/ipfs/QmUWA5FD6otih6aCqnSTSy4cQbcttwCYpA6mYMPJ9qAyKi \n    ipfs swarm connect /ip4/167.99.95.100/tcp/4001/ipfs/QmX1WWwNwfEsuzsqWFVstnEkzVFN5i4kefqJQMb5S4umAT\n\n### Hosting your own mirror\n\n#### Requirements\n\n- go-ipfs version 0.4.14 or later (might work with earlier but tested with 0.4.14)\n- about 150GB of diskspace (real usage will be around ~100GB but good with a buffer)\n  - This diskspace requirement only applies if you want to host your own mirror, not if you're using a existing one\n\n#### Setup\n\nWant to setup your own IPFS mirror? It's easy, just follow these steps:\n\n- Run `./syncrepo.sh` which downloads the latest arch-repository from a Tier 2\n  mirror to `./arch-repository`. Modify the values in `syncrepo.sh` however you\n  see fit. This script will also end with replacing all symlinks with their target\n  files so adding and browsing via IPFS works correctly.\n- Run `./ipfsify.sh` to initialize a local IPFS repository and add the full repository\n  to it\n- Run `./run-daemon.sh` to run the daemon\n\nThe final output of `./ipfsify.sh` should print a IPNS address you can use as the link\nto the repository.\n\nMake sure to run both `syncrepo.sh` and `ipfsify.sh` scripts via cron (or similar software) at least\nonce per day to maintain a updated repository.\n\n### Stats (only interesting for people who want to host their own mirror)\n\n- `./arch-repository/` (downloaded index + packages) ends up ~35GB but after making symlinks into real files, it becomes ~70GB\n- `./.ipfs/` (the IPFS repository) ends up being ~35GB even when making symlinks into real files, because of the de-duplication\n\n### Findings\n\n- go-ipfs gateway does not support symlinks yet: https://github.com/ipfs/go-ipfs/pull/3508\n\n## License\n\nMIT 2018 - Victor Bjelkholm\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvictorb%2Farch-mirror","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvictorb%2Farch-mirror","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvictorb%2Farch-mirror/lists"}