HOWTO Setup Witness Node by Yehey (Updated Tutorial/Guide)

in witness-update •  10 months ago

(UPDATED January 10, 2018) Step by step guide (STEP 01 - 15) on how to setup a Witness Node. Please see my references at the end of this article. This is not just a server it is a Witness Node server.


What Server Specification is recommended? I've tested it using a minimum requirement listed below. You can buy or rent your server, it's up to you to decide.

  • 4 CPU
  • 32 GB RAM (recommend minimum) // Updated January 10, 2018
  • 300 GB SSD (100GB minimum)
I'm using Ubuntu 16.04 LTS for my operating system. I failed to install Steem using the latest version of Ubuntu 17.x, so this procedure is using Ubuntu 16.04 LTS.

When I setup a Server or a workstation. I always set the date and time correct, so I can get a good event logs later on for trouble shooting.

Set your timezone, for me it's EST (optional)
sudo timedatectl set-timezone America/New_York

Step 01. Install all dependencies.

sudo apt update

sudo apt install git curl wget
Step 02. Download Steem in the box courtesy by @someguy123 using git clone.

git clone
THIS IS IMPORTANT. Logout, re-login, then change directory to steem-docker.
cd steem-docker
Step 03. Let's install docker.
./ install_docker
You will see something like this captured screen.

Step 04. Pre-compile Steem.

./ install
Step 05. Download a copy of blocks. This will take a some of hours depending on your server specifications.
./ dlblocks
Step 06. Run the wallet.
./ remote_wallet
Step 07. Create a key pair for your witness.

After running suggest_brain_key, copy your wif_priv_key and pub_key you will use this later on.

Step 08. Adjust your Witness server memory. MUST re-adjust if server upgrade it's memory. DO NOT GIVE MORE SHARED MEMORY THAN YOU HAVE ACTUAL RAM AVAILABLE. e.g. In our server specification example, we are using 32GB RAM only use 30G for your shared memory.

sudo ./ shm_size 30G
Step 09. Edit the config.ini file.
nano data/witness_node_data_dir/config.ini
Some data in config.ini file.

p2p-endpoint =

shared-file-size = 30G (my initial server is using 16G no longer sufficient)
shared-file-dir = /shm
witness = "yehey" <-- change this using your Steem account ID.

WIF PRIVATE KEY to be used by one or more witnesses or miners

private-key = 5KfKJ.............

Put in your witness name, and your WIF private key from earlier. Be aware the name needs quotes, while the private key doesn't. You use the private key (wif_priv_key) you generated earlier using suggest_key_brain and put into notepad.

Step 10. To disable port forwarding for seeds:

nano .env
On a blank line, put the following: PORTS= DOCKER_NAME=witness

Step 11.

./ replay
Check the logs, every 10 minutes. Use this command to see the current logs.
./ logs

or if you want to be nerdy, use this command to see the logs in real-time

docker logs --tail=30 --follow witness
You will see something like this results.

and this is the normal logs results.

Your Witness Node server is synced! You're not done, continue reading this article.

Running "top" (or htop if you installed it) will you an idea of your memory usage, see sample captured screen image below. This example shows 5.6% CPU and 89% MEM. The 89% utilization of Memory is too high if you ask me, but this is enough to run your Witness Node server. In humble opinion, you need to bring up your RAM to at least 32GB (as of January 10, 2018).

I also check docker session, ps -aux | grep docker

That's a normal operations of my Witness Node server.

Step 12. We are NOT done. Go to website, login to your account. Click on Wallet, Permission, click on Show Private Key. Your Active Private Key will appear as 5andSomeLongCharacter. Take note, your Active Private Key start in number 5 e.g. 5andSomeLongCharacter.

./ wallet
Set a password, unlock the wallet with the same password, then import your ACTIVE private key from website.

For example.

set_password "MyAlph4Num4r1cP4ssw0rd"
unlock "MyAlph4Num4r1cP4ssw0rd"
import_key 5andSomeLongCharacter

