POA
English
English
  • Welcome to POA
  • Features
    • Known Validators
    • POADAO Consensus
    • Bridged Native Token
    • On-Chain Randomness
  • Use Cases
    • Scalability for BlockChain Games
    • Community-Based Currencies
    • Subsidized Transactions
    • Decentralized Finance (DeFi)
  • DApp Spotlights
    • Ethernal.World
  • Roadmap
  • For users
    • POA Tokens
      • POA Merger & STAKE Swap
      • POA - STAKE FAQs
      • POA Token Supply
      • POA & POA20 Exchanges
      • POA & POA20 on Binance
      • FAQ: POA20 General Questions
    • POA Token Use Cases
      • Utility Token
      • Currency Token
      • Collateral Token
      • Bridged Token
      • Staking Token
      • Stable Token
    • POA to POA20 Bridge
    • Accept POA20 Payments
      • Account Registration & Login (Merchant Setup)
      • Setup Merchant Account
      • Merchant Payment Method Setup
      • Making a Payment with POA20 (Customer Perspective)
    • Tutorials
      • Trading POA20 on DEX.AG
      • POA20 Token Swaps on 1inch.exchange
      • Getting Airdrops via Discord
    • Governance
      • Article: A Successful Year of On-Chain Governance
      • Governance Reports
        • April 2020 Report
        • December 2019 Report
      • Ballot Type, Lifecycle & Limits
    • ❌Nifty Wallet (Discontinued)
      • Getting Started
      • Import and Interact with Smart Contracts
      • Connect to a Hardware Wallet (Ledger & Trezor)
      • Connect to D'CENT Biometric Wallet
      • Connect to Pocket Decentralized Network
    • 3rd Party Wallets
      • Trust Wallet
      • MetaMask
    • POA Mania
      • News - Updates
      • Rules
      • POA Mania FAQs
      • Deposit & Withdraw
      • Winner Selection
      • Round Details
      • POA Mania vs PoolTogether
      • POA Mania on Trust Wallet
      • POA Mania Security Audit
      • POA Mania on MetaMask Mobile
    • Whitepaper
      • POADAO v1
        • Introduction
        • Proof of Authority
        • POA Network Functionality
        • Decentralized apps (DApps)
          • Initial ceremony DApp
          • Proof of Physical Address (PoPA) DApp
          • Proof of Bank Account DApp
          • Proof of Social Network DApp
          • Proof of Phone Number DApp
          • Governance DApp
        • Summary & Acknowledgements
        • References
        • Appendix A: Code Samples
          • Ballots manager
          • Validators manager
          • Deployment scripts for the mining node
  • For developers
    • Developer Resources
    • Getting Tokens For Tests
      • ERC20 Test Token Faucet
      • Sokol Testnet Faucet
    • Full Node Setup
      • Install OpenEthereum Client
      • Install Nethermind Client
    • DApp Deployment
    • TheGraph Data Indexing
    • On-Chain Random Numbers
      • RNG explainer (AuRa + RandomAura Contract)
      • Accessing a Random Seed with a Smart Contract
      • Randomness FAQs
    • API & SQL Access
    • Smart Contract Dashboard
    • Grants for Building on POA
  • For validators
    • Getting Started
      • Validator Resources
      • Becoming a Validator
    • Bootnode Setup
      • AWS Bootnode Setup
        • Prerequisites
        • Configure AWS
        • Download and Configure Playbook
        • Deploy
      • Non-AWS Bootnode Setup & Deployment
        • Local/Remote Machine System Requirements
        • Node Preparation
        • Configure node with Deployment Playbook
    • Validator Node Setup
      • Nethermind Upgrade
      • AWS VM for Validator Node Deployment
        • MoC: Master of Ceremony Key Exchange & Generation
        • Current Validators Vote in New Validators
        • Validator Node Setup Prerequisites
        • Configuring AWS
        • Download and Configure Playbook
        • Deployment
        • Upgrade Instance to a Larger Instance Type
      • Non-AWS Validator Node Setup
        • Local & Remote Machine System Requirements
        • Remote Machine Setup
        • Configure Node using Deployment Playbook
      • NetStats Dashboard
    • Hard Forks
      • Parity Upgrade Guide
      • POA Core
        • 2021-11-02 | #24090200
        • 2021-05-24 | #21364900
        • 2020-03-31 | #14350721
        • 2019-12-19 | #12598600
        • 2019-04-29 | #8582254
        • 2018-01-29 | # 772000
        • 2018-10-22 | #5329160
        • POA Core spec.json hard-fork update
      • Sokol
        • 2021-05-24 | #21050600
        • 2020-02-20 | #13391641
        • 2019-12-05 | #12095200
        • 2019-02-06 | #7026400
        • 2019-01-04 | #6464300
        • 2018-09-19 | #4622420
        • 2018-01-18 | #509355
        • 2018-01-08 | #362296
        • Sokol spec.json hard-fork update
    • Validator DApps
      • Validators MetaData DApp
      • Adding or Removing a Validator
  • Media
    • Social Media
    • Media Kit
    • Contact Us
