Skip to content

Latest commit

 

History

History
137 lines (110 loc) · 2.8 KB

03-server-config.adoc

File metadata and controls

137 lines (110 loc) · 2.8 KB

Server Configuration

By default, the Dshackle looks for config in the following locations:

  1. Path specified by optional --configPath <…​> command line option

  2. /etc/dshackle/dshackle.yaml

  3. ./dshackle.yaml (i.e. in the current working dir)

If none found the application exists with an error.

Example dshackle.yaml configuration:
version: v1
port: 2449
tls:
  enabled: true
  server:
    certificate: "server.crt"
    key: "server.p8.key"
  client:
    require: true
    ca: "ca.crt"
cluster:
  include: "upstreams.yaml"

It configures following:

  • server is listening with gRCP API on 0.0.0.0:2449

  • TLS is enabled

  • server certificate is located at server.crt with the key for it at server.p8.key

  • the server requires a client authentication by TLS client certificate signed by ca.crt certificate

  • no JSON RPC is configured

  • upstreams configuration is configured in the file upstreams.yaml

Table 1. Configuration
Name Example Description

version

Version of the format of the config

port

port: 12449

Port to bind gRPC server. 2449 by default

tls

TLS configuration for gRPC. See Authentication for details

proxy

Proxy configuration

upstreams

Upstreams configuration

Enabling JSON RPC proxy

In addition to the gRPC protocol, Dshackle provides access compatible with Bitcoin and Ethereum JSON RPC. The same server can be accessible as an HTTP JSON RPC and WebSocket JSON RPC. For Ethereum, besides the standard RPC calls, it provides RPC subscriptions with eth_subscribe method.

Example proxy:
version: v1
port: 2449

proxy:
  host: 0.0.0.0
  port: 8080
  routes:
    - id: eth
      blockchain: ethereum

cluster:
  include: "upstreams.yaml"

With that configuration Dshackle starts a JSON RPC proxy:

  • JSON RPC server is listening on 0.0.0.0:8080

  • http://0.0.0.0:8080/eth (and ws://0.0.0.0:8080/eth) provides access to Ethereum API routed to an available upstream

Note
Same URL should be used to access both HTTP RPC and WebSocket RPC
Full configuration:
proxy:
  port: 8080
  tls:
    enabled: true
    server:
      certificate: server.crt
      key: server.p8.key
    client:
      require: true
      ca: ca.crt
  routes:
    - id: eth
      blockchain: ethereum
    - id: etc
      blockchain: ethereum_classic
Table 2. Proxy configuration
Name Example Description

host

host: 0.0.0.0

Host to bind proxy server. 127.0.0.1 by default

port

port: 8545

Port to bind proxy server. 8080 by default

enabled

enabled: true

Enable/disable proxy server

tls

TLS configuration for proxy. See Authentication for details

routes

List of endpoints to proxy