# Getting started

Here is a guide on how to install **dncli** command line interface and connect to **dfinance**.

## Installation using precompiled binaries

First of all download the latest version of **dncli** for your system from [release pages](https://github.com/dfinance/dnode/releases).

Install downloaded **dncli** binary.

For Mac OS/Linux:

```
mv <downloaded binary path> ./dncli
chmod +x ./dncli
mv ./dncli /usr/local/bin/dncli
```

For Windows:

1. Go to **"Program Files"** directory.
2. Create there **"dn"** directory.
3. Rename the downloaded file to **"dncli"** and put it into **"dn"** directory.

Now **"cmd"** and execute:

```
setx path "%path%;%ProgramFiles%\dn"
```

Now restart **"cmd"**.

Check that installation successful done by running the command:

```
dncli version
```

Your should see your current version of **dncli** in output.

## Configuration

Let's configure **dncli** and after go to the next step:

```
dncli config chain-id dn-testnet
dncli config output json
dncli config indent true
dncli config trust-node true
dncli config compiler tcp://pub.dfinance.co:50051
dncli config node https://rpc.dfinance.co:443
dncli config keyring-backend file
```

These configurations will connect your local **dncli** with remote nodes.

Check that **dncli** configurated correctly:

```
dncli status
```

## Installation from sources

Before we start you should have a correct 'GOPATH', 'GOROOT' environment variables, also installed [Golang](https://golang.org/).

Required:

* golang 1.13.8 or later.
* protoc - here is [installation instruction](https://www.grpc.io/docs/quickstart/go/).

### Build and Install using Makefile

Clone dfinance node repository to suitable place

```
git clone https://github.com/dfinance/dnode.git
```

Build and install **dncli** as binary using Makefile

```
make install-dncli
```

So after this command **dncli** will be available from console

```
dncli version --long
```

### Build without Makefile

And let's build **dncli**:

```
GO111MODULE=on go build -o dncli cmd/dncli/main.go
```

Command must execute fine, after it you can run **dncli**:

```
./dncli version --long
```
