Mediachain Architecture

Installing Mediachain

Mediachain is comprised of two main software projects, concat and aleph.
If we were to split them along the popular “porcelain” / “plumbing” axis, aleph would be
the porcelain to concat’s plumbing. The storage, indexing and query of metadata is all
handled by concat’s mcnode program, and the concat project also includes the reference
directory server implementation mcdir.

Controlling a running mcnode is done by issuing HTTP requests to an embedded server that
listens on the localhost interface. While it’s possible to control mcnode directly with curl
or a similar tool, aleph’s mcclient tool is much friendlier and better suited to the job.

The aleph project also includes an interactive REPL for querying a local or remote mcnode,
which provides a flexible javascript environment for exploring the mediachain network.

Be sure to check out the Getting Started Guide after installation to learn
how to use mediachain to query, publish and share data with the network!

Installing concat

Concat’s mcnode program is the main mediachain node application, responsible for data storage,
transmission, and query. It can be easily installed to the cloud with one click, but
if you prefer to run it on your own hardware, the installation is straightforward.

In most cases, a binary release will be the simplest way to get up and running. Find the mcnode
package for your platform from the latest GitHub release page.
Linux packages will end with -linux-amd64.tgz, and macOS packages will end with -darwin-amd64.tgz.

On Windows, we currently recommend installing the linux binaries under the Windows Subsystem for Linux.
The concat README has setup instructions.

To get the latest pre-release code, or if you want to run mcnode on a platform without a binary
release (FreeBSD, Linux on ARM, etc), follow the instructions from concat’s README for
installing from source.

Installing aleph

Dependencies

The aleph project is written in javascript on the Node.js platform, and it requires node version
6 or greater.

Linux

Linux users will need to have a modern c++ compiler installed to build the native dependencies.
You’ll also need the development headers for openssl for the crypto libraries.
On Ubuntu and other debian-based distros, you should be able to do:

$ sudo apt-get install build-essential g++ libssl-dev

macOS

Users on macOS will need the Xcode command line tools installed. This can be done from within
Xcode (under Preferences -> Downloads), or
as a standalone package.

Windows

We’re working on “real” Windows support, but for
now we recommend using the
Windows Subsystem for Linux,
which creates a minimal Ubuntu system that runs under Windows 10 without virtualization. This supports
native linux binaries, and will allow you to install the Linux versions of node.js, git, and other
aleph dependencies.

Now you should be able to install aleph within bash with the instructions below.

Installation

The simplest way to get started is to globally install the latest release from npm:

$ npm install -g aleph

Depending on how node is installed on your system, you may need to run the above command with sudo
or as a user with administrator privileges. For other install methods, see
the aleph README.

Aleph provides an mcclient program for controlling a concat node, and an aleph command for
running a lightweight javascript node. In the instructions below, we’ll discuss using mcclient to
control a concat node. More information about the aleph command is available in
the aleph README.

Configure mcclient

By default mcclient is configured to talk to mcnode at http://localhost:9002, which is the
default address for the mcnode control API server. If mcnode is running on your local machine
(see above for instructions), you shouldn’t need to configure anything.

If you’re controlling a node you’ve deployed to the cloud or installed yourself on a
remote machine, you need to first set up a secure “tunnel”, that will forward traffic from your
local machine to the remote server. See the SSH tunnel instructions for more
information on setting up the tunnel. Once it’s running, you’ll be able to control your remote
node as if it were running on your local machine.

Usage

See the Getting Started Guide to learn how to take your node online,
run queries, publish data, and more.