Setup and configure a staking pool server for Ghost by Mcafee
This how to article will help users using vmware to setup a virtual machine running ubuntu linux that will host a staking node for Ghost by Mcafee. Creating our VM The article assumes you are currently already running a server loaded with ESX. We will start by getting an ISO of the latest Ubuntu build. You can find that at https://ubuntu.com/ Once downloaded upload the ISO to the datastore of the ESX host. Next we will right click on Virtual Machines and select Create/Register VM
On the next screen Select create a new virtual machine and click next Give the VM a name I called mine GhostColdStakpool. Compatability I left set to default. Guest OS family I selected Linux. Guest OS version I selected Ubuntu Linux (64bit). click Next For the next section I left it as default for storage which was my DataStore0. Click Next Next Screen is where you configure all the VM Settings
Under CD/DVD Drive change Host device to Datastore ISO image. Go to the folder on the data store where you uploaded the ISO click the ISO and hit Select. Click Next The next screen should confirm the settings
From ESX click the VM and click Power On then open a Console Window. From here it should try to install Linux. From here it will prompt you to give the VM a name provide your name. For User use stakepooluser and create a password. Configure disk determine if any additional installs you might want configure network etc. No additional applications need to be installed it will give you the option to update the OS install files before install. Once downloaded it will install Linux. When it prompts you to hit enter to reboot make sure to remove the disk drive from the VM then hit enter. Once rebooted login. Once logged in type these commands to verify all packages are updated to their latest patches sudo apt-get upgrade Let it run. Next Install dependencies sudo apt-get install gnupg wget python3 git nginx tmux python3-zmq puthon3-pip lynx htop vim net-tools Next check the server time timedatectl If the timezone is wrong use this command sudo timedatectl set-timezone your_time_zone To list the timezones timedatectl list-timezones verify time is now correct it will show in a 24 hour format If you want to have more accurate time you can use chrony by following the steps at this site: https://www.coincashew.com/coins/overview-ada/guide-how-to-build-a-haskell-stakepool-node/how-to-setup-chrony Time to download the cold stake pool software to the server. Type git clone https://github.com/ghost-coin/ghost-coldstakepool Next install ghost-coldstakingpool cd ~ cd ghost-coldstakepool sudo pip3 install . Setup Mainnet Pool coldstakepool-prepare -datadir=~/stakepoolDemoLive ***!!*** *****Important:***** ***During this process make sure to save the stake and reward wallet recovery phrases as well as the stake address and reward address*** Modify the json file that configures the pool info vi ~/stakepoolDemoLive/stakepool/stakepool.json NOTE hit the i key which will allow you to now move the cursor with the arrows and modify the file { "mode": "master", "debug": true, "ghostbindir": "/home/stakepooluser/ghost-binaries", "ghostdatadir": "/home/stakepooluser/stakepoolDemoLive", "startheight": 101, "pooladdress": "<STAKE ADDRESS>", "rewardaddress": "<REWARD ADDRESS>", "zmqhost": "tcp://127.0.0.1", "zmqport": 20792, "htmlhost": "localhost", "htmlport": 9000, "allowcors": true, "maxoutputspertx": 64, "parameters": [ { "height": 1000, "poolfeepercent": 2, "stakebonuspercent": 5, "payoutthreshold": 0.1, "minblocksbetweenpayments": 100, "minoutputvalue": 0.01 }, { "height": 1000, "poolfeepercent": 5 } ], "poolownerwithdrawal": { "frequency": 720, "address": "<YOUR Ghost Address for fees for running the pool>", "reserve": 2, "threshold": 5 } } Please note that poolownerwithdrawal can be changed according to your preferences Once this file is modified as needed type this command Hit the ESC key on the keyboard then type :wq! Setup Services so after reboots the applications you need running will start automatically sudo cp ~/ghost_stakepool/doc/config/*.service /etc/systemd/system sudo systemctl daemon-reload Start and enable services sudo systemctl start ghostd_live.service stakepool_live.service sudo systemctl enable ghostd_live.service stakepool_live.service Verify services started check status of services sudo service stakepool_live status sudo service ghostd_live status Check journal for service if there is a failure sudo journalctl -u stakepool_live.service sudo journalctl -u ghostd_live.service hit shift+G to scroll to bottom of the log Setup Web server sudo rm /etc/nginx/sites-enabled/default sudo cp ~/ghost_stakepool/doc/config/nginx_stakepool_forward.conf /etc/nginx/conf.d/ sudo nginx -t sudo systemctl stop nginx sudo systemctl start nginx sudo systemctl enable nginx mkdir /tmp/nginx sudo rm /etc/nginx/conf.d/nginx_stakepool_forward.conf sudo cp ~/ghost_stakepool/doc/config/nginx_stakepool_production.conf /etc/nginx/conf.d/ sudo systemctl restart nginx **Setup the standard Ghost Pool Website interface** Next install NodeJS cd ~ wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash logoff and log back on VM nvm install node Next install npm cd ~ sudo apt install npm Install yarn curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list sudo apt-get update && sudo apt-get install yarn Download the cold staking pool front end cd ~ git clone https://github.com/ghost-coin/ghost-coldstakepool-front cd ghost-coldstakepool-front yarn install yarn run build cp -R dist /var/www/html/pool Setup SSL and FQDN and web domain using dyndns First you will need to configure a dynDNS to your public IP go to google and type whats my ip Once you have identified your public IP from your ISP go to noip.com setup an account go to dashboard to quick add create a hostname with a free domain
Configure your server to the hostname and domain you created vi /etc/hosts hit i-key to insert text below 127.0.0.1 localhost type 127.0.0.1 hostname.domain hit Esc-key then type :wq! Setup SSL sudo apt-get update sudo apt-get install software-properties-common sudo apt-get install certbot python3-certbot-nginx sudo certbot --nginx certonly Note if this fails give it a few moments more for the domain to register. Edit the nginx config file for SSL modify the script according to below vi /etc/nginx/conf.d/nginx_stakepool_production.conf type i to insert and modify the file listen [::]:80; server_name $hostname; # SSL configuration # listen 443 ssl; listen [::]:443 ssl; ssl_certificate /etc/letsencrypt/live/HOST.DOMAINNAME/cert.pem; ssl_certificate_key /etc/letsencrypt/live/HOST.DOMAINNAME/privkey.pem; # # Note: You should disable gzip for SSL traffic. # See: https://bugs.debian.org/773332 root /var/www/html/pool; # Add index.php to the list if you are using PHP index index.html; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; } location /api { rewrite ^/api(.*)$ $1 break; proxy_pass http://localhost:9000/; proxy_buffering on; proxy_cache STATIC; proxy_cache_valid 200 2m; proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504; } # Any route that matches /api/test will route to the testnet version. location /api/test { rewrite ^/api\/test(.*)$ $1 break; proxy_pass http://localhost:9001/; proxy_buffering on; proxy_cache STATIC; proxy_cache_valid 200 2m; proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504; } } type ESC-key then :wq! to save and exit the file Restart ngnix sudo systemctl restart nginx Navigate to your website by typing in the host and domain name you chose
No comments yet