Powered by GitBook
On this page

Was this helpful?

  1. For validators
  2. Validator Node Setup
  3. Non-AWS Validator Node Setup

Configure Node using Deployment Playbook

To run playbook you will need a user on the server with sudo privileges and who can be logged in via SSH public key. By default it is assumed that this user is called ubuntu. If you already have a user with different name who satisfies these requirements, at the top of site.yml in -hosts: all section change line user: ubuntu to the sudo user you have

---
- hosts: all
  user: ubuntu
  become: True
...

Playbook will additionally create a new unprivileged user named validator and add your ssh public key to root account.

1) Clone repository with ansible playbooks and checkout branch with the network name you want to join (e.g. core for mainnet and sokol for testnet)

git clone https://github.com/poanetwork/deployment-playbooks.git
cd deployment-playbooks
# for core mainnet
git checkout core
# OR for sokol testnet
git checkout sokol
# check that you ended up on a correct branch (look where the `*` is)
git branch

2) two files with ssh public key need to be created for ansible playbook to configure node correctly, use the path to your desired key.

cat ~/.ssh/id_poa-core.pub > files/admins.pub
cp files/admins.pub files/ssh_validator.pub

3) create configuration file

cat group_vars/all.network group_vars/validator.example > group_vars/all

4) edit the group_vars/all file and comment out parameters corresponding to aws:

#access_key
#secret_key
#awskeypair_name
#vpc_subnet_id

5) set values given to you by Master of Ceremony for the following parameters in group_vars/all:

  • NODE_FULLNAME - your real name (will be visible to other members of the network)

  • NODE_ADMIN_EMAIL - your public email address (will be visible to other members of the network)

  • MINING_KEYFILE - insert content of your mining keystore json file. Resulting value should be enclosed in single quotes and look similar to this: MINING_KEYFILE: '{"address":"..."}'

  • MINING_ADDRESS - insert your mining key address, e.g. MINING_ADDRESS: "0x..."

  • MINING_KEYPASS - insert your mining key password

8) set values given to you by Master of Ceremony for the following parameters in group_vars/all:

  • NETSTATS_SERVER

  • NETSTATS_SECRET

9) set the following options as follows in group_vars/all:

allow_validator_ssh: true
allow_validator_p2p: true
associate_validator_elastic_ip: false

Double check that allow_validator_ssh is true otherwise you won't be able to connect to the node.

10) create file hosts with the server's ip address (e.g. 192.0.2.1):

[validator]
192.0.2.1

11) run ansible playbook, replace the --key-file path with your desired SSH key

ansible-playbook -i hosts site.yml -K --key-file "~/.ssh/id_poa-core"

12)open NETSTATS_SERVER url in the browser and check that the node named NODE_FULLNAME appeared in the list

Sokol Only Instruction:

Skip this step if you are deploying your node to CORE network. You should not make your enode public as it will make your validator node an easy target for denial of service attacks.

If you are deploying on a testnet (sokol), follow the steps below: login to the node and get enode from parity logs:

Without access to root you can use sudo user instead, append sudo in front of commands after connecting to remote machine

ssh root@192.0.2.1
grep enode /home/validator/logs/parity.log

copy enode uri and send it to Master of Ceremony. If this line is not found, restart parity

systemctl restart poa-parity

and try again. If enode uri is still not found, use the commands below to restart all services.

NOTE if after parity restart you notice that on NETSTATS_SERVER url your node starts to fall behind other nodes (block number is less than on other nodes), try to restart statistics service (assuming you are connected as root):

su validator
pm2 restart all

after that refresh NETSTATS_SERVER url and check your node's block number. If your node is still not active or missing enode, log in to root account and reboot. Without access to root you can use sudo user instead, append sudo in front of commands after connecting to remote machine

su
shutdown -r now
PreviousRemote Machine SetupNextNetStats Dashboard

Last updated 5 years ago

Was this helpful?

13)

Setup Metadata in Validators DApp