Go to file
Hector Sanjuan 9be145319b Increase delays to prevent test from randomly failing
License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2017-03-10 14:27:03 +01:00
.gx gx publish 0.0.10 2017-03-09 15:04:48 +01:00
allocator/numpinalloc go vet fixes 2017-02-15 15:46:51 +01:00
api Support replication factor as a pin parameter 2017-03-08 18:50:54 +01:00
docker Add Dockerfile 2017-03-07 17:39:19 +01:00
docs Try to go more to the point in the readme. Move quickstart guide to docs/ 2017-02-27 10:30:09 +01:00
informer/numpin Documentation: captain log, readme and golint fixes 2017-02-15 15:46:51 +01:00
ipfs-cluster-ctl Release 0.0.10 2017-03-09 15:04:42 +01:00
ipfs-cluster-service Fix ipfs-cluster-service looping eating lots of CPU (bad select loop) 2017-03-07 17:38:04 +01:00
state/mapstate Support replication factor as a pin parameter 2017-03-08 18:50:54 +01:00
test Rename CidArg to Pin. 2017-03-08 16:57:27 +01:00
.gitignore Issue #20: Download a local installation of gx 2017-01-25 12:48:16 +01:00
.travis.yml Small improvements to coverage.sh and travis.yml 2017-02-14 19:26:48 +01:00
architecture.md Documentation: captain log, readme and golint fixes 2017-02-15 15:46:51 +01:00
CAPTAIN.LOG.md Add this week's entry to the Captain's Log. 2017-03-10 14:05:40 +01:00
cluster_test.go Support replication factor as a pin parameter 2017-03-08 18:50:54 +01:00
cluster.go Fix pin re-allocation when it's already pinned 2017-03-09 14:49:10 +01:00
config_test.go Issue #45: Detect expired metrics and trigger re-pins 2017-03-02 14:59:45 +01:00
config.go Issue #55: Move tooling information to it's own README in the subprojects. 2017-03-03 16:13:09 +01:00
consensus_test.go Support replication factor as a pin parameter 2017-03-08 18:50:54 +01:00
consensus.go Rename CidArg to Pin. 2017-03-08 16:57:27 +01:00
coverage.sh Small improvements to coverage.sh and travis.yml 2017-02-14 19:26:48 +01:00
debug.go Fix #24: Auto-join and auto-leave operations for Cluster 2017-02-07 18:46:09 +01:00
Dockerfile Add Dockerfile 2017-03-07 17:39:19 +01:00
ipfs_http_connector_test.go Move testing mocks to subpackage so they can be re-used 2017-02-09 17:51:19 +01:00
ipfs_http_connector.go Rename CidArg to Pin. 2017-03-08 16:57:27 +01:00
ipfscluster_test.go Increase delays to prevent test from randomly failing 2017-03-10 14:27:03 +01:00
ipfscluster.go Rename CidArg to Pin. 2017-03-08 16:57:27 +01:00
LICENSE ipfscluster-server executable 2016-12-21 19:37:25 +01:00
log_op_test.go Support replication factor as a pin parameter 2017-03-08 18:50:54 +01:00
log_op.go Rename CidArg to Pin. 2017-03-08 16:57:27 +01:00
logging.go Improve raft log forwarder 2017-02-09 22:31:04 +01:00
Makefile Update gx version 2017-03-02 17:05:21 +01:00
map_pin_tracker.go Support replication factor as a pin parameter 2017-03-08 18:50:54 +01:00
nodebug.go Fix #24: Auto-join and auto-leave operations for Cluster 2017-02-07 18:46:09 +01:00
package.json gx publish 0.0.10 2017-03-09 15:04:48 +01:00
peer_manager_test.go Support replication factor as a pin parameter 2017-03-08 18:50:54 +01:00
peer_manager.go Fix #24: Auto-join and auto-leave operations for Cluster 2017-02-07 18:46:09 +01:00
peer_monitor_test.go Issue #45: Detect expired metrics and trigger re-pins 2017-03-02 14:59:45 +01:00
peer_monitor.go Issue #45: Detect expired metrics and trigger re-pins 2017-03-02 14:59:45 +01:00
raft.go Fix #24: Auto-join and auto-leave operations for Cluster 2017-02-07 18:46:09 +01:00
README.md Put tools README into dist/ folder 2017-03-03 17:52:43 +01:00
release.sh Fix release.sh 2017-03-09 13:15:00 +01:00
rest_api_test.go Rename CidArg to Pin. 2017-03-08 16:57:27 +01:00
rest_api.go Support replication factor as a pin parameter 2017-03-08 18:50:54 +01:00
ROADMAP.md Fix #15: Peers() provides lots of information now 2017-01-26 20:24:00 +01:00
rpc_api.go Support replication factor as a pin parameter 2017-03-08 18:50:54 +01:00
silent.go Fix #24: Auto-join and auto-leave operations for Cluster 2017-02-07 18:46:09 +01:00
util.go Issue #41: Add Replication factor 2017-02-14 19:13:08 +01:00
version.go Release 0.0.10 2017-03-09 15:04:42 +01:00

ipfs-cluster

standard-readme compliant GoDoc Go Report Card Build Status Coverage Status

Collective pinning and composition for IPFS.

THIS SOFTWARE IS ALPHA

ipfs-cluster allows to replicate content (by pinning) in multiple IPFS nodes:

  • Works on top of the IPFS daemon by running one cluster peer per IPFS node (ipfs-cluster-service)
  • A replication_factor controls how many times a CID is pinned in the cluster
  • Re-pins stuff in a different place when a peer goes down
  • Provides an HTTP API and a command-line wrapper (ipfs-cluster-ctl)
  • Provides an IPFS daemon API Proxy which intercepts any "pin"/"unpin" requests and does cluster pinning instead
  • The IPFS Proxy allows to build cluster composition, with a cluster peer acting as an IPFS daemon for another higher-level cluster.
  • Peers share the state using Raft-based consensus. Uses the LibP2P stack (go-libp2p-raft, go-libp2p-rpc...)

Table of Contents

Maintainers and Roadmap

This project is captained by @hsanjuan. See the captain's log for a written summary of current status and upcoming features. You can also check out the project's Roadmap for a high level overview of what's coming and the project's Waffle Board to see what issues are being worked on at the moment.

Install

ipfs-cluster is written in Go. In order to install the ipfs-cluster-service the ipfs-cluster-ctl tool simply download this repository and run make as follows:

$ go get -u -d github.com/ipfs/ipfs-cluster
$ cd $GOPATH/src/github.com/ipfs/ipfs-cluster
$ make install

This will install ipfs-cluster-service and ipfs-cluster-ctl in your $GOPATH/bin folder. See the usage below.

Usage

ipfs-cluster-service

For information on how to configure and launch an IPFS Cluster peer see the ipfs-cluster-service README.

ipfs-cluster-ctl

For information on how to manage and perform operations on an IPFS Cluster peer see the ipfs-cluster-ctl README.

Go

IPFS Cluster nodes can be launched directly from Go. The Cluster object provides methods to interact with the cluster and perform actions.

Documentation and examples on how to use IPFS Cluster from Go can be found in godoc.org/github.com/ipfs/ipfs-cluster.

Additional docs

You can find more information and detailed guides:

Note: please contribute to improve and add more documentation!

API

TODO: Swagger

This is a quick summary of API endpoints offered by the Rest API component (these may change before 1.0):

Method Endpoint Comment
GET /id Cluster peer information
GET /version Cluster version
GET /peers Cluster peers
POST /peers Add new peer
DELETE /peers/{peerID} Remove a peer
GET /pinlist List of pins in the consensus state
GET /pins Status of all tracked CIDs
POST /pins/sync Sync all
GET /pins/{cid} Status of single CID
POST /pins/{cid} Pin CID
DELETE /pins/{cid} Unpin CID
POST /pins/{cid}/sync Sync CID
POST /pins/{cid}/recover Recover CID

Architecture

The best place to get an overview of how cluster works, what components exist etc. is the architecture.md doc.

Contribute

PRs accepted.

Small note: If editing the README, please conform to the standard-readme specification.

License

MIT © Protocol Labs, Inc.