Jump to content

Setup Fantom RPC Go-Opera Node [Guide / FTM / Ubuntu 20.04 / Cloudflare Proxy]


buzzkillb
 Share

Recommended Posts

How to setup a Fantom RPC Go-Opera Node on Ubuntu 20.04. You want to lock this down yourself at some point after testing it works. We will need a couple things, mainly go, nginx and go-opera.

go-opera: https://github.com/Fantom-foundation/go-opera
go: https://golang.org/dl/
nginx

Install go, latest is https://golang.org/dl/go1.16.4.linux-amd64.tar.gz

wget https://golang.org/dl/go1.16.4.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.16.4.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
source ~/.bashrc
cd ~
go version

Clone github and make the go-opera binary

sudo apt install git
git clone https://github.com/Fantom-foundation/go-opera
cd go-opera
make opera
cd build
cp opera ~/
cd ~

I am putting opera binary in the main home folder so I can keep track of which version I am on.

Find your IP address for initial go-opera syncing.

ip a

We also need the genesis block in our home folder.

wget https://opera.fantom.network/mainnet.g

Lets run this and prepare Cloudflare and our Domain next. replace the 111's with your IP address. This is not locked down at all, but I don't have anything on this wallet, so there is nothing to see here. The initial genesis decode will take at least 10 minutes, so wait for this to finish and you will see the sync. Sync as of right now took about 24 hours. I am running this in the background using screen. screen -S go-opera

./opera --genesis ~/mainnet.g --nat extip:111.111.111.111 --nousb --http --http.vhosts="*" --http.corsdomain="*" --ws --ws.origins="*" --http.api="ftm,eth,debug,admin,web3,personal,net,txpool,sfc"

Setup cloudflare with TLS/SSL. Make a subdomain with an A record pointing to your IP address.

image.png.891263eaa36de00c40236ac5afbcfffc.png

Go to SSL/TLS -> Origin Server -> Create Certificate and either use the default or like I did, specifiy the full subdomain. Here I am showing example.denarius.pro for the example. Click Next.

image.thumb.png.3cfc0c571b0fae5b51393d490417223b.png

I created a certificate for domain like rpc.denarius.pro and click Next and then copy the info to here

Insert Origin Certificate into a cert.pem

sudo nano /etc/ssl/certs/cert.pem

image.png.438eb6675b370b54f0bd7af785f9d1f6.png

Insert Private Key into key.pem

sudo nano /etc/ssl/private/key.pem

image.png.7e84916bbee8b0dddf71b543b1abb059.png

Install nginx

sudo apt install nginx

I am lazy so just use default file to edit

sudo nano /etc/nginx//sites-available/default

You want something like this for https and web socket in the default file

server {
    listen 80;
    listen [::]:80;
    server_name rpc.denarius.pro;
    return 302 https://$server_name$request_uri;

}

server {
        listen 443 ssl;
        listen [::]:443 ssl http2;
        ssl on;

        ssl_certificate /etc/ssl/certs/cert.pem;
        ssl_certificate_key /etc/ssl/private/key.pem;

  location ^~ /ws {
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_read_timeout 86400s;
      proxy_send_timeout 86400s;
      proxy_set_header Host $http_host;
      proxy_set_header X-NginX-Proxy true;
      proxy_pass   http://127.0.0.1:18546/;
  }

  location ^~ / {
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_set_header X-NginX-Proxy true;
      proxy_pass    http://127.0.0.1:18545/;
  }

}

Restart nginx

sudo nginx -s reload

Load up metamask and point a new network to your new domain like https://rpc.denarius.pro, chainID 250, Symbol 250 and you are good to go.

  • Like 1
Link to comment
Share on other sites

  • 1 month later...

nice tutorial, thanks !

i try just to setup a read only node FANTOM to use as a RPC , but without cloudflare, on my dedicated server and i need ws and http
Do i just need to delete --nat extip:111.111.111.111 ?

./opera --genesis ~/mainnet.g --nat extip:111.111.111.111 --nousb --http --http.vhosts="*" --http.corsdomain="*" --ws --ws.origins="*" --http.api="ftm,eth,debug,admin,web3,personal,net,txpool,sfc"

 

Link to comment
Share on other sites

15 hours ago, radium said:

nice tutorial, thanks !

i try just to setup a read only node FANTOM to use as a RPC , but without cloudflare, on my dedicated server and i need ws and http
Do i just need to delete --nat extip:111.111.111.111 ?

./opera --genesis ~/mainnet.g --nat extip:111.111.111.111 --nousb --http --http.vhosts="*" --http.corsdomain="*" --ws --ws.origins="*" --http.api="ftm,eth,debug,admin,web3,personal,net,txpool,sfc"

 

Replace it with your IP of the node you are running it on

Founder of BlockForums.org - PM me for any help - Join our Discord Server: https://discord.gg/UPpQy3n

100703395-b1ee6600-3360-11eb-82bc-96818c

Link to comment
Share on other sites

  • 4 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...