This Smartnode setup guide will be for Linux and it is recommended that you use  VPS to start. Source is not available until mainnet launch so you must use supplied binaries. I do recommend that you use a VPS, and once mainnet starts if you run a smartnode a DDOS protected VPS would be a good thing. OVH is a great choice for this. Running a smartnode from a home connection is neither supported or recommended. During testnet a 1GB ram + 1 CPU will work fine.

Note: If you need help ask on our Discord


Video Guide

Smartnode Setup


Automated With dk808 Script

Discord community member dk808 (415959001302433802) has created a great Smartnode script which takes care of all the setup on the Smartnode side, it also creates a script that allows you to update binaries when needed. If you decide to use his script you should first construct and run the protx quick_setup command that is covered in this guide as the script needs the BLS PrivKey(operatorSecret) that is given when running the command.

Login to your Smartnode server VIA ssh, create sudo user, and change to that user:

adduser <username>
usermod -aG sudo <username>
su - <username>

Grab script and run:

bash <(curl -s

Note: dk808 maintains a bootstrap of the chain. While I personally trust dk808 it should be mentioned that the bootstrap is not an official source or verified by Raptoreum.

Script source:

Thank you dk808 for this great contribution!


Manual Setup

Security (optional, but strongly recommended)

Install + Enable UFW & Open Needed Port:

apt install ufw -y
ufw default deny incoming
ufw default allow outgoing
ufw allow ssh
ufw allow 19989/tcp
ufw enable


Install & Configure Fail2ban

As I am not bothering with setting up SSH login with keys rather then password based login need to keep something from the bots and kiddies brute forcing our SSH service, enter stage left “Fail2ban.

apt install fail2ban -y

Now setup jail for bad guys hitting SSH, and set it to ban after three failed logins to SSH:

nano /etc/fail2ban/jail.local

Copy and paste the following into the file:

enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 3

Restart fail2ban:

systemctl restart fail2ban

Add a system user and use that user to run your Smartnode:

adduser <username>

Change to the new user:

su - <username>


Download, unpack, and run raptoreum daemon:

wget && tar -xvf raptoreum-
raptoreum- -daemon


Let the daemon fully sync at his point. You can check block height and compare against blockheight on our block explorer (this is a temporary testnet explorer). To check blockheight with raptoreum-cli:

raptoreum- getblockcount


Create an address on your wallet (not on smartnode):

On the QT wallet click receive > request payment and record the address.

Using raptoreum-cli use:

raptoreum- getnewaddress


Send Collateral

Now send the collateral to above address in one transaction with exactly the correct amount, at this time that amount is 9000 RTM. You need 15 confirms before it is good to use and you can fire the protx quick_setup command we will construct below.

Note: Smartnode collateral does ramp up which you can see below. You can send a larger amount so you don’t need to update when the collateral amount increases. As an example let’s say you are setting up a smartnode when the required collateral amount is 5000 RTM, you can instead send a collateral of 10,000 RTM. Here is the current Smartnode collateral schedule:


Block 0 > 2000 = 5000 RTM
Block 2000 > 3320 = 6000 RTM
Block 3320 > 5760 = 7000 RTM
Block 5760 > 7207 = 8000 RTM
Block 7207 > 264720 = 9000 RTM
Block 264720 > 308720 = 10000 RTM
Block 308720 > 352720 = 11500 RTM
Block 352720 > 396720 = 13000 RTM
Block 396720 > 440720 = 14500 RTM
Block 440720 > 448720 = 16000 RTM
Block 448720 > 528720 = 17500 RTM


In QT go to Send and enter the amount and the address from above, you should also label the address for easy identification down the road such as MN1. Sending with raptoreum-cli is:

raptoreum- sendtoaddress addresss amoun

Make sure to record the transaction ID, using cli it is displayed after the send, in QT you need to go to overview or transactions and double click the transaction to bring up details. If for some reason you did not record or need to see the transaction ID again you can by using “smartnode outputs”. In QT go to Tools > Debug Console and do “smartnode outputs”. In raptoreum-cli:

raptoreum- smartnode outputs


Build the protx quick_setup command

You need the following information:

  • Smartnode server Ip.
  • Port, which for testnet is 19989.
  • Collateral funding address. (see below note)
  • Collateral transaction ID.
  • Collateral index (this is listed when doing “smartnode outputs” usually it will be “1”)

Note: Collateral funding address can be any address in your wallet that has funds to pay for the transaction, the transaction fee is small as an example I just made one transaction and the cost was 0.00000525 RTM. To see which of your addresses have funds use “listaddressbalances” in debug console or raptoreum-cli.


protx quick_setup command example

./raptoreum-cli protx quick_setup "c4bbcde9771668fa640c263d4b964f688b0f039f7b684e715d92e4012369fea6" "1" "" "RLwZ99DzmocNJBXqvnue8MTjnmiE1NEn6k"

So structure is: transaction ID | collateral index | smartnode IP | port | collateral funding address


Using QT > Debug Console just remove ./raptoreum-cli from the above command. Fire the command and if it is successful you will see a bunch of output, the command has created the needed raptoreum.conf file for your Smartnode. Check the last line of the output as it will tell you the location of the .conf file, notice that it is named differently for example:


That is your RTM collateral address that you created at the start of this guide and is so the .conf file is easy to identify and link to corresponding smartnode. Open this file in a text editor and copy the contents. On your smartnode server we will stop the daemon, rename the current raptoreum.conf if it exists, if not create one.


Stop daemon:

raptoreum- stop

Check if raptoreum.conf exists:

ls ~/.raptoreumcore | grep raptoreum

If exists rename it:

mv ~/.raptoreumcore/raptoreum.conf ~/.raptoreumcore/raptoreum_orig.conf

If exists or if need to create a new one:

nano ~/.raptoreumcore/raptoreum.conf

Paste in the contents of the .conf created with protx command, don’t forget to change the following!


Save and exit (cntrl x). Start daemon:


You no longer need to add -daemon when starting as that is now set in your raptoreum.conf file.


Check Smartnode Status

raptoreum- smartnode status

You should see:

“state”: “READY”,
“status”: “Ready”


Leave a Reply