Databox container manager and dashboard server
Shell JavaScript Makefile
Clone or download
Toshbrown Improve integration tests (#251)
* Allow selection of dev|latest|release in the test scripts

* Add a test for Docker DNS resolution

* Adds tests for restart and reinstall of app driver pair

* Add encrypted GitHub key to travis.yml

* move to databoxsystems/githubreleasetool image

* Get Travis-CI to build the documentation

* Fix GitHubReleaseTool Config path

* Add a config file for docs generation and commit docs back to git hub on commits to the master branch

* Increase test timeouts
 
* Speed up the unit tests unless databox-components has been modified

* Added debug output on test fail to help pinpoint failures

* add timestamps to debug output on failure

* Update tests to select registry

* Adds test for restarting databox will app driver pair installed
Latest commit dbfc096 May 22, 2018
Permalink
Failed to load latest commit information.
aarch64 aarch64 support and up to date docker deb package for aarch64 May 22, 2017
dockerfiles/curl Adds the external IP to container-manager and app-store SSL certs (#253) May 8, 2018
documents Improve integration tests (#251) May 22, 2018
scripts Improve integration tests (#251) May 22, 2018
sdk Intergrate the sdk Sep 7, 2017
slaStore Delete sladatastore.db (#229) Jan 26, 2018
src Adds the external IP to container-manager and app-store SSL certs (#253) May 8, 2018
.gitignore Adds the external IP to container-manager and app-store SSL certs (#253) May 8, 2018
.travis.yml Improve integration tests (#251) May 22, 2018
CHANGELOG.md Intergrate the sdk Sep 7, 2017
CONTRIBUTING.md Addresses review comments Oct 5, 2017
LICENSE Update year in license (#238) Feb 1, 2018
README.md Add funding/grant information (#250) Mar 28, 2018
TESTING.md Addresses comments Oct 5, 2017
Version Updating version to 0.4.0 Apr 26, 2018
databox-build-core enable broadcast traffic relay (#243) Apr 26, 2018
databox-components Remove store-json (#234) Jan 26, 2018
databox-fetch-components Allow pinning of repo and branch for testing (#100) Sep 27, 2017
databox-install-component Remove store-json (#234) Jan 26, 2018
databox-install-ubuntu-service Make databox work as a systemd service on ubuntu (#233) Jan 26, 2018
databox-pin prompt after variables are set Sep 27, 2017
databox-start Improve integration tests (#251) May 22, 2018
databox-stop enable broadcast traffic relay (#243) Apr 26, 2018
databox-test Improve integration tests (#251) May 22, 2018
docker-compose.yaml Authentication (#239) Feb 15, 2018
docker-core-network.yaml enable broadcast traffic relay (#243) Apr 26, 2018
docker-databox-appstore.yaml Enable local app server over https (#215) Dec 14, 2017
docker-databox-sdk.yaml small edit of the docker-databox-sdk.yaml for mock datasource Oct 5, 2017
package.json Authentication (#239) Feb 15, 2018

README.md

Databox

The Databox platform is an open-source personal networked device, augmented by cloud-hosted services, that collates, curates, and mediates access to an individual’s personal data by verified and audited third-party applications and services. The Databox will form the heart of an individual’s personal data processing ecosystem, providing a platform for managing secure access to data and enabling authorised third parties to provide the owner with authenticated services, including services that may be accessed while roaming outside the home environment. Databox project is led by Dr Hamed Haddadi (Imperial College) in collaboration with Dr Richard Mortier (University of Cambridge) and Professors Derek McAuley, Tom Rodden, Chris Greenhalgh, and Andy Crabtree (University of Nottingham) and funded by EPSRC. See http://www.databoxproject.uk/ for more information.

Getting Started

These instructions will get a copy of the Databox up and running on your local machine. For development and testing purposes, see Development section below.

Prerequisites

  1. Requires Docker. Read here for docker installation.
  2. Once docker is installed and running, install docker-compose. Read here for installation.
  3. Requires Git (if it is not already on your machine). Read here for git installation.

Note: currently supported platforms are Linux and MacOS. Running on other platforms is possible using a virtual machine running Linux with bridge mode networking. Also note that more than one CPU core must be allocated to the VM.

Get started

  1. Clone Databox Git repo.
git clone https://github.com/me-box/databox.git

Operation

Make sure Docker is installed and running before starting Databox. Run the following to get your databox up and running.

cd databox
./databox-start

The above script pulls Databox pre-build images published on Docker hub and run Databox on your local machine.

Once it's started, point a web browser at http://127.0.0.1 and follow the instructions to configure your HTTPS certificates to access Databox UI securely (using a web browser https://127.0.0.1, or the iOS and Android app).

Note: Using the databox iOS and Android apps with MacOS may require you to modify your firewall to enable external access to port 80 and 443.

To stop databox and clean up,

./databox-stop

Development

Get Started with the Graphical SDK

The graphical SDK will allow you to quickly build and test simple databox apps. To start the SDK run:

./databox-start sdk

The SDK web UI is available at http://127.0.0.1:8086

To stop the SDK run:

./databox-stop sdk

Developing apps and drivers without the SDK

It is possible to develop Databox apps and driver without the SDK. Currently, Python, Golang and NodeJs all have support libraries. Building outside the SDK allows you to make smaller more efficient containers and use more third-party libraries.

Developing apps and drivers 'does not' require data box to be started in dev mode.

To get started all you need is a Dockerfile and a databox-manifest.json examples can be found in the libraries '/samples' directories. To make your app available to install locally on your databox you will need to upload the manifest to http://127.0.0.1:8181 and use docker build -t [your-app-name] .. Once the manifest is uploaded and the image has built then you should be up to install the app on your local Databox.

If you would like to modify one of the currently available actual drivers you can do so by doing the following:

./databox-install-component driver-os-monitor

This will download and build the code on your machine and upload the Databox manifest to your local app store. You can also use this with your repositories and forks using:

./databox-install-component [GITHUB_USERNAME]/[GITHUB_REPONAME]

Developing core components

To develop on the platform and core components run the data-box start script with 'dev' parameter. See below.

./databox-start dev

Unlike using the pre-built images, this will clone all the relevant source repositories locally, and build them into the required Docker images.

When you start in development mode only the core-components are built from source. If you wish to develop one of the available apps or drivers then you can add them to your local install using:

./databox-install-component driver-os-monitor

This will download and build the code on your machine and upload the Databox manifest to your local app store. You can also use this with your repositories and forks using:

./databox-install-component [GITHUB_USERNAME]/[GITHUB_REPONAME]

Databox Components

Databox has a number of platform components, divided into two parts: Core and Other components. Core components are required for Databox function. Other components of things like apps and drivers to demonstrate Databoxes functionality.

Core

Other

Drivers

Apps

Libraries for writing drivers and apps

For writing a new driver or app for Databox, one needs Databox APIs. To make app/driver development easy, we have wrapped Databox APIs in nodejs, python and go. Using any of these libraries, a developer can build their databox app/driver.

  • lib-node-databox: Databox Nodejs API library for building databox apps and drivers.
  • lib-python-databox: Databox Python API library for building databox apps and drivers.
  • lib-go-databox: Databox Go API library for building databox apps and drivers.

API and System specifications

Databox System Design document can be find here and general API specifications are here.

Running the tests

./databox-test

For more details, have a look here.

Contributing

The databox project welcomes contributions via pull requests see CONTRIBUTING.md for more information. A good start is to look at the current issues and forking the databox repo and fixing bugs/issues and submitting a pull request. Read more on Fork and Pull here.

Versioning

This documentation is up-to-date till this commit. The master branches on all components point to the current release and are tagged in git using semver.

Authors

The list of contributors who participated in this project.

License

MIT Licence, See here.

Contributing

The Databox project welcomes contributions via pull requests see CONTRIBUTING.md for more information.

Development of databox was supported by the following funding

EP/N028260/1, Databox: Privacy-Aware Infrastructure for Managing Personal Data

EP/N028260/2, Databox: Privacy-Aware Infrastructure for Managing Personal Data

EP/N014243/1, Future Everyday Interaction with the Autonomous Internet of Things

EP/M001636/1, Privacy-by-Design: Building Accountability into the Internet of Things (IoTDatabox)

EP/M02315X/1, From Human Data to Personal Experience