Skip to content
This repository has been archived by the owner on Mar 25, 2022. It is now read-only.
/ infra Public archive

Tools and systems for the IPFS community

License

Notifications You must be signed in to change notification settings

ipfs/infra

Folders and files

NameName
Last commit message
Last commit date

Latest commit

a1334dd · Apr 27, 2020
Apr 27, 2020
Jun 28, 2019
Feb 8, 2017
Apr 6, 2018
Oct 19, 2017
Jun 7, 2019
May 17, 2018
Nov 27, 2017
Aug 15, 2018
Jun 22, 2017
Jul 30, 2019
Feb 8, 2017
Jul 26, 2018
Mar 29, 2017
Sep 21, 2016
Jul 30, 2019
Jul 1, 2015
Dec 3, 2018
Jun 7, 2019
Apr 6, 2018
Jan 15, 2017
Oct 31, 2016
Jul 30, 2016

Repository files navigation

IPFS Infrastructure

standard-readme compliant

Tools for maintaining infrastructure for the IPFS community.

  • Introduction
  • Getting started
  • Usage
  • Known issues
  • Common tasks

Progress and Tracking

Throughput Graph

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

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

About

Tools and systems for the IPFS community

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages