HOWTO Setup Witness Node by Yehey

Updated procedure using this article.

Step by step guide 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.

You can manually install Steem but @someguy123 prepared STEEM-in-a-Box using Docker with technical add-on courtesy by @drakos and my screen captured installation guide to keep it simple stupid (KISS).

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
  • 64 GB RAM (recommend minimum) // Updated March 2, 2018. Last January 10, 2018 32GB is ok but not anymore.
  • 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.

I prefer using screen utility so I can open multiple session. If not installed, run these two command.

sudo apt-get update
sudo apt-get install screen

Install Linux Process Monitoring, to monitor CPU and Memory current usage.
apt-get install htop

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.

Press CTRL + D to exit the wallet.

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 64GB RAM only use 63G for your shared memory.

sudo ./ shm_size 63G

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 = 63G (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:

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.

You should see the logs below when it’s fully sync to the blockchain.

Your Witness Node server is ready. 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 64GB (as of March 2, 2018, updated from 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 // this is your ACTIVE private key

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

update_witness “yehey” “” “Public_Key_from_Suggest_Brain_Key” {“account_creation_fee”:”0.100 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. If you received an “invalid state” error, your session timed out. Try it again, this time make it quick. Tips. I’ve used a notepad to prepare my update and paste it.

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 SteemFeed JS by @someguy123 or PriceFeed by @yabapmatt
First, download the git repository, then edit config.json as needed. The interval is in minutes.

In steem-docker folder

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”,
“interval”: 60

Optional Node Servers: At this time, you only need one in config.json file. I don’t know yet if you can put multiple servers.


I’ve learned from other Witnesses, complaining about Steemfeed-js frequently. Well, it’s not the end of the world. Here’s your alternative, courtesy by @yabapmatt. Just follow the step-by-step procedure to set it up.

Step 15. Starting Steemfeed-js

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

PLEASE NOTE: single dash itd double dash rm double dash name, the website theme is messing it up.

# 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.

Step 16. What to review to make sure your Witness server is configured correctly?

  1. In Step 07 you will run suggest_brain_key to produce keys for your witness server, a private and public.
  2. You will use the private key for your config.ini file in Step 09.
  3. You will use the public key to broadcast your intent as a Witness in Step 13.
  4. 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.
  5. When it’s done, go to website and find your Witness Name. See captured image below.

The blue color indicates the Witness server is ready to produce block. The crossed witness name in red, means a witness server under maintenance (offline) or a new witness waiting to produce it’s first block.

FYI. Ranking is very important, this is how you produce blocks, more blocks produced more Steem goes to your witness account. This is very important to advertise your witness intent and ask them to vote for you and me (@yehey) as their witness. If your rank is LOW, it will take days for you to produce 1 block. Question is can you afford to pay for Witness node per month producing 1 block in 24-72 hours? If YES, then continue to be a Witness make a better world. If No, you better spend your $$$ to buy Steem Power (SP) and create good content for a better reward.

How to check if you produce a block? Visit (replace @yehey with your witness name) to check the producer_reward, see captured screen below. This automatically added to your witness account.


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 // PLEASE NOTE: single dash itd double dash rm double dash name, the website theme is messing it up.

# 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. Added 201710180005 by
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.100 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.100 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
    1. cd steemfeed-js
    1. docker run -itd –rm –name feed steemfeed-js // to re-run steemfeed-js
  1. 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”,
“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

Support @QUE.COM

Founder, QUE.COM Internet Media. | Founder, a Shout for Joy! | MAJ.COM Management of Assets and Joint Ventures. More at KING.NET Ideas to Life.

2 thoughts on “HOWTO Setup Witness Node by Yehey

Leave a Reply