Install Bee

The swarm thrives on decentralisation, and Bee is designed so that it works best when many individuals contribute to the health and distributed nature of the system by each running a Bee node.

It is easy to set up Bee on small and inexpensive computers, such as a Raspberry Pi 4, spare hardware you have lying around, or even a cheap cloud hosted VPS (we recommend small, independent providers and colocations).

Installing Bee#

Bee is packaged for MacOS and Ubuntu, Raspbian, Debian and CentOS based Linux distributions.

If your system is not supported, please see the manual installation section for information on how to install Bee.

info

If you would like to run a hive of many Bees, checkout the node hive operators section for information on how to operate and monitor many Bees at once.

To install Bee you will need to go through the following process.

  1. Set up the external signer for Bee, Bee Clef. (Recommended)
  2. Install Bee and set it up to run as a service.
  3. Configure Bee.
  4. fund your node with gETH and gBZZ
  5. Wait for your chequebook transactions to complete and batch store to update.
  6. Check Bee is working.

Install Bee Clef#

Bee makes use of Go Ethereum's external signer, Clef.

Because Bee must sign a lot of transactions automatically and quickly, a Bee specific version of Clef, Bee-clef has been packaged which includes all the relevant configuration and implements the specific configuration needed to make Clef work with Bee.

AMD64#

wget https://github.com/ethersphere/bee-clef/releases/download/v0.4.12/bee-clef_0.4.12_amd64.deb
sudo dpkg -i bee-clef_0.4.12_amd64.deb

ARM (Raspberry Pi)#

ARMv7#
wget https://github.com/ethersphere/bee-clef/releases/download/v0.4.12/bee-clef_0.4.12_armv7.deb
sudo dpkg -i bee-clef_0.4.12_armv7.deb
ARM64#
wget https://github.com/ethersphere/bee-clef/releases/download/v0.4.12/bee-clef_0.4.12_arm64.deb
sudo dpkg -i bee-clef_0.4.12_arm64.deb

Finally, let's check Bee Clef is running.

systemctl status bee-clef
โ— bee-clef.service - Bee Clef
Loaded: loaded (/lib/systemd/system/bee-clef.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-11-20 23:45:16 GMT; 1min 29s ago

Install Bee#

Next, install Bee itself, simply choose the appropriate command from the ones below. This will set automatically up your Bee and start it running in the background as a service on your computer.

AMD64#

wget https://github.com/ethersphere/bee/releases/download/v0.6.2/bee_0.6.2_amd64.deb
sudo dpkg -i bee_0.6.2_amd64.deb

ARM (Raspberry Pi)#

ARMv7#
wget https://github.com/ethersphere/bee/releases/download/v0.6.2/bee_0.6.2_armv7.deb
sudo dpkg -i bee_0.6.2_armv7.deb
ARM64#
wget https://github.com/ethersphere/bee/releases/download/v0.6.2/bee_0.6.2_arm64.deb
sudo dpkg -i bee_0.6.2_arm64.deb

Configure Bee#

Because Bee has many use cases and may run on many different specifications of hardware, it is important that you configure Bee so that it will work best for you.

Important Configuration Parameters#

Bee is a versatile piece of software with diverse use cases. When you start Bee for the first time, please consider changing the following configuration parameters. Read on for more info on how to change the configuration of your software and restart your Bee service.

Full Node or Light Node#

Since Bee can take a lot of resources when providing services to the network in exchange for gBZZ, a Bee node starts off in Light Node mode by default. To allow your Bee to use your network bandwidth and computing resources to serve the network and start cashing out cheques, set the --full-node flag to true.

full-node: true

Blockchain Endpoints#

Your Bee node must have access to the Ethereum Goerli testnet blockchain, so that it can interact with and deploy your chequebook contract. You can run your own Goerli node or, use a provider instead - we recommend Infura.

By default, Bee expects a local Goerli node at ws://localhost:8545. To use an Ethereum RPC provider instead, change your configuration as follows.

swap-endpoint: wss://goerli.infura.io/ws/v3/your-api-key

If you would like to use your node to resolve ENS domain names, you must also provide the endpoint for an Ethereum mainnet RPC provider.

resolver-options: ["https://mainnet.infura.io/v3/<<your-api-key>>"]

Open File Descriptors#

Bee is designed to work on a lot of different hardware configurations. To facilitate the exploration of this, during our beeta phase, we have given node operators access to leveldb's --db-open-files-limit. This helps determine the speed with which Bee can read and write to its database, and therefore its efficiency in forwarding and serving chunks. Some say setting this to much more than the default 200 leads to a much enhanced ability to participate in the swarm and get those gBZZ! Share your experience in the #node-operators channel of our Discord server to help us make this process more automated in the future.

db-open-files-limit: 2000

NAT Address#

To enable others to connect to your node, you must broadcast your public IP and ensure Bee is accessible on the right p2p port (usually 1634). We recommend you manually configure your external IP and check connectivity to ensure your Bee is able to receive connections from other peers.

First determine your IP address.

curl icanhazip.com
123.123.123.123

Then configure your node, including your p2p port (usually 1634).

nat-addr: "123.123.123.123:1634"

Debug API#

For a new installation of Bee, the debug API endpoint is not yet exposed for security reasons. To enable the debug API endpoints, set debug-api-enable to true in your configuration file and restart your Bee service.

debug-api-enable: true
debug-api-addr: 127.0.0.1:1635

Some package manager installations will automatically set your debug api to be listening on localhost.

caution

Your Debug API contains sensitive endpoints, ensure that port 1635 is firewalled and never exposed to the public internet.

info

See the configuration section for more information on how to fine tune your Bee.

Edit Config File#

To alter Bee's configuration, edit the relevant configuration file, and then restart your Bee service.

Linux#

sudo vi /etc/bee/bee.yaml
sudo systemctl restart bee

Fund Your Bee#

In order to deploy its chequebook and interact with the swarm, your Bee needs gBZZ and gETH.

First, find out your Ethereum address.

Linux#

sudo bee-get-addr

Once you have determined your Ethereum address, fund your node with gETH and gBZZ

info

If too much time has elapsed, you may need to restart your node at this point (see above).

Wait for Initialisation#

When first started, Bee must deploy a chequebook to the Goerli blockchain, and sync the postage stamp batch store so that it can check chunks for validity when storing or forwarding them. This can take a while, so please be patient! Once this is completed, you will see Bee starting to add peers and connect to the network.

While you are waiting for Bee to initalise, this is a great time to back up your keys so you can keep the tokens you earn safe.

Check Bee Is Working#

Once Bee has been funded, chequebooks are deployed and postage stamp batch store synced, its HTTP API will start listening at localhost:1633.

To check everything is working as expected, send a GET request to localhost port 1633.

curl localhost:1633
Ethereum Swarm Bee

Great! Our api is listening!

Next, let's see if we have connected with any peers by querying our debug api.

info

Here we are using the jq utility to parse our javascript. Use your package manager to install jq, or simply remove everything after and including the first | to view the raw json without it.

curl -s localhost:1635/peers | jq ".peers | length"
6

Perfect! We are accumulating peers, this means you are connected to the network, and ready to start using Bee to upload and download content or host and browse websites hosted on the swarm network, and accumulating cheques which you can cashout to get your gBZZ.

Welcome to the swarm! ๐Ÿ ๐Ÿ ๐Ÿ ๐Ÿ ๐Ÿ