IPFS Infrastructure
Tools for maintaining infrastructure for the IPFS community.
- Introduction
- Getting started
- Usage
- Known issues
- Common tasks
Progress and Tracking
Introduction
This repository contains the technical infrastructure of the IPFS community.
- Public HTTP-to-IPFS Gateway: https://ipfs.io
- Default bootstrap used by IPFS:
ipfs bootstrap
- Private networking between the hosts (cjdns with nginx access control)
- Monitoring of services and hosts: http://metrics.ipfs.team
- Pinbot, an IRC bot in chat.freenode.net/#ipfs-pinbot
Infrastructure that isn't contained here:
- Websites deployment: ipfs.io, dist.ipfs.io, blog.ipfs.io, chat.ipfs.io
- DNS settings for ipfs.io, ipld.io, multiformats.io, libp2p.io, orbit.chat, ipfs.team, protocol.ai
- TeamCity CI: http://ci.ipfs.team:8111
Getting started
We use a tool called Provsn to maintain the setup of hosts and services. The fundamental principle of Provsn is that hosts are in a certain state, and units of code are run to transition into a different state.
Provsn is a plain shell script, and each unit consists of shell scripts too:
- The
env
script exposes variables and functions to the unit itself, and other units. - The
build
script is run on the client and builds container images, config files, etc. - The
install
script is run on the host and transitions it into the desired state.
Note: there are a few bits of Ansible code left over, which are to be migrated to Provsn.
You can find them in the ansible/
directory.
To test whether you're all set up, execute a simple command on all hosts.
> ./provsn exec all 'whoami'
pluto: root
uranus: root
[...]
Two environment variables can be used to alter Provsn's operation:
PROVSN_JOBS
-- this controls the number of hosts to run on in parallel, and defaults to 4.PROVSN_TRACE
-- if set, this enables Bash tracing (set -x
) for extensive debugging information. Note that this will contain sensitive information and secrets.
Usage
Known issues
- no verbose option, need to comment out dev-null-redirections in unit scripts
- 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
Common tasks
- gathering ipfs debug info
- updating ipfs
- deploying a website
- adding a root user
- adding hashes to the blocklist
How can I get ssh access to the instances?
Add 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.
Other community infrastructure:
More info in https://github.com/ipfs/community
- Github
- Communication
- IRC: chat.freenode.net/#ipfs and https://chat.ipfs.io
- ipfs-users group: https://groups.google.com/forum/#!forum/ipfs-users
- Slack
- https://twitter.com/ipfsbot
- CI / Testing
- GitCop
- TeamCity: http://ci.ipfs.team:8111
- Travis CI
- Circle CI
Contribute
Feel free to join in. All welcome. Open an issue!
This repository falls under the IPFS Code of Conduct.
Want to hack on IPFS?
License
MIT