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
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:
usermod -aG sudo <username>
su - <username>
Grab script and run:
bash <(curl -s https://raw.githubusercontent.com/dk808/Raptoreum_Smartnode/main/install.sh)
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: https://github.com/dk808/Raptoreum_SmartNode
Thank you dk808 for this great contribution!
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:
Copy and paste the following into the file:
[sshd] enabled = true port = 22 filter = sshd logpath = /var/log/auth.log maxretry = 3
systemctl restart fail2ban
Add a system user and use that user to run your Smartnode:
Change to the new user:
su - <username>
Download, unpack, and run raptoreum daemon:
wget https://github.com/Raptor3um/Raptoreum/releases/download/18.104.22.168/raptoreum-22.214.171.124-x86_64-linux-gnu.tar.xz && tar -xvf raptoreum-126.96.36.199-x86_64-linux-gnu.tar.xz raptoreum-188.8.131.52-x86_64-linux-gnu/./raptoreumd -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:
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:
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-184.108.40.206-x86_64-linux-gnu/./raptoreum-cli 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-220.127.116.11-x86_64-linux-gnu/./raptoreum-cli 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" "18.104.22.168:19989" "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.
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:
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-22.214.171.124-x86_64-linux-gnu/./raptoreum-cli smartnode status
You should see: