2018-08-20 20:46:45 +01:00
# Storj V3 Network
2018-04-06 17:32:34 +01:00
2018-06-26 12:48:02 +01:00
[![Go Report Card ](https://goreportcard.com/badge/github.com/storj/storj )](https://goreportcard.com/report/github.com/storj/storj)
2018-04-06 17:32:34 +01:00
[![Go Doc ](https://img.shields.io/badge/godoc-reference-blue.svg?style=flat-square )](http://godoc.org/github.com/storj/storj)
2018-06-26 12:48:02 +01:00
[![Coverage Status ](https://coveralls.io/repos/github/storj/storj/badge.svg?branch=master )](https://coveralls.io/github/storj/storj?branch=master)
2018-04-06 17:32:34 +01:00
2018-10-25 08:01:23 +01:00
< img src = "https://github.com/storj/storj/raw/master/resources/logo.png" width = "100" >
2018-04-06 17:32:34 +01:00
2018-10-25 08:02:52 +01:00
Storj is building a decentralized cloud storage network and is launching in
2018-08-29 16:28:29 +01:00
early 2019.
2018-04-06 17:32:34 +01:00
----
2018-10-25 08:02:52 +01:00
Storj is an S3 compatible platform and suite of decentralized applications that
2018-08-29 16:28:29 +01:00
allows you to store data in a secure and decentralized manner. Your files are
encrypted, broken into little pieces and stored in a global decentralized
2018-08-26 17:38:38 +01:00
network of computers. Luckily, we also support allowing you (and only you) to
2018-08-29 16:28:29 +01:00
retrieve those files!
2018-04-06 17:32:34 +01:00
2018-08-17 20:05:03 +01:00
## Table of Contents
2018-10-30 00:36:17 +00:00
- [Contributing ](#contributing-to-storj )
- [Installation ](#installation )
- [Using via Storj CLI ](#start-using-storj-via-the-uplink-cli )
2018-08-29 16:28:29 +01:00
- [Using via AWS S3 CLI ](#start-using-storj-via-the-aws-s3-cli )
- [License ](#license )
2018-08-17 20:05:03 +01:00
- [Support ](#support )
2018-10-30 00:36:17 +00:00
# Contributing to Storj
All of our code for Storj v3 is open source. Have a code change you think would make Storj better? Please send a pull request along!
Have comments, bug reports, or suggestions? Want to propose a PR before hand-crafting it? Jump on to [our Rocketchat ](https://community.storj.io ) and join the #dev channel to join the developer community and to talk to the Storj core team.
# Installation
2018-04-06 17:32:34 +01:00
2018-07-19 20:48:51 +01:00
### Install required packages
2018-04-17 14:38:31 +01:00
2018-10-30 00:36:17 +00:00
To get started running Storj locally, download and install the latest release of Go (at least Go 1.11) at [golang.org ](https://golang.org ).
2018-04-17 14:38:31 +01:00
2018-10-30 00:36:17 +00:00
You will also need [Git ](https://git-scm.com/ ). (`brew install git`, `apt-get install git` , etc).
If you're building on Windows, you also need to install and have [gcc ](https://gcc.gnu.org/install/binaries.html ) setup correctly.
2018-04-17 14:18:36 +01:00
2018-10-30 00:36:17 +00:00
We support Linux, Mac, and Windows operating systems. Other operating systems supported by Go should also be able to run Storj.
2018-08-10 16:28:38 +01:00
2018-08-26 17:38:38 +01:00
### Download and compile Storj
2018-08-23 08:05:56 +01:00
2018-10-30 00:36:17 +00:00
> **Aside about GOPATH**: If you don't have a GOPATH set, you can ignore this > aside. Go 1.11 supports a new feature called Go modules,
2018-08-26 17:38:38 +01:00
> and Storj has adopted Go module support. If you've used previous Go versions,
> Go modules no longer require a GOPATH environment variable. Go by default
> falls back to the old behavior if you check out code inside of the directory
> referenced by your GOPATH variable, so make sure to use another directory,
> `unset GOPATH` entirely, or set `GO111MODULE=on` before continuing with these
2018-10-30 00:36:17 +00:00
> instructions.
First, clone this repository.
2018-08-23 08:05:56 +01:00
```bash
git clone git@github.com:storj/storj storj
cd storj
2018-07-19 20:48:51 +01:00
```
2018-04-17 14:18:36 +01:00
2018-10-30 00:36:17 +00:00
Then, let's install Storj.
2018-04-17 16:26:54 +01:00
2018-07-19 20:48:51 +01:00
```bash
2018-10-30 00:36:17 +00:00
go install -v ./cmd/...
2018-07-19 20:48:51 +01:00
```
2018-04-27 13:53:46 +01:00
2018-10-30 00:36:17 +00:00
Done!
### Working with the test network
Our test network daemon is called CaptPlanet. First, configure and run it:
2018-04-06 17:32:34 +01:00
2018-07-19 20:48:51 +01:00
```bash
2018-10-30 00:36:17 +00:00
~/go/bin/captplanet setup
2018-08-26 17:38:38 +01:00
~/go/bin/captplanet run
2018-07-31 18:13:32 +01:00
```
2018-10-30 00:36:17 +00:00
Then, you can run all of the unit tests:
2018-08-01 22:18:09 +01:00
2018-07-31 18:13:32 +01:00
```bash
2018-08-26 17:38:38 +01:00
go test -v ./...
2018-07-31 18:13:32 +01:00
```
2018-10-30 00:36:17 +00:00
You can also execute only a single test package if you like. For example:
2018-08-26 17:38:38 +01:00
`go test ./pkg/kademlia` . Add `-v` for more informations about the executed unit
tests.
2018-04-06 17:32:34 +01:00
2018-10-30 00:36:17 +00:00
More options can be shown by running `~/go/bin/captplanet --help` .
2018-08-29 16:28:29 +01:00
2018-10-30 00:36:17 +00:00
# Start Using Storj via the Uplink CLI
### Configure the Uplink CLI
2018-08-29 16:28:29 +01:00
2018-10-30 00:36:17 +00:00
1) In a new terminal window, setup the uplink CLI: ```$ uplink setup```. Keep `captplanet` running, as it ensures you have a test network to bounce data off of.
2) Edit the API Key, overlay address, and pointer db address fields in the Storj
CLI config file located at ```~/.uplink/cli/config.yaml``` with values from the
`captplanet` config file located at ```~/.uplink/capt/config.yaml```
2018-08-29 16:28:29 +01:00
2018-10-30 00:36:17 +00:00
### Test out some Uplink CLI commands!
2018-08-29 16:28:29 +01:00
2018-10-30 00:36:17 +00:00
1) Create a bucket: ```$ uplink mb s3://bucket-name```
2) Upload an object: ```$ uplink cp ~/Desktop/your-large-file.mp4 s3://bucket-name```
3) List objects in a bucket: ```$ uplink ls s3://bucket-name/ ```
4) Download an object: ```$ uplink cp s3://bucket-name/your-large-file.mp4 ~/Desktop/your-large-file.mp4```
6) Delete an object: ```$ uplink rm s3://bucket-name/your-large-file.mp4```
2018-08-29 16:28:29 +01:00
# Start Using Storj via the AWS S3 CLI
2018-10-30 00:36:17 +00:00
### Configure AWS CLI
2018-08-29 16:28:29 +01:00
Download and install the AWS S3 CLI: https://docs.aws.amazon.com/cli/latest/userguide/installing.html
In a new terminal session configure the AWS S3 CLI:
```bash
$ aws configure
AWS Access Key ID [None]: insecure-dev-access-key
AWS Secret Access Key [None]: insecure-dev-secret-key
Default region name [None]: us-east-1
Default output format [None]:
```
2018-10-30 00:36:17 +00:00
### Test out some AWS S3 CLI commands!
2018-08-29 16:28:29 +01:00
1) Create a bucket: ```$ aws s3 --endpoint=http://localhost:7777/ mb s3://bucket-name```
2) Upload an object: ```$ aws s3 --endpoint=http://localhost:7777/ cp ~/Desktop/your-large-file.mp4 s3://bucket-name```
3) List objects in a bucket: ```$ aws s3 --endpoint=http://localhost:7777/ ls s3://bucket-name/ ```
4) Download an object: ```$ aws s3 --endpoint=http://localhost:7777/ cp s3://bucket-name/your-large-file.mp4 ~/Desktop/your-large-file.mp4```
5) Generate a URL for an object: ``` $ aws s3 --endpoint=http://localhost:7777/ presign s3://bucket-name/your-large-file.mp4```
6) Delete an object: ```$ aws s3 --endpoint=http://localhost:7777/ rm s3://bucket-name/your-large-file.mp4```
For more information about the AWS s3 CLI visit: https://docs.aws.amazon.com/cli/latest/reference/s3/index.html
# License
2018-10-25 08:02:52 +01:00
The network under construction (this repo) is currently licensed with the
[AGPLv3 ](https://www.gnu.org/licenses/agpl-3.0.en.html ) license. Once the network
reaches beta phase, we will be licensing all client-side code via the
2018-08-29 16:28:29 +01:00
[Apache v2 ](https://www.apache.org/licenses/LICENSE-2.0 ) license.
2018-10-25 08:02:52 +01:00
For code released under the AGPLv3, we request that contributors sign
2018-08-29 16:28:29 +01:00
[our Contributor License Agreement (CLA) ](https://docs.google.com/forms/d/e/1FAIpQLSdVzD5W8rx-J_jLaPuG31nbOzS8yhNIIu4yHvzonji6NeZ4ig/viewform ) so that we can relicense the
code under Apache v2, or other licenses in the future.
# Support
2018-04-06 17:32:34 +01:00
2018-08-26 17:38:38 +01:00
If you have any questions or suggestions please reach out to us on
[Rocketchat ](https://community.storj.io/ ) or
[Twitter ](https://twitter.com/storjproject ).