Zenko CloudServer, an open-source Node.js implementation of the Amazon S3 protocol on the front-end and backend storage capabilities to multiple clouds, including Azure and Google.
Switch branches/tags
Clone or download
Permalink
Failed to load latest commit information.
.github RF: ZNC-26: Issue Template to highlight Discourse Apr 13, 2018
bin bugfix: ZENKO-315 Update create NFS bucket script Jul 9, 2018
conf bf: ZENKO-835 do not replicate lifecycle actions Jul 28, 2018
docs ZNC-22: DOC: Add developer bootstrap guide Aug 9, 2018
eve Merge remote-tracking branch 'origin/improvement/debug-s3-logs' into … Jul 19, 2018
examples doc: ZENKO-259 mdsearch Apr 27, 2018
lib bf: ZENKO-1146 read from source until replicated to preferred read Sep 14, 2018
localData Set up for file backend. Jun 10, 2016
localMetadata Set up for file backend. Jun 10, 2016
res DOC: Using MS Azure as a backend Nov 7, 2017
tests bf: ZENKO-1146 read from source until replicated to preferred read Sep 14, 2018
.dockerignore Ignore data/metadata dirs Apr 5, 2018
.eslintrc Remove mentions of the forbidden word Jun 1, 2016
.gitignore ZNC-22: DOC: Add developer bootstrap guide Aug 9, 2018
CONTRIBUTING.md Add Contribution rules Jun 8, 2016
DESIGN.md ft: add versioning info to DESIGN.md Jun 10, 2017
Dockerfile ft: add "no_proxy" environment variables Jul 9, 2018
DockerfileMem replace sed to jq + add jq to DockerFileMem Jun 21, 2017
Healthchecks.md ft: add stats to healthcheck route Nov 22, 2016
LICENSE Update LICENSE Feb 25, 2017
README.md FIX: Update link to Configuration doc in README.md Feb 2, 2018
TESTING.md Remove mentions of the forbidden word Jun 1, 2016
_config.yml FIX - yml linting Apr 12, 2017
config.json Fix mongo tests Apr 11, 2018
constants.js ft: ZENKO-270 add data upload limit Jun 30, 2018
dataserver.js bugfix: Fix data server regression Jun 18, 2018
docker-entrypoint.sh ZENKO-1051 Add redis sentinel support Aug 24, 2018
index.js chore: require modules instead of import May 25, 2017
locationConfig.json bf: ZENKO-745 unique location metrics redis keys Jul 21, 2018
mdserver.js ZENKO-140 - rf: move metadata backends to Arsenal Mar 7, 2018
package-lock.json improvement: update arsenal Sep 16, 2018
package.json improvement: update arsenal Sep 16, 2018
tests.bash bf: ZENKO-349 add mongodb metadata env May 12, 2018
tox.ini ZNC-22: DOC: Add developer bootstrap guide Aug 9, 2018
wait_for_local_port.bash Merge branch 'feature/ZENKO-586-file-backend-eve' into tmp/octopus/w/… Jun 27, 2018

README.md

Zenko CloudServer

Zenko CloudServer logo

CircleCI Scality CI Docker Pulls Docker Pulls

Overview

CloudServer (formerly S3 Server) is an open-source Amazon S3-compatible object storage server that is part of Zenko, Scality’s Open Source Multi-Cloud Data Controller.

CloudServer provides a single AWS S3 API interface to access multiple backend data storage both on-premise or public in the cloud.

CloudServer is useful for Developers, either to run as part of a continous integration test environment to emulate the AWS S3 service locally or as an abstraction layer to develop object storage enabled application on the go.

Learn more at www.zenko.io/cloudserver

May I offer you some lovely documentation?

Docker

Run your Zenko CloudServer with Docker

Contributing

In order to contribute, please follow the Contributing Guidelines.

Installation

Dependencies

Building and running the Zenko CloudServer requires node.js 6.9.5 and npm v3 . Up-to-date versions can be found at Nodesource.

Clone source code

git clone https://github.com/scality/S3.git

Install js dependencies

Go to the ./S3 folder,

npm install

If you get an error regarding installation of the diskUsage module, please install g++.

If you get an error regarding level-down bindings, try clearing your npm cache:

npm cache clear

Run it with a file backend

npm start

This starts a Zenko CloudServer on port 8000. Two additional ports 9990 and 9991 are also open locally for internal transfer of metadata and data, respectively.

The default access key is accessKey1 with a secret key of verySecretKey1.

By default the metadata files will be saved in the localMetadata directory and the data files will be saved in the localData directory within the ./S3 directory on your machine. These directories have been pre-created within the repository. If you would like to save the data or metadata in different locations of your choice, you must specify them with absolute paths. So, when starting the server:

mkdir -m 700 $(pwd)/myFavoriteDataPath
mkdir -m 700 $(pwd)/myFavoriteMetadataPath
export S3DATAPATH="$(pwd)/myFavoriteDataPath"
export S3METADATAPATH="$(pwd)/myFavoriteMetadataPath"
npm start

Run it with multiple data backends

export S3DATA='multiple'
npm start

This starts a Zenko CloudServer on port 8000. The default access key is accessKey1 with a secret key of verySecretKey1.

With multiple backends, you have the ability to choose where each object will be saved by setting the following header with a locationConstraint on a PUT request:

'x-amz-meta-scal-location-constraint':'myLocationConstraint'

If no header is sent with a PUT object request, the location constraint of the bucket will determine where the data is saved. If the bucket has no location constraint, the endpoint of the PUT request will be used to determine location.

See the Configuration section in our documentation here to learn how to set location constraints.

Run it with an in-memory backend

npm run mem_backend

This starts a Zenko CloudServer on port 8000. The default access key is accessKey1 with a secret key of verySecretKey1.