☄️ Temporal is an easy-to-use, enterprise-grade interface into distributed and decentralized storage
Branch: master
Clone or download
postables Merge pull request #309 from RTradeLtd/fix/docker#temporal
docker: remove unused images from temporal.yml
Latest commit 7697cdd Feb 21, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github docs: migrate development instructions to CONTRIBUTING.md Jan 2, 2019
.scripts dist: remove non-64bit platforms from cross-compile targets Dec 22, 2018
api deps: update ipfs-cluster to 0.9.0 Feb 20, 2019
cmd/temporal deps: update ipfs-cluster to 0.9.0 Feb 20, 2019
docs docs: move protocol expansion to docs folder, update README with link Dec 29, 2018
eh api/v2: update encrypt uploads table when encrypting data druing upload Feb 3, 2019
grpc-clients grpc-clients: update krab fallback Feb 18, 2019
hooks dist: fix variable substitution Dec 21, 2018
log log: add additional tests Dec 15, 2018
mail mail: add bulk send tests Feb 1, 2019
mocks chore: cherry pick deps Jan 23, 2019
queue deps: update ipfs-cluster to 0.9.0 Feb 20, 2019
rtfscluster deps: update ipfs-cluster to 0.9.0 Feb 20, 2019
rtns deps: pin IPFS to v0.4.18, pin RTrade deps to ~v2.0.0 Feb 6, 2019
setup setup/configs: update zabbix temporal template Feb 11, 2019
testenv @ f5a83c0 chore: update testenv submodule Feb 14, 2019
utils deps: pull in rtfs changes Jan 31, 2019
vendor deps: update ipfs-cluster to 0.9.0 Feb 20, 2019
.gitattributes Add gitattributes for Windows Aug 31, 2018
.gitignore chore: add all log files to gitignore Jan 4, 2019
.gitmodules chore: fix git submodules Dec 16, 2018
.travis.yml chore: fix deploy access token Feb 11, 2019
CHANGELOG-V2.md docs: update changelog Feb 14, 2019
CONTRIBUTING.md docs: migrate development instructions to CONTRIBUTING.md Jan 2, 2019
Dockerfile cmd/temporal: use flag for config path, default to CONFIG_DAG Jan 2, 2019
Gopkg.lock deps: update ipfs-cluster to 0.9.0 Feb 20, 2019
Gopkg.toml deps: update ipfs-cluster to 0.9.0 Feb 20, 2019
LICENSE Create LICENSE Feb 4, 2019
Makefile chore: remove vendor-update target from makefile Feb 18, 2019
README.md docs: remove extra dot Feb 6, 2019
VERSIONING.md docs: clean up wording Dec 23, 2018
codecov.yml chore: add more lenient codecov config Sep 23, 2018
temporal.yml Merge branch 'master' into fix/docker#temporal Feb 21, 2019

README.md

Temporal ☄️

About Temporal · Web Interfaces · Usage and Features · Contributing · License · Thanks

GoDocs available Travis Build Status Release Clean code


About Temporal

Temporal is an enterprise-grade storage solution featuring an easy to consume API that can be easily integrated into your existing application stack, providing all the benefits of the distributed web, without any of the overhead that comes with running distributed storage nodes. Currently supporting public and private IPFS+IPNS usage, subsequent releases will bring about support for additional protocols like STORJ, and SWARM.

Temporal's API comes in two flavours, hosted or on-site. Should you not have the resources, or interest in maintaining your own infrastructure you can take advantage of our hosted API running in our very own datacenter. Those which have the interest, and/or resources may deploy Temporal within your own environments. For those that deploy Temporal themselves, we offer paid for support, installation, tutorials, and product usage information sessions allowing organizations to leverage all the capabilities that Temporal offers.

Temporal is modular such that the underlying protocols it connects to, can easily be upgraded, and replaced with without having to change the overall architecture. Simply write the interface for whatever protocol you're interested in, and a subsequent RabbitMQ consumer, and you're good to go. For a guideline on how this can be accomplished see protocol-expansion.md

We have a telegram chat, feel free to join and ask any questions you may have that could not be answered by reading the documentation here. We have an in-depth wiki which contains additional information such as architectural diagrams, design decisions, and more.

Goals

  • Provide an easy to use interface into distributed and decentralized storage technologies.
  • Target developers via the API, and non-developers via the web interface.
  • Educate about decentralized and distributed storage technologies
  • Introduce these new storage technologies to audiences who may have otherwise not heard of them
  • Help organizations make informed decisions about whether or not integrating distributed and decentralized storage technologies is the right choice for your business needs.

Versioning Policy

Information about our versioning policies are available in VERSIONING.md

Web Interfaces

For those less interested in API usage, we have a web interface which can be used with two methods of access:

Please note that support for the I2P Interface is very experimental at the moment and does not offer HTTPS, as well as very infrequent updates.There are no stability, or even functionality guarantees for the I2P interface.

How We're Different

We aren't doing an ICO, and we're not wasting our development efforts on redesigning the wheel with some new fangled storage protocol, and blockchain solution. Although we're using bleeding edge technology, we're commited to using names, and open source software that is already tested, and that has a thriving development community behind them. And finally, results matter; It is far to common in this space for companies to ask you to hand over your hand earned cash on the fleeting promise that it will lead to something, but that something is either never delivered, or extremely lack in features, and is not the original idea which was sold.

We aren't running in a third-party cloud environment, as our hosted API runs in our very own datacenter. The only third-party cloud environments we utilize are for off-site backups, and service should any critical infrastructure failures occur in our datacenter. In the future as we expand and receive more funding, we will build-out another facility to provide our off-site backups and service endpoints. We are committed to bringing back control to users data, and we believe the only way to fully do this, is to build our own infrastructure, for which we maintain all control, and design decisions for. As a startup, we have to rely on third-party cloud providers for backups and off-site service points due to funding limitations, however we realize this is undesirable. This is one of our main concerns, and is something we are intent on resolving when our company grows, and we receive more funding.

Funding

Currently the project is paid for by RTrade Technologies Ltd, and we will not be doing an ICO. Funding is derived from private investment, mining farm profits, as well as purchasing of RTC.

Should you wish to consider donations, or private investment email admin@rtradetechnologies.com.

Should you wish to contribute not just to TEMPORAL, but to the overall success of RTrade and our platform, you may purchase RTC for ETH from our RTCETH Smart Contract

Media

Channels:

Selected Content:

Data Privacy

Our datacenter and cloud environments are all located within Canada, which has exceptional data-privacy laws. We comply with all laws and regulations surrounding data storage regulation within Canada. Should you feel like there is any discrepancy here, please contact us at admin@rtradetechnologies.com and we will be happy to resolve your concerns, and if there's anything we need to change, we will do so.

One of the big concerns with IPFS, and even cloud data storage in general is encryption. As IPFS doesn't yet support native data encryption, we allow users to encrypt their data using AES256-CFB. While this is better than storing data without encryption on IPFS, there are still some concerns with encrypted data storage on IPFS. Namely, if anyone is ever able to discover the content hash and pin the content, it will always be available to them. This is of big concern when using encryption algorithms as it is theoretically possible for someone to persist that data within their own storage system until the desired ciphers are broken, and they can crack the encryption algorithm. If this is something that is of concern to you, and even better solution is to encrypt your data, and store in on private networks. We have plans to eventually migrate to AES256-GCM which is more secure than AES256-CFB, and allow encryption of data with IPFS keys.

Usage and Features

Spinning up a Node

Once you have a config.json set up (a template can be generated using temporal init), you can run the following commands to use docker-compose to spin up Temporal:

$> curl https://raw.githubusercontent.com/RTradeLtd/Temporal/V2/temporal.yml --output temporal.yml
$> docker-compose -f temporal.yml up

The standalone Temporal Docker image is available on Docker Hub.

Refer to the temporal.yml documentation for more details.

API Documentation

Our API documentation has been redesigned to use slate, hosted through IPFS. The main way to view it is through our gateway. However, in theory it is viewable across any gateway by navigating to /ipns/docs.api.temporal.cloud

Features

  • API based
  • Detailed logging
  • Open source
  • Public+Private IPFS usage
  • Public+Private IPNS usage
  • Private IPFS Network Management
  • Modular design allowing for ease of integration with multiple storage protocols
  • Optional data encryption before your content leaves server memory, and touches any distributed storage network.
  • Redundant architecture designed for running two of every service, allowing for service availability despite catastrophic hardware failures.

Supported Technologies

Currently we fully support all non-experimental IPFS and IPNS feature-sets. Features like UnixFS, MFS are on-hold until their specs, and implementations become more stable and usable within production environments. Additional protocols like STORJ, and SWARM will be added, fully supporting public+private integrations. At the moment, the next planned protocol is STORJ, with alpha integration expected near the of January/February 2019.

System Monitoring

Temporal is designed to be monitored witha combination of Zabbix, and Grafana+Prometheus. Zabbix is used for operating system, and hardware level metric collection, while Grafana+Prometheus are used to scrape API metrics, along with IPFS and IPFS Cluster node metrics. We include Zabbix templates, and Grafana graphs within the setup/configs folder.

License

In order to better align with the same open-source values that originally inspired this project, Temporal has been changed to an MIT license for its production release. Originally I (postables) intended to release under Apache 2.0, however I think to truly help the open-source, and IPFS movement launching under the MIT license is needed.

FOSSA Status

Thanks

Without open source, Temporal wouldn't be possible, as such we would like to extend our thanks to all of the open source projects for which Temporal depends on. If you notice any are missing from the list below please open an issue and we will add it to the list: