# RSK

RSK is configured by default to accept only localhost / 127.0.0.1 as the hostname

So when StackOS provides a custom hostname, or you configure your own DNS, RSK will refuse to serve any jsonrpc responses

### Solution

* Build the basic RSK mainnet image on your local machine

  * <https://developers.rsk.co/rsk/node/install/docker/>

  * ```
    docker build -t mainnet -f Dockerfile.MainNet .
    ```

  * You will end up with a mainnet image

### Prepare node.conf

Take the default node.conf and change the hosts the image will recognize

```
    web: {
        cors: "*",
        http: {
            enabled: true,
            bind_address = "0.0.0.0",
            hosts = ["tagethost.example.com"]
            port: 4444,
            }
        ws: {
            enabled: false,
            bind_address: "0.0.0.0",
            port: 4445,
            }
        }
    }

```

### Make a Dockerfile

```
FROM mainnet:latest
COPY node.conf /etc/rsk/node.conf
```

### Build & push your image

```
docker build -t dockerhubuser/myrsk:v123
docker push dockerhubuser/myrsk:v123
```

### Configure your pod

Download your own image that you just uploaded

![](https://595251010-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Ml8spdZ1HNNSGfvTi3F%2Fuploads%2FofTjGnPLGeha362cMnDj%2Fimage.png?alt=media\&token=971b0833-09cd-4883-baff-7446378d7dd1)

If you want to use custom DNS, set that up ahead of time

{% content-ref url="../operations/custom-dns" %}
[custom-dns](https://docs.stackos.io/stackos-docs/operations/custom-dns)
{% endcontent-ref %}

### Test your connection

Run curl against your host

```
curl https://rsk.mydomain.com/mainnet --header 'Content-Type: application/json'  -XPOST -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
```

Expect a response like<br>

```
{"jsonrpc":"2.0","id":1,"result":"0x0"}
```

### Debug your pod

Edit /etc/rsk/logback.xml and increase verbosity for jsonrpc

Wait 1 hour for rsk to read your new log config (or rebuild your docker image and force the change)

Watch for error messages

```
tail -f  /var/log/rsk/rsk.log | grep rpc
```

### Persistent Storage

If you wish to use persistent storage with rsk, be aware you must update the permissions of the storage directory

Here is an example configuraton

![](https://595251010-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Ml8spdZ1HNNSGfvTi3F%2Fuploads%2FOY63hhn38sPAZoXfFe9E%2Fimage.png?alt=media\&token=cc5efc5a-7842-4a99-8a90-be3542e5f2b0)

After your pod boots, locate your pod name and shell into your pod:

{% content-ref url="../operations/webtty-logs-shell-access" %}
[webtty-logs-shell-access](https://docs.stackos.io/stackos-docs/operations/webtty-logs-shell-access)
{% endcontent-ref %}

**Then run the following command**

```
chown -R rsk:rsk /var/lib/rsk
```

Then your process will run normally.
