# Hive Developer Portal

### Using jussi as a Multiplexer

Optimize your local applications with jussi

By the end of this recipe you should know how to install `jussi` on your local subnet to take advantage of its features.

This recipe will take you through the process of setting up `jussi` for a small infrastructure like a home network.

## Intro

What is a Multiplexer? In this context, a multiplexer an appliance that accepts API requests from multiple applications running on the same subnet and passes them to an upstream node. This means, for example, if you have two applications that request the same block from API, your local `jussi` instance will make a single upstream request for the block and return it to both applications.

Deploying `jussi` on your own local subnet will help improve efficiency because your local applications won’t require SSL and `jussi` can take care of gzipping requests that go out over the Internet.

## Steps

1. Setting Up Docker In order to run `jussi`, `docker` is recommended
2. Install `jussi` Clone `jussi` from the repository and build
3. Configure Your Apps Point all of your applications to this node

#### 1. Setting Up Docker

Although it’s possible to set up `jussi` to run natively without virtualization, `docker` is recommended. Setting up `docker` depends on your operating system:

- Docker for Linux
- Docker for macOS
- Docker for Windows

#### 2. Install `jussi`

    git clone https://github.com/steemit/jussi.git
    cd jussi

Edit the file `DEV_config.json` and change all:

`https://steemd.steemitdev.com`

… to …

`https://api.steemit.com`

Also consider adding the `retries` element to your `DEV_config.json`.

Then build and run:

    docker build -t="$USER/jussi:$(git rev-parse --abbrev-ref HEAD)" .
    docker run -itp 9000:8080 "$USER/jussi:$(git rev-parse --abbrev-ref HEAD)"

#### 3. Configure Your Apps

Now, you can use your new `jussi` node as if it’s a full node running locally. For example:

    curl -s --data '{"jsonrpc":"2.0", "method":"condenser_api.get_block", "params":[8675309], "id":1}' http://localhost:9000

In this case, `http://localhost:9000` will act like a full node. In reality, it’s passing all of its request to its upstream, `https://api.steemit.com`.

Once you’ve implemented your own `jussi` node in this manner, you should notice an improvement in bandwidth utilization. If you’re internet provider implements packet shaping strategies, this will have a positive impact because you are no longer streaming the entire blockchain once for each application.

## Troubleshooting / Updating

#### Error: `invalid argument "/jussi:master" for t=/jussi:master: invalid reference format`

Solution:

You’re probably trying to run on a raspberry pi. Just replace `$USER` in the command with the current user.

If you would like to update `jussi` to the latest version, here’s a quick way:

    git stash && git pull && git stash pop

If there are `git` errors due to structural changes to `DEV_config.json`, just start over from step 2 and reclone `jussi` to a fresh location. Otherwise, you should be able to rebuild and run.