STEEM WITNESS SETUP HF 19

I worked very hard in this days to create my First WITNESS SERVER.

I helped myself with these guides, but no one of them was completely useful without adding my skills:

What i have done was a merge of this three articles because I wanted to create a witness server in a manual way.

So i have to say thanks to @klye @timcliff and @krnel.
But someone else helped me on steemit chat #witness channel and i have to say thanks to @drakos @lonelywolf and @crt

Witness Node or Seed Node

Witness Node and Seed Node must reside in two different servers

SEED NODE

The Seed Node is a server used as a Node for Hosting Steem Blockchain.
If you want only to become a witness and you don't want to stay in the "first position", you don't need to create it.

WITNESS NODE

As already explained several times Steemit.com is a Blogging platform based on a decentralized Blockchain called STEEM.
As for Bitcoin, the Steem Blockchain generates Blocks. Unlike Bitcoin, however, the concept based on the Steem Blockchain is called Delegated Proof of Stake (DPOS).
In the DPOS system, witnesses are delegated by users to control the Steem Blockchain and Blocks. (So there aren't external miners).

A WITNESS NODE is exactly what we explained, a node used by Witnesses to find Blocks.

Before to start creating the Server

To start a node you need a server with these minimal requirement:

Operating SystemUbuntu Server 16.04 LTS
RAM32 GB
HDD250 GB
INTERNET10Mbps
PROCESSORXEON Processor or equivalent

I bought my server on privex.io because you can pay directly with STEEM on the account @privex. We have to say thanks to the creator @someguy123

Prepare your server

First of all you need to access on the machine with an SSH Client.
I used putty for this

Immagine.png

On the Hostname filed insert you public ip or host domain.
Put the port (22) -----> for security reason we will change it.

NOW DO THIS STEPS FOR SECURITY REASONS:

  • Install fail2ban to block SSH brute force attacks

apt-get install fail2ban

  • Move your SSH port above 10000. Thi prevents SSH brute force attacks

vi /etc/ssh/sshd_config
Port 22 ----> change with your favorite port (example port 10000)

  • Change your root password

passwd

  • Update and Upgrade your system

apt update
apt upgrade -y

Install dependencies

Once The Update and Upgrade are completed, you need to installa all this dependencies by running this command:

sudo apt-get install git make automake cmake g++ libssl-dev autoconf libtool libboost-thread-dev libboost-date-time-dev libboost-system-dev libboost-filesystem-dev libboost-program-options-dev libboost-signals-dev libboost-serialization-dev libboost-chrono-dev libboost-test-dev libboost-context-dev libboost-locale-dev libboost-coroutine-dev libboost-iostreams-dev doxygen perl libreadline-dev libncurses5-dev ntp python3-pip

At the end install jinja2 with pip3

sudo pip3 install jinja2

Start the STEEM Installation

go to the root folder (if you want to have more security use a different username)

cd /root

now proceed to clone STEEM from github executing this command:

git clone https://github.com/steemit/steem.git

It will create a new folder called "steem"

steem.png

Now Update the source and client code to correct version.
First of all verify the versione to use. Go to this site and check the column "Ver."
https://steemian.info/witnesses

version.png

At the moment i'm writing all witnesses are using the version v0.19.2

so start the update to version v0.19.2

git checkout v0.19.2

and before to compile it do a recursive update

git submodule update --init --recursive

Now build and install the software steemd and cli_wallet

cmake -DENABLE_CONTENT_PATCHING=OFF -DLOW_MEMORY_NODE=ON CMakeLists.txt
make steemd
make cli_wallet
make install

  • "steemd" is used to download the blockchain and to make the witness work
  • "cli_wallet" is used to configure your witness account

Configure the files


go to steemd folder and create the config.ini file

cd /root/steem/programs/steemd
./steemt
press ctrl +c

esegui.png

after the program is started, we need to exit with ctrl+c because is necessary to modify the config.ini file

cd /root/steem/programs/steemd/witness_node_data_dir
vi config.ini

settami.png

we need to change this parameters:

CONFIG.INI


P2P nodes to connect to on startup (may specify multiple times)
This are the seed nodes I used to download the blockchain (mantained by other witnesses)
seed-node = steem-seed1.abit-more.com:2001 # @abit
seed-node = seed.jesta.us:2001 # @jesta
seed-node = gtg.steem.house:2001 # @gtg
seed-node = 176.31.126.187:2001 # @timcliff

Size of the shared memory file. It depende on the RAM used by your Server (usually Total - 2GB). I'm using 32GB RAM so i changed it to 30GB
shared-file-size = 30G

Endpoint for websocket RPC to listen on (use your server after the end of blockchain download)
rpc-endpoint = 127.0.0.1:8090

Set an API to be publicly available, may be specified multiple times (leave only this parameters)
public-api = database_api login_api

Plugin(s) to enable, may be specified multiple times (leave only this parameter)
enable-plugin = witness

name of witness controlled by this node (witness username )
witness = "yanosh01"

WIF PRIVATE KEY to be used by one or more witnesses or miners (don't touch for now)
#private-key = don't touch for now, we need to create witness before adding it

Download the Blockchain

To do it you have two way.

1- PARTIAL FILE DOWNLOADED BEFORE

If you prefer to download the partial blockchain file and resume it, follow this istructions:

cd /root/steem/programs/steemd/witness_node_data_dir/blockchain
wget https://gtg.steem.house/get/blockchain/block_log

once the file is downloaded you have to start the resume:

cd /root/steem/programs/steemd
./steemd --replay-blockchain

1- DOWNLOAD FULL BLOCKCHAIN WITHOUT RESUME

I prefer to do the full download for the first time and to resume everytime i interrupt it.

cd /root/steem/programs/steemd
./steemd --resync-blockchai
if for some reason you have to inerrut the download you can do it with ctrl+c (wait the exit signal).
And if you need to restart an already started blockchain download use the command:
./steemd --replay-blockchain

When you see "transaction on block" your download is gone to 100%gone.png

Configure your witness account

Now start a second terminal session or use the"screen" tool to handle multiple session.
With the blockchian started you need to open your cli_wallet and make the first configuration.

cd /root/steem/programs/cli_wallet
./cli_wallet
new>>>set_password “select a password you want for this wallet"
unlock “the password just selected"

import_key YOURSTEEMACTIVEKEY
key.png

now generate your key-pair:
suggest_brain_key

it will give you somenthing like this:

suggest_brain_key
{
"brain_priv_key": "XXXXXXX XXXXXXX XXXXXXXXX XXXXXXX"
"wif_priv_key": "5J8Qq69NbALe37CY2KFfFvDukmM4fxHUe8DirS9Va9RsYu3fH8D"
"pub_key": "STM6fsCZaUkydV0xDsJiykvdWx1sgH4XpyVAF8KwHQ8NFAC58NqPg"
}

Save them in a safe place

Complete the configuration and broadcast your intent

Stop your Blockchain Sync with ctrl+c (wait the end signal every times) and close your wallet

to unlock the wallet use: unlock "password choosen"
to lock the wallet use: lock "password choosen"

Re enter in the file config.ini and edit the "private-key"

WIF PRIVATE KEY to be used by one or more witnesses or miners (don't touch for now)
#private-key = enter wif_priv_key created by the suggest_brain_key

NOW:

a) write you config.ini file (:wq - i use vi editor)
b) restar the blockchain ./steemd --replay-blockchain
c) wait the blockchain reload
c) start the wallet ./cli_wallet

PUBLISH YOUR WITNESS PRESENTATION IF IT IS NOT ALREADY DONE

Broadcast your intent with the following command:

update_witness "username" "your presentation post" "STM6fsCZaUkydV0xDsJiykvdWx1sgH4XpyVAF8KwHQ8NFAC58NqPg" {"account_creation_fee":"0.100 STEEM","maximum_block_size":65536,"sbd_interest_rate":} true

You can take it from steemd:

https://steemd.com/@witness_username

parametri.png

Now set the parameters base and quote (set the value like the first 10 witnesses. This must be changed every XX hours)

publish_feed witnessname {"quote":"1.000 STEEM", "base":"4.147 SBD"} true

Close the wallet and leave the blockchain Synchronized.

YOU ARE NOW A WITNESS

Until the first block is found you will see no activities on your witness

Go here and check your job

https://steemian.info/witnesses

scd.png

If you think that what I'm doing is something you like, please UPVOTE ME AS WITNESS

https://steemit.com/~witnesses

witness.png

Best Regards @yanosh01

steemit.png

H2
H3
H4
3 columns
2 columns
1 column
Join the conversation now