# Build and Deploy

- Setting up the environment

- Build a plugin

If you are ready to start building your own plugins go ahead and start `here`_

## Setting up the environment

Note

Plugeth is built on a fork of Geth and as such requires familiarity with Go and a funtional environment in which to build Go projects. Thankfully for everyone Go provides a compact and useful tutorial as well as a space for practice.

PluGeth is an application built in three seperate repositories.

- PluGeth

- PluGeth-Utils

- PluGeth-Plugins

For our purposed here you will only need to clone Plugeth and Plugeth-Plugins. Once you have them cloned you are ready to begin. First we need to build geth though the PluGeth project. Navigate to `plugeth/cmd/geth` and run:

    $ go get

This will download all dependencies needed for the project. This process will take a moment or two the first time through. Next run:

    $ go build

Once this is complete you should see a `.ethereum` folder in your home directory.

At this point you are ready to start downloading local ethereum nodes. In order to do so, from `plugeth/cmd/geth` run:

    $ ./geth

Note

`./geth` is the primary command to build a Mainnet node. Building a mainnet node requires at least 8 GB RAM, 2 CPUs, and 350 GB of SSD disks. However, dozens of available flags will change the behavior of whichever network you choose to connect to. `--help` is your friend.

## Build a plugin

For the sake of this tutorial we will be building the Hello plugin. Navigate to `plugethPlugins/packages/hello`. Inside you will see a `main.go` file. From this location run:

    $ go build -buildmode=plugin

This will compile the plugin and produce a `hello.so` file. Move `hello.so` into `~/.ethereum/plugins` . In order to use this plugin geth will need to be started with a `http.api=mymamespace` flag. Additionally you will need to include a `--http` flag in order to access the standard json rpc methods.

Once geth has started you should see that the first `INFO` log reads: `initialized hello` . A new json rpc method, called hello, has been been appended to the list of available json rpc methods. In order to access this method you will need to `curl` into the network with this command:

    $ curl 127.0.0.1:8545 -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"mynamespace_hello","params":[],"id":0}'

You should see that the network has responded with:

    ``{"jsonrpc":"2.0","id":0,"result":"Hello world"}``

Congradulations. You have just built and run your first Plugeth plugin. From here you can follow the steps above to build any of the plugins you choose.

Note

Each plugin will vary in terms of the requirements to deploy. Refer to the documentation of the plugin itself in order to assure that you know how to use it.