We have a shell (bash) script that installs AvalancheGo on your computer. This script sets up full, running node in a matter of minutes with minimal user input required.
This install script assumes:
OS: Ubuntu 18.04 or 20.04 (sorry, MacOS and Windows not yet supported)
AvalancheGo is not running and not already installed as a service
User running the script has superuser privileges (can run
If you run a different flavor of Linux, the script might not work as intended. It assumes
systemd is used to run system services. Other Linux flavors might use something else, or might have files in different places than is assumed by the script.
If you have a node already running on the computer, stop it before running the script.
If your node is running in a terminal stop it by pressing
If your node is already running as a service, then you probably don't need this script. You're good to go.
If your node is running in the background (by running with
nohup, for example) then find the process running the node by running
ps aux | grep avalanche. This will produce output like:
ubuntu 6834 0.0 0.0 2828 676 pts/1 S+ 19:54 0:00 grep avalancheubuntu 2630 26.1 9.4 2459236 753316 ? Sl Dec02 1220:52 /home/ubuntu/build/avalanchego
Look for line that doesn't have
grep on it. In this example, that is the second line. It shows information about your node. Note the process id, in this case,
2630. Stop the node by running
kill -2 2630.
If you previously ran an AvalancheGo node on this computer, you will have local node files stored in
$HOME/.avalanchego directory. Those files will not be disturbed, and node set up by the script will continue operation with the same identity and state it had before. That being said, for your node's security, back up
staker.key files, found in
$HOME/.avalanchego/staking and store them somewhere secure. You can use those files to recreate your node on a different computer if you ever need to.
To run successfully, AvalancheGo needs to accept connections from the Internet on the network port
9651. Before you proceed with the installation, you need to determine the networking environment your node will run in.
If your node is running on a cloud provider computer instance, it will have a static IP. Find out what that static IP is, or set it up if you didn't already. The script will try to find out the IP by itself, but that might not work in all environments, so you will need to check the IP or enter it yourself.
If you're running a node on a computer that is on a residential internet connection, you have a dynamic IP; that is, your IP will change periodically. The install script will configure the node appropriately for that situation. But, for a home connection, you will need to set up inbound port forwarding of port
9651 from the internet to the computer the node is installed on.
As there are too many models and router configurations, we cannot provide instructions on what exactly to do, but there are online guides to be found (like this, or this ), and your service provider support might help too.
So, now that you prepared your system and have the info ready, let's get to it.
To download and run the script, enter the following in the terminal:
wget https://raw.githubusercontent.com/ava-labs/avalanche-docs/master/scripts/avalanchego-installer.sh;\chmod 755 avalanchego-installer.sh;\./avalanchego-installer.sh
And we're off! The output should look something like this:
AvalancheGo installer---------------------Preparing environment...Found arm64 architecture...Looking for the latest arm64 build...Will attempt to download:https://github.com/ava-labs/avalanchego/releases/download/v1.1.1/avalanchego-linux-arm64-v1.1.1.tar.gzavalanchego-linux-arm64-v1.1.1.tar.gz 100%[=========================================================================>] 29.83M 75.8MB/s in 0.4s2020-12-28 14:57:47 URL:https://github-production-release-asset-2e65be.s3.amazonaws.com/246387644/f4d27b00-4161-11eb-8fb2-156a992fd2c8?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20201228%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20201228T145747Z&X-Amz-Expires=300&X-Amz-Signature=ea838877f39ae940a37a076137c4c2689494c7e683cb95a5a4714c062e6ba018&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=246387644&response-content-disposition=attachment%3B%20filename%3Davalanchego-linux-arm64-v1.1.1.tar.gz&response-content-type=application%2Foctet-stream [31283052/31283052] -> "avalanchego-linux-arm64-v1.1.1.tar.gz" Unpacking node files...avalanchego-v1.1.1/plugins/avalanchego-v1.1.1/plugins/evmavalanchego-v1.1.1/avalanchegoNode files unpacked into /home/ubuntu/avalanche-node
And then the script will prompt you for information about the network environment:
To complete the setup some networking information is needed.Where is the node installed:1) residential network (dynamic IP)2) cloud provider (static IP)Enter your connection type [1,2]:
1 if you have dynamic IP, and
2 if you have a static IP. If you are on a static IP, it will try to auto-detect the IP and ask for confirmation.
Detected '22.214.171.124' as your public IP. Is this correct? [y,n]:
n if the detected IP is wrong (or empty), and then enter the correct IP at the next prompt.
The script will then continue with system service creation and finish with starting the service.
Installing service with public IP: 126.96.36.199Created symlink /etc/systemd/system/multi-user.target.wants/avalanchego.service → /etc/systemd/system/avalanchego.service.Done!Your node should now be bootstrapping on the main net.To check that the service is running use the following command (q to exit):sudo systemctl status avalanchegoTo follow the log use (ctrl+C to stop):sudo journalctl -u avalanchego -fReach us over on https://chat.avax.network if you're having problems.
The script is finished, and you should see the system prompt again.
AvalancheGo should be running in the background as a service. You can check that it's running with:
sudo systemctl status avalanchego
This will print the node's latest logs, which should look like this:
● avalanchego.service - AvalancheGo systemd serviceLoaded: loaded (/etc/systemd/system/avalanchego.service; enabled; vendor preset: enabled)Active: active (running) since Tue 2021-01-05 10:38:21 UTC; 51s agoMain PID: 2142 (avalanchego)Tasks: 8 (limit: 4495)Memory: 223.0MCGroup: /system.slice/avalanchego.service└─2142 /home/ubuntu/avalanche-node/avalanchego --plugin-dir=/home/ubuntu/avalanche-node/plugins --dynamic-public-ip=opendns --http-host=Jan 05 10:38:45 ip-172-31-30-64 avalanchego: INFO [01-05|10:38:45] <P Chain> avalanchego/vms/platformvm/vm.go#322: initializing last accepted block as 2FUFPVPxbTpKNn39moGSzsmGroYES4NZRdw3mJgNvMkMiMHJ9eJan 05 10:38:45 ip-172-31-30-64 avalanchego: INFO [01-05|10:38:45] <P Chain> avalanchego/snow/engine/snowman/transitive.go#58: initializing consensus engineJan 05 10:38:45 ip-172-31-30-64 avalanchego: INFO [01-05|10:38:45] avalanchego/api/server.go#143: adding route /ext/bc/11111111111111111111111111111111LpoYYJan 05 10:38:45 ip-172-31-30-64 avalanchego: INFO [01-05|10:38:45] avalanchego/api/server.go#88: HTTP API server listening on ":9650"Jan 05 10:38:58 ip-172-31-30-64 avalanchego: INFO [01-05|10:38:58] <P Chain> avalanchego/snow/engine/common/bootstrapper.go#185: Bootstrapping started syncing with 1 vertices in the accepted frontierJan 05 10:39:02 ip-172-31-30-64 avalanchego: INFO [01-05|10:39:02] <P Chain> avalanchego/snow/engine/snowman/bootstrap/bootstrapper.go#210: fetched 2500 blocksJan 05 10:39:04 ip-172-31-30-64 avalanchego: INFO [01-05|10:39:04] <P Chain> avalanchego/snow/engine/snowman/bootstrap/bootstrapper.go#210: fetched 5000 blocksJan 05 10:39:06 ip-172-31-30-64 avalanchego: INFO [01-05|10:39:06] <P Chain> avalanchego/snow/engine/snowman/bootstrap/bootstrapper.go#210: fetched 7500 blocksJan 05 10:39:09 ip-172-31-30-64 avalanchego: INFO [01-05|10:39:09] <P Chain> avalanchego/snow/engine/snowman/bootstrap/bootstrapper.go#210: fetched 10000 blocksJan 05 10:39:11 ip-172-31-30-64 avalanchego: INFO [01-05|10:39:11] <P Chain> avalanchego/snow/engine/snowman/bootstrap/bootstrapper.go#210: fetched 12500 blocks
active (running) which indicates the service is running ok. You may need to press
q to return to the command prompt.
To find out your NodeID, which is used to identify your node to the network, run the following command:
sudo journalctl -u avalanchego | grep "node's ID"
It will produce output like:
Jan 05 10:38:38 ip-172-31-30-64 avalanchego: INFO [01-05|10:38:38] avalanchego/node/node.go#428: Set node's ID to 6seStrauyCnVV7NEVwRbfaT9B6EnXEzfY
NodeID- to the value to get, for example,
NodeID-6seStrauyCnVV7NEVwRbfaT9B6EnXEzfY. Store that; it will be needed for staking or looking up your node.
Your node should be in the process of bootstrapping now. You can monitor the progress by issuing the following command:
sudo journalctl -u avalanchego -f
ctrl+C when you wish to stop reading node output.
To stop AvalancheGo, run:
sudo systemctl stop avalanchego
To start it again, run:
sudo systemctl start avalanchego
AvalancheGo is an ongoing project and there are regular version upgrades. Most upgrades are recommended but not required. Advance notice will be given for upgrades that are not backwards compatible. When a new version of the node is released, you will notice log lines like:
Jan 08 10:26:45 ip-172-31-16-229 avalanchego: INFO [01-08|10:26:45] avalanchego/network/peer.go#526: beacon 9CkG9MBNavnw7EVSRsuFr7ws9gascDQy3 attempting to connect with newer version avalanche/1.1.1. You may want to update your client
It is recommended to always upgrade to the latest version, because new versions bring bug fixes, new features and upgrades.
To upgrade your node, just run the installer script again:
It will detect that you already have AvalancheGo installed:
AvalancheGo installer---------------------Preparing environment...Found 64bit Intel/AMD architecture...Found AvalancheGo systemd service already installed, switching to upgrade mode.Stopping service...
It will then upgrade your node to the latest version, and after it's done, start the node back up, and print out the information about the latest version:
Node upgraded, starting service...New node version:avalanche/1.1.1 [network=mainnet, database=v1.0.0, commit=f76f1fd5f99736cf468413bbac158d6626f712d2]Done!
If you're on a residential network (dynamic IP), don't forget to set up port forwarding. If you're on a cloud service provider, you're good to go.
If you have any questions, or need help, feel free to contact us on our Discord server.