The following will take you through my steps of setting up an Ethereum node, then spawning an RPC server to be able to use (primarily) web3.js to communicate with the blockchain. I won’t be going into the topic of mining, as I’m not so interested in that and the server provider doesn’t support it.
First you need to get a server. I have mine over at DigitalOcean which is a great service and offers great support.
My Ethereum server is a Ubuntu 16.04.2 x64, 2GB RAM, 40GB Disk. It runs very well.
Geth is the Ethereum client implementation in Golang.
First you need to install the dependencies and repositories.
sudo apt-get install software-properties-common sudo apt-get-repository -y ppa:ethereum/ethereum sudo add-get-repository -y ppa:ethereum/ethereum sudo add-apt-repository -y ppa:ethereum/ethereum sudo apt-get update sudo apt-get install ethereum
Once this is installed, run
geth console and you should get some messages about syncing with the chain - this can take
some time, but leave it running.
In case the process (syncing, rpc-server) process stops, we will make use of
supervisord to monitor it and restart it.
Supervisord installation is done by
apt-get install supervisor
Once this is installed, we will add a “program” to run the RPC server for us.
And paste the following into it;
[program:geth] command=/usr/bin/geth --fast --rpc --rpcaddr 0.0.0.0 --rpcport 8545 --rpccorsdomain * --rpcapi admin,db,eth,debug,net,txpool,personal,web3 autostart=true autorestart=true stderr_logfile=/var/log/supervisor/geth.err.log stdout_logfile=/var/log/supervisor/geth.out.log
This will run the command to sync with the blockchain fast, and allow RPC calls to be made. Once it’s setup, run
to restart supervisor and the process should be running.
That’s it. You now have a syncing Ethereum node (without the mining - since it’s disallowed with DigitalOcean) and giving you to ability to make RPC calls to interact with the chain.