mirror of https://github.com/poanetwork/wiki.git
99 lines
3.2 KiB
Markdown
99 lines
3.2 KiB
Markdown
## How to setup a bootnode on not-AWS.
|
|
|
|
0. make sure you have Python 2 (versions 2.6 or 2.7) or Python 3 (versions 3.5 and higher) installed on your local machine (Windows isn't supported for the control machine) and Ansible v2.3+
|
|
|
|
1. setup an Ubuntu 16.04 server
|
|
|
|
2. to run playbook you will need a user on the server, who can execute `sudo` wihout password 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 name you have
|
|
```
|
|
---
|
|
- hosts: all
|
|
user: another-user
|
|
become: True
|
|
...
|
|
```
|
|
_NOTE_: playbook will additionally create a new unprivileged user named `bootnode` and add your ssh public key to `root` account.
|
|
|
|
3. 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
|
|
```
|
|
|
|
4. put ssh public keys (in format "ssh AAA...") that need access to the server to both files
|
|
```
|
|
files/admins.pub
|
|
files/ssh_bootnode.pub
|
|
```
|
|
(one key per line)
|
|
|
|
5. create configuration file
|
|
```
|
|
cat group_vars/all.network group_vars/bootnode.example > group_vars/all
|
|
```
|
|
|
|
6. edit the `group_vars/all` file and comment out parameters corresponding to aws:
|
|
```
|
|
#access_key
|
|
#secret_key
|
|
#awskeypair_name
|
|
#vpc_subnet_id
|
|
```
|
|
|
|
7. set values given to you by Master of Ceremony for the following parameters in `group_vars/all`:
|
|
* `NODE_FULLNAME`
|
|
* `NODE_ADMIN_EMAIL`
|
|
* `NETSTATS_SERVER`
|
|
* `NETSTATS_SECRET`
|
|
|
|
8. set the following options as follows:
|
|
```
|
|
allow_bootnode_ssh: true
|
|
allow_bootnode_p2p: true
|
|
allow_bootnode_rpc: false
|
|
associate_bootnode_elastic_ip: false
|
|
```
|
|
_Double check that_ `allow_bootnode_ssh` _is_ `true` _otherwise you won't be able to connect to the node_.
|
|
|
|
9. create file `hosts` with the server's ip address (e.g. 192.0.2.1):
|
|
```
|
|
[bootnode]
|
|
192.0.2.1
|
|
```
|
|
|
|
10. run ansible playbook
|
|
```
|
|
ansible-playbook -i hosts site.yml
|
|
```
|
|
|
|
11. open `NETSTATS_SERVER` url in the browser and check that the node named `NODE_FULLNAME` appeared in the list
|
|
|
|
12. login to the node and get enode from parity logs:
|
|
```
|
|
ssh root@192.0.2.1
|
|
grep enode /home/bootnode/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 bootnode
|
|
pm2 restart all
|
|
```
|
|
after that refresh `NETSTATS_SERVER` url and check again your node's block number. If your node is still not active or missing `enode`, log in to root account and reboot the OS.
|
|
```
|
|
su
|
|
shutdown -r now
|
|
```
|