ETC - WETC Bridge Validator Node Setup


Congratulations on your selection as a ETC - WETC Bridge validator!

I. Prerequisites

  1. Post your bridge validator address (0x…) in the forum post where you introduced yourself. POA will add this to the list of bridge validators and let you know when this is done, and will provide you with the syslog_server_port information needed for step II.

  2. Launch a functional Ubuntu 16.04 server using a trusted hosting provider.

    • Record the IP address (required for file setup).
    • Setup ssh access to your node via public+private keys (using passwords is less secure). additional instructions if needed.
    • When creating the node, set a meaningful hostname that can identify you (e.g. validator-0x... ).
  3. Install on your local machine:

    • Python 2 (v2.6-v2.7)/Python3 (v3.5+)
    • Ansible v2.3+
    • Git

II. Configuration

  1. Clone the bridge repository and cd to the bridge-nodejs folder
git clone
cd deployment-bridge/bridge-nodejs
  1. Create the file hosts.yml from hosts.yml.example
cp hosts.yml.example hosts.yml

hosts.yml should look like the following:

            ansible_user:  ubuntu
            VALIDATOR_ADDRESS_PRIVATE_KEY: "aaaaaaaaaaaa"
            syslog_server_port: "udp://" 
  1. Change the example values to the new settings and save the file.
Example Value New Setting / Description
sokol-kovan change to wetc. This is the bridge name and references group_vars/wetc.yml. Set to your remote server IP address.
ansible_user: ubuntu Set to user that will ssh into the node. This is typically ubuntu or root.
VALIDATOR_ADDRESS_PRIVATE_KEY: "aaa..." Set to the private key for the specified validator address.
Port specification for bridge logs. This value will be provided by an administrator in a private message.
  1. hosts.yml should now include your values:
            ansible_user:  ubuntu
            VALIDATOR_ADDRESS_PRIVATE_KEY: "<your_private_key>"
            syslog_server_port: "<your_protocol>://<ip>:<port>"

III. Execution

The playbook can be executed once Ansible is installed and all configuration variables are set.

This will automatically install Docker, docker-compose, Python, Git and its dependencies (such as curl, ca-certificates, apt-transport-https, etc.) to the node. This playbook also creates an additional non-sudo docker user.

ansible-playbook -i hosts.yml site.yml

Useful arguments:

Used with the ansible-playbook command, for example:

 `ansible-playbook -i hosts.yml site.yml --ask-become-pass`
  • --ask-pass - ask for the password used to connect to the bridge VM.

  • --ask-become-pass - ask for the become password used to execute some commands (such as Docker installation) with root privileges.

  • -i <file> - use specified file as a hosts.yml file.

  • -e "<variable>=<value>" - override default variable.

  • --private-key=<file_name> - if private keyfile is required to connect to the ubuntu instance.

IV. Bridge service commands

The Bridge service is named poabridge. Use the default SysVinit commands to start, stop, restart, and rebuild the service and to check the status of the service.

Commands format:

sudo service poabridge [start|stop|restart|status|rebuild]

V. Logs

If the syslog_server_port option in the hosts.yml file is not set, all logs will be stored in /var/log/docker/ folder in the set of folders with the bridge_ prefix.

If the syslog_server_port is set, logs will be redirected to the specified server and cannot be accessed on the bridge machine.

syslog_server_port: "<protocol>://<ip>:<port>" # When this parameter is set all bridge logs will be redirected to the <ip>:<port> address.