Step 13. Finally, update your witness information on the network.

update_witness "yehey" "" "Public_Key_from_Suggest_Brain_Key" {"account_creation_fee":"0.200 STEEM","maximum_block_size":65536,"sbd_interest_rate":0} true
If no error, congratulation to you as a Witness! Welcome to the STEEM Witness Club.

Now, vote for your self and yehey for Witness, go to and vote for yehey.

As Witness, you are expected to send update for Price Feed. Thanks to @someguy123 there is a script ready to go.

Step 14. Installation of Steem Feed JS.
First, download the git repository, then edit config.json as needed. The interval is in minutes.

git clone
cd steemfeed-js
cp config.example.json config.json
nano config.json

Sample config.json file. The Interval is 60 minutes, to send Price Feed update.

{ "node": "wss://", // Added Jan 8, 2018 to point to new server. "name": "yehey", "wif": "5KUKG...ACTIVE_PRIVATE_KEY", "interval": 60 }
Step 15. Starting Steemfeed-js

cd steemfeed-js
docker build -t steemfeed-js .
docker run -itd --rm --name feed steemfeed-js

Check the status with docker logs

docker logs feed

Got an error the first time running the docker logs feed, as shown below. Attempting to login account.

Waited to make sure the --replay-blockchain is fully synced, re-run the following command again.

docker build -t steemfeed-js . docker run -itd --rm --name feed steemfeed-js # Check the status with docker logs docker logs feed

Checking your Price Feed update using @drakos website. Or go to to check your price feed update. You will see mine updating every hour.

If you get an error running "docker logs feed", exit SSH and re-login again and it will correct itself.

Re-run ps aux | grep docker to check docker session. You will see the 3rd docker session pid "6297" as shown below. It will be a different number on your server.

That's all for now.

To find out when did you processed a block, visit change @yehey using your account.

What's Next? You need to advertise to your family and friends that you are now a Witness and ask them to vote for you. Give them reason why their votes matter and how you give back to the community.


The following procedures if you will upgrade your Witness Node server memory.

Upgrading my Witness Node server memory from 32GB to 48GB.
New server running at 48GB RAM. ./ stop sudo ./ shm_size 46G

Edit config.ini in ~/steem-docker/data/witness_node_data_dir
shared-file-size = 46G

./ replay

After synched.

docker build -t steemfeed-js .
docker run -itd --rm --name feed steemfeed-js

Check the status with docker logs

docker logs feed

Check your server memory, record utilization.

Use "docker logs --tail=30 --follow witness" (two dash line) same result when your run "./ logs" with --follow is to monitor logs in realtime (thanks to @drakos).

Run crontab to restart every two hours using the following command.

crontab -e

Restart Docker feed every 2 hours everyday.

0 */2 * * * docker restart feed
0 */2 * * * cd steemfeed-js && docker run -itd --rm --name feed steemfeed-js


To force Price Feed update:

docker rm -f feed
cd steemfeed-js
docker run -itd --rm --name feed steemfeed-js
docker logs feed


Some useful commands and websites to remember.

docker logs witness | grep yehey,includetop20


For maintenance:
Disable the signing key first to avoid missing blocks. As recommended by @drakos check the timing, if u're low in the rank and now scheduled soon, u can do your maintenance and not lose your turn.

update_witness “yehey” “” “STM1111111111111111111111111111111114T1Anm” {“account_creation_fee”:”0.200 STEEM”,”maximum_block_size”:65536,”sbd_interest_rate”:0} true

Press CTRL + d, to exit

./ stop

update_witness “yehey” “”Public_Key_from_Suggest_Brain_Key” {“account_creation_fee”:”0.200 STEEM”,”maximum_block_size”:65536,”sbd_interest_rate”:0} true

Press CTRL + d, to exit

./ start - to begin running steemd replay again.


If "docker feed logs" not working. Here's how to troubleshoot.
$ docker ps -a

76f821043793 steemfeed-js "npm start" About a minute ago Up About a minute feed
12506a870ff7 steem "steemd --replay" 2 days ago Up 2 days 2001/tcp, 5000/tcp, 8090/tcp witness

You should see two cointainer ID, for feed and witness. If the feed is not available running. Do the following.

  1. docker rm -f feed
  2. cd steemfeed-js
  3. docker run -itd --rm --name feed steemfeed-js // to re-run steemfeed-js
  4. docker logs feed // to run price feed.
Note: has retired since Jan 6, 2018. Edit app.js file, change it using or update the config.json file with the following entries.
{ "node": "wss://", // Added Jan 8, 2018 to point to new server. "name": "yehey", "wif": "5KUKG...ACTIVE_PRIVATE_KEY", "interval": 60 }
Then, re-run the previous 4 steps.


20171020 Install Conductor a Steem Witness Toolkit

$ steempy addkey

when prompted, paste your active key with shift-insert

Then use "steempy listkeys" to make sure it's added, also "steempy listsaccounts"

$ steempy listkeys

$ steempy set nodes,,

$ conductor init
What is your witness account name?: yehey
Imported a witness yehey from its existing settings.

$ conductor feed
Fri Oct 20 16:52:28 2017
Old Price: 1.019
New Price: 1.002
Current STEEM price: 1.002 USD
Current SBD price: 0.942 USD
Quote: 1.000 STEEM
Spread between prices: 1.697%

steempy wallet is in .local/share/steem/steem.sqlite



Some references I've used to build my Witness node and Seed node.


Useful Tools

  • just another STEEM blockchain website (condenser) by @yehey (at your service)
  • by @roadscape
  • by @jesta (currently down, DB migration in progress)
  • by @drakos
  • by penguinpablo
  • I will continue to update page. Let me know if you have something to share, or simply use the form below to post.

    FYI. All our network of websites are managed in-house, no third party consultant. This includes our Witness Servers, Condensers ( promoting STEEM blockchain, bot @Shares and other projects to follow. If you like what I do, please support me as your Witness.

    Vote YEHEY as your Witness or Set Proxy.

    Go to URL address then scroll down to Vote.

    Please follow me @Yehey, Vote Up and Resteem
    Thank you,

    Authors get paid when people like you upvote their post.
    If you enjoyed what you read here, create your account today and start earning FREE STEEM!
    Sort Order:  

    i follow all the steps but stuck at this point Please help me out from this step. Please guide where i do the mistake

    steemwitness error.png


    Sorry I can't read your captured screen.

    What step no. are you stuck?

    I'm assuming you have the right specs for your server e.g.
    32GB RAM minimum
    200GB SSD disk
    Ubuntu 16.x version

    Join us at for faster answer.


    error comes on

    Step 06. Run the wallet.
    ./ remote_wallet


    You have collected your daily Power Up! This post received an upvote worth of 0.29$.
    Learn how to Power Up Smart here!


    You have collected your daily Power Up! This post received an upvote worth of 0.31$.
    Learn how to Power Up Smart here!

    You got a 0.68% upvote from @upme requested by: @yehey.
    Send at least 2.5 SBD to @upme with a post link in the memo field to receive upvote next round.
    To support our activity, please vote for my master @suggeelson, as a STEEM Witness


    Excellent. Glad it works.

    I also updated the guide with Step 16 for checking witness setup.
    Step 16. What to review to make sure your Witness server is configured correctly?

    In Step 07 you will run suggest_brain_key to produce keys for your witness server, a private and public.
    You will use the private key for your config.ini file in Step 09.
    You will use the public key to broadcast your intent as a Witness in Step 13.
    To verify, go to (replace @yehey with your witness name), scroll down ’till you see your Authorities Signing Keys. You should see your public key here. If not, go back and review the step by step procedures.
    When it’s done, go to website and find your Witness Name. See captured image below.

    Up to date guide here

    You're my Witness supporter since I began witnessing. You got my vote.



    I'm in. I am now officially a witness