{"id":13558841,"url":"https://github.com/ipfs/infra","last_synced_at":"2025-09-30T01:31:15.853Z","repository":{"id":28839101,"uuid":"32362828","full_name":"ipfs/infra","owner":"ipfs","description":"Tools and systems for the IPFS community","archived":true,"fork":false,"pushed_at":"2021-11-23T22:01:52.000Z","size":1749,"stargazers_count":132,"open_issues_count":1,"forks_count":45,"subscribers_count":25,"default_branch":"master","last_synced_at":"2024-05-02T08:58:10.858Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ipfs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-03-17T01:03:16.000Z","updated_at":"2024-01-27T08:30:21.000Z","dependencies_parsed_at":"2022-08-22T01:10:42.571Z","dependency_job_id":null,"html_url":"https://github.com/ipfs/infra","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/ipfs%2Finfra","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipfs%2Finfra/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipfs%2Finfra/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipfs%2Finfra/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipfs","download_url":"https://codeload.github.com/ipfs/infra/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":201761289,"owners_count":13913732,"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-01T12:05:11.205Z","updated_at":"2025-09-30T01:31:10.487Z","avatar_url":"https://github.com/ipfs.png","language":"Shell","funding_links":[],"categories":["Shell","others"],"sub_categories":[],"readme":"# IPFS Infrastructure\n\n[![](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](http://protocol.ai)\n[![](https://img.shields.io/badge/project-IPFS-blue.svg?style=flat-square)](http://ipfs.io/)\n[![](https://img.shields.io/badge/freenode-%23ipfs-blue.svg?style=flat-square)](http://webchat.freenode.net/?channels=%23ipfs)\n[![standard-readme compliant](https://img.shields.io/badge/standard--readme-OK-green.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme)\n\n\u003e Tools for maintaining infrastructure for the IPFS community.\n\n- Introduction\n- Getting started\n- Usage\n- Known issues\n- Common tasks\n\n## Progress and Tracking\n\n\n[![Throughput Graph](https://graphs.waffle.io/ipfs/infra/throughput.svg)](https://waffle.io/ipfs/infra/metrics/throughput)\n\n## Introduction\n\nThis repository contains the technical infrastructure of the IPFS community.\n\n- Public HTTP-to-IPFS Gateway: https://ipfs.io\n- Default bootstrap used by IPFS: `ipfs bootstrap`\n- Private networking between the hosts (cjdns with nginx access control)\n- Monitoring of services and hosts: http://metrics.ipfs.team\n- Pinbot, an IRC bot in chat.freenode.net/#ipfs-pinbot\n\nInfrastructure that isn't contained here:\n\n- Websites deployment: ipfs.io, dist.ipfs.io, blog.ipfs.io, chat.ipfs.io\n- DNS settings for ipfs.io, ipld.io, multiformats.io, libp2p.io, orbit.chat, ipfs.team, protocol.ai\n- TeamCity CI: http://ci.ipfs.team:8111\n\n## Getting started\n\nWe use a tool called Provsn to maintain the setup of hosts and services.\nThe fundamental principle of Provsn is that hosts are in a certain state,\nand units of code are run to transition into a different state.\n\nProvsn is a plain shell script, and each unit consists of shell scripts too:\n- The `env` script exposes variables and functions to the unit itself, and other units.\n- The `build` script is run on the client and builds container images, config files, etc.\n- The `install` script is run on the host and transitions it into the desired state.\n\n**Note:** there are a few bits of Ansible code left over, which are to be migrated to Provsn.\nYou can find them in the `ansible/` directory.\n\nTo test whether you're all set up, execute a simple command on all hosts.\n\n```sh\n\u003e ./provsn exec all 'whoami'\npluto: root\nuranus: root\n[...]\n```\n\nTwo environment variables can be used to alter Provsn's operation:\n\n- `PROVSN_JOBS` -- this controls the number of hosts to run on in parallel, and defaults to 4.\n- `PROVSN_TRACE` -- if set, this enables Bash tracing (`set -x`) for extensive debugging information.\n  Note that this *will contain sensitive information and secrets*.\n\n## Usage\n\n### Known issues\n\n- no verbose option, need to comment out dev-null-redirections in unit scripts\n- if container that's supposed to be restarted is in a restart loop, we don't notice it's kinda running, and try to start it, and that fails because the name is already in use\n\n### Common tasks\n\n- gathering ipfs debug info\n- updating ipfs\n- deploying a website\n- adding a root user\n- adding hashes to the blocklist\n\n### How can I get ssh access to the instances?\n\nAdd you ssh-key to the list of keys available in `base/env.sh`, like this: https://github.com/ipfs/infrastructure/blob/master/base/env.sh#L9 and then submit a PR with the changes.\n\n### Other community infrastructure:\n\nMore info in https://github.com/ipfs/community\n\n- Github\n  - https://github.com/ipfs\n  - https://github.com/libp2p\n  - https://github.com/ipld\n  - https://github.com/multiformats\n  - https://github.com/protocol\n  - https://github.com/ipfsbot\n- Communication\n  - IRC: chat.freenode.net/#ipfs and https://chat.ipfs.io\n  - ipfs-users group: https://groups.google.com/forum/#!forum/ipfs-users\n  - Slack\n  - https://twitter.com/ipfsbot\n- CI / Testing\n  - GitCop\n  - TeamCity: http://ci.ipfs.team:8111\n  - Travis CI\n  - Circle CI\n\n## Contribute\n\nFeel free to join in. All welcome. Open an [issue](https://github.com/ipfs/infrastructure/issues)!\n\nThis repository falls under the IPFS [Code of Conduct](https://github.com/ipfs/community/blob/master/code-of-conduct.md).\n\n### Want to hack on IPFS?\n\n[![](https://cdn.rawgit.com/jbenet/contribute-ipfs-gif/master/img/contribute.gif)](https://github.com/ipfs/community/blob/master/contributing.md)\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fipfs%2Finfra","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fipfs%2Finfra","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fipfs%2Finfra/lists"}