EOS Core- an EOS mainnet launch solution
Switch branches/tags
Nothing to show
Clone or download
Latest commit 678f114 Aug 15, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bios-node abp list file name update May 30, 2018
chain-validator Delete snapshot.csv Jun 9, 2018
expira Create haproxy.cfg Jun 13, 2018
lazyscripts Create send-telegram.sh Jun 21, 2018
lxd Update lxd-setup.md May 31, 2018
prometheus Update prometheus.md Aug 12, 2018
.gitignore initial commit May 21, 2018
README.md Update README.md Jul 8, 2018
README_CN.md Update README_CN.md Jul 8, 2018
README_KO.md Update README_KO.md Jun 6, 2018
autolaunch.sh Update autolaunch.sh May 30, 2018
installGhostbusters.sh Update installGhostbusters.sh Jun 6, 2018
interactivePublish.sh pvt key fix May 22, 2018
keybase_relocate.sh Create keybase_relocate.sh May 18, 2018
launch_data.json upstream update (#1) May 28, 2018
lxc-script.sh Create lxc-script.sh Jun 3, 2018
lxd-setup.md base config match May 21, 2018
my-peer-info Update my-peer-info May 30, 2018
params.sh Update params.sh Jun 16, 2018
peerCleanup.sh dependecy checks May 21, 2018
peerInfo.temp updates.. May 21, 2018
publishPeerInfo.sh dependecy checks May 21, 2018
regproducer.md add Translation to Chinese for rest md file Jun 5, 2018
regproducer_CN.md add Translation to Chinese for rest md file Jun 5, 2018
returning-user.md add Translation to Chinese for rest md file Jun 5, 2018
returning-user_CN.md add Translation to Chinese for rest md file Jun 5, 2018
setup.sh Download newly added scripts May 30, 2018
trusted-peers.md add Translation to Chinese for rest md file Jun 5, 2018
trusted-peers_CN.md add Translation to Chinese for rest md file Jun 5, 2018
trustedPublish.sh Update trustedPublish.sh May 31, 2018
trustedUpdate.sh Create trustedUpdate.sh May 30, 2018
updatePeers.sh stricter ip validation May 25, 2018
verifyABPs.sh Rename 07_verifyABPs.sh to verifyABPs.sh May 29, 2018

README.md

EOS Core instructions

中文版本

한국어

  • New instructions for setting up prometheus (Patroneos + HAProxy), regproducer and trusted peer scripts are now available.
  • As of June 1st, 2018, we will be using the EOS-mainnet repository. EOS.IO should be built using this repository.
# Clean install
git clone https://github.com/EOS-Mainnet/eos.git
cd eos
git checkout mainnet-1.0.8
git submodule update --init --recursive
./eosio_build.sh -s "EOS"
cd build
sudo make install

If you are updating from the EOS-mainnet repo:

git pull
git checkout <tag>
git submodule update --init --recursive
./eosio_build.sh -s "EOS"
cd build
sudo make install
  • Time sync first
sudo timedatectl set-ntp no
# Check if default timesyncd is off
timedatectl
sudo apt-get install ntp
# Check if ntp is fine
sudo ntpq -p

0. Install Keybase

Note: Skip parts that you have already completed.

Start by joining the eos_ghostbusters Keybase group: https://keybase.io/team/eos_ghostbusters.

If you don't already have keybase, you will need to install it and verify your identity. Join requests to the eos_ghostbusters group require a verified keybase identity.

It is recommended that you use Keybase chat when communicating information related to your node. There are keybase clients for every OS and mobile. Keybase is very secure and all of the BPs are relying on it.

Ubuntu instructions - do not install as root user, please use sudo where appropriate

# Install curl if required
sudo apt install curl

curl -O https://prerelease.keybase.io/keybase_amd64.deb
# if you see an error about missing `libappindicator1`
# from the next command, you can ignore it, as the
# subsequent command corrects it
sudo dpkg -i keybase_amd64.deb
sudo apt-get install -f
run_keybase
  • Mandatory step: modify keybase default storage path for kbfs
curl -sL https://raw.githubusercontent.com/hkeos/Ghostbusters-Testnet/master/keybase_relocate.sh | bash -
  • Login or signup:
# Login
keybase login
# Sign up
keybase signup

1. Wireguard Setup

  • Install Wireguard
sudo add-apt-repository ppa:wireguard/wireguard
sudo apt-get update
sudo apt-get install wireguard resolvconf

2. Setup Node

cd to your opt folder.

mkdir Ghostbusters && cd Ghostbusters
curl -sL https://raw.githubusercontent.com/hkeos/Ghostbusters-Testnet/master/setup.sh | bash -
  • Note For the Ghostbusters testnet, you will need to choose 4 ports that can be whatever you want - we encourage diversity! Please write down what you plan to use for each of these so that you have it as a guide moving forward. (Ports must greater than 1024 unless you run as root and NO ONE should run as root).
  1. Wireguard VPN port - default is 5555 - pls do not to use defaults
  2. EOS API / HTTP port - default is 8888 - pls do not to use defaults
  3. EOS P2P port - default is 9876 - pls do not to use defaults
  4. Wallet port used by keosd - this is only for localhost connections - default is 7777
  • Selecting your Wireguard IP and port

Your Wireguard IP address should be within the range of 192.168.100.X to 192.168.103.X, where X is between 0 and 255, inclusive.

To check which IPs have been claimed:

cd ~/kbfs/team/eos_ghostbusters/ip_list
ls
# You will see the list of IP addresses that have already been claimed
# Choose an address that is open
touch <chosen-ip-address>@<your-node-name>
This adds a file with your IP address to the ip_list folder in an easy to sort format.

Check firewall settings, and make sure that port you chose for your wireguard is open.

If you are using lxd, then you will need to forward ports from your WAN IP. If you are using AWS, then you will need to edit your security policy.

If you use ufw on Ubuntu, you can use (substitute 5555 for whatever port you plan to use for your Wireguard VPN):

sudo ufw allow 5555

3. Fill out your info in the install script

cd /path/to/Ghostbusters
nano params.sh

Please update your information in the fields above ## OPTIONAL ### (the rest are optional):

EOS_SOURCE_DIR="/path/to/eos"
API_PORT=""
EOS_P2P_PORT=""
WIREGUARD_PORT=""
WALLET_PORT="7777"
KEYBASE_USER="<yourkeybaseusername>"
EOS_PUBLIC_KEY=""
EOS_PRODUCER_NAME=""
NODE_PUBLIC_IP="xxx.xxx.xxx.xxx"
AGENT_NAME="<agent-name>"
WIREGUARD_PRIVATE_IP="192.168.10Y.X"

Note: Producer name must be exactly 12 characters long!

4. Run the script

Install testnet folder and scripts.

 # Run testnet installation script
./installGhostbusters.sh

Then, start Wireguard and check if it's working.

# Start wireguard
sudo wg-quick up ghostbusters
# Test configuration
sudo wg show ghostbusters
# If at any time you want to reload the network interface
sudo ip link del dev ghostbusters && sudo wg-quick up ghostbusters.conf

Publish peer info.

./publishPeerInfo.sh my-peer-info

Optional: Publish peer info to only trusted peers

nano trusted-peers
# Add a list of the keybase usernames of your trusted peers. Add a space in between each one, without commas or new lines in between.
./trustedPublish.sh my-peer-info trusted-peers

Update Wireguard and EOS config.ini

 # update peers on the base config.ini
./updatePeers.sh
 # You can run updatePeers.sh again to automatically update Wireguard and EOS peer configs any time a new peer joins and publishes their peer info.

Optional: Update trusted Wireguard and EOS peers only

./trustedUpdate.sh

Checking Wireguard connections

# You can check your communication with other peers
sudo wg show

# Count your handshakes with peers
sudo wg show|grep hand|wc -l

Other optional commands

# Other options for updatePeers.sh
./updatePeers.sh - restart # will reload nodeos after update
./updatePeers.sh lxd restart # will reload nodeos on lxd after update

 ## If you want to cleanup dead peers (wg only), run:
./peerCleanup.sh remove strict # removes all even if just wg is down
./peerCleanup.sh remove # removes just completely offline host
./peerCleanup.sh # debug mode, doesn't actually remove peers

If you change your wireguard IP, here is where you need to update it

# This is the configuration file that you can edit to change your VPN IP and port
nano /path/to/Ghostbusters/ghostbusters.conf

# You will also need to update the following locations
nano /path/to/Ghostbusters/my-peer-info
/path/to/Ghostbusters/publishPeerInfo.sh my-peer-info
nano /path/to/Ghostbusters/base_config.ini
nano /path/to/Ghostbusters/params.sh
nano /path/to/Ghostbusters/ghostbusters-<your-producername>/config.ini
#then you need to restart your wireguard
cd /path/to/Ghostbusters
sudo ip link del dev ghostbusters && sudo wg-quick up ghostbusters.conf

# Ask team members to update peers

5. Publishing BP info on Keybase

  • Save on KBFS: cd to your Ghostbusters folder if you are not in there already.
nano bp_info.json
# add your basic bp info and save it! at a minimum you will need the producer_account_name,
# producer_public_key. Bonus points if you add your LAT and LONG for the map.
#  "producer_account_name": "<producername>",
#  "producer_public_key": "<eos-producer-public-key>",

cp bp_info.json ~/kbfs/public/<username>

Note: You do not have to fill out your BP node's api_endpoint and p2p_endpoint-- this way, they can remain hidden from public.

  • Check that file is up on https://<username>.keybase.pub/bp_info.json

5.1 BP Info verification (optional)

You can verify that bp_info.json correctly follows the schema using command line. We recommend ajv-cli for the job.

If npm is not installed:

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs

schema.json should have been generated from the Ghostbusters install script from earlier, and your bp_info.json file should be in there too.

sudo npm install -g ajv-cli
ajv validate -s schema.json -d bp_info.json

6. Check scripts

cd into your Ghostbusters testnet folder, which was created from the install script. Try cat config.ini, and cat cleos.sh to check that all the information is correct.

Start your node when ready:

./start.sh --delete-all-blocks --genesis-json /path/to/genesis.json

7. Resync

If at any point you need to restart your node:

./start.sh
tail -F stderr.txt

# Hard resync
./start.sh --delete-all-blocks --genesis-json /path/to/genesis.json
tail -F stderr.txt

You can also update your peers and restart at the same time:

./updatePeers - restart