Get your node running

Get your node running

A few weeks ago I sent out a survey to understand what issues core contributors might run into when setting up a node. Thanks to everyone who filled out the survey! (N=17)

It turns out, most CC’s that filled out the survey are happy to set up a node :raised_hands:. If you want to take a break from holiday gatherings in the coming period, here’s your chance!

Budget has been set aside to support 10 Core contributors to set up a node, by reimbursing purchase of a dedicated device.

How it works

  • The first 10 CC’s to request order approval from PeopleOps can go ahead and order on Amazon using this order list (vetted by @Petty). Ping in #PeopleOps: "I’m setting up a node by V1 and need a device"
  • Only orders with approval, that stick to the order list can be expensed through Expensify
  • The device needs to be configured to act as a node

*If you want to set up a node that requires a static IP address that you don’t already have, you might incur costs from your ISP. These costs cannot be expensed.
**Be mindful that the more nodes are set up the better for Status as a network. If you have a device that you can repurpose, please leave a slot for someone else to order

Setting up

  • The survey results showed some concerns about setting up a node, especially as a non-dev. A :open_book:manual is forthcoming! @Luis and @jakubgs are working on making this as easy as possible. Target audience for this manual is anyone. Keep an eye on this thread for a link to the manual.
  • We suggest to start with a basic node for personal messaging use (a.k.a Node S). Obviously you’re free to jump straight to running a full node. We suggest to start small as the majority of those who filled out the survey either does not have a static IP address or doesn’t know. Starting with Node S is a way to familiarize yourself without getting into ISP bureaucracy.

FAQ (from survey)

  • What OS do I need?

    • You will need a device that can run Linux. With the following software dependencies:
      • golang >= v1.13
      • docker
      • docker-compose
      • jq
      • git
      • make
  • My internet connection can be spotty. Does that matter? How?

    • A spotty internet connection will interfere with the connections made to peers by your node. If you lose connection, you will constantly try to establish new links to peers in the network. Not only does this increase your bandwidth and computation of the node, but it also decreases your ability to stay up to date on the network and serve information to any clients that are connected. For an S node this is not a big deal.
  • I can’t guarantee uninterrupted uptime. Does that matter?

    • When your client is down, it will not be able to pass information to other peers in the network, or serve requested information to clients that are connected who would like to read messages. For an S node this is not a big deal.
  • I’m concerned about the costs of running an Ethereum full node (L). What are my options?

    • The selected device and peripherals sums up to $263. While you would need this set for an Ethereum full node, there are more cost effective options for the messaging only nodes (S and M).
  • What is energy consumption of S, M and L nodes?

    • We need to measure this when more people are set up. The amount of energy will depend on the machine that is running the software. The referenced machines (NanoPC T4) are small form factor machines that are meant to always be on and have a small power footprint compared to a desktop or laptop machine.
    • The bandwidth will be more substantial and can vary depending on the size of the network. Standard amounts of bandwidth that are required will need to measured by those running a node.

Types of nodes (for reference)

For reference this is a rough distinction of the types of nodes:

:white_medium_small_square: S - Messaging only, for personal use
Send and receive messages messages with your own client on the same network.
Requires PC configuration and stable internet connection.

:white_medium_square: M - Messaging only, for yourself and others
Send and receive messages messages with your own client as well as allowing others to do the same using your node.
Requires PC configuration and stable internet connection, router configuration and admin stuff to purchase a static IP from your ISP (Availability and cost will differ, please check with your ISP).

:white_large_square: L - Messaging and transactions for yourself and others (Ethereum full node)
Send and receive messages messages and transactions with your own client as well as allowing others to do the same using your node.
Requires PC configuration and stable internet connection, router configuration and admin stuff to purchase a static IP from your ISP (Availability and cost will differ, please check with your ISP). + significant storage space which is available on a device provided by Status.

:ok_hand: None - Connect to someone else’s node and use Status as you do today.


Lastly…

Here’s a quote to inspire why it’s important for us to run Status locally so we can experiment with network restrictions and learn how to support others.

Posted #Public on Status on Nov 26 by someone from Iran looking for solutions to communicate while the Internet was blocked in the country:

This is the story : the government shutdown the internet but it does not mean that people don’t have access to internet. The government just disconnected the country gateway from outside world but the internet inside the country is working for servers and services that are hosted inside the country. As soon as the connection from outside world disconnects, all messaging apps stop working, telegram, whatsapp etc… And no one trust apps that are hosted inside the country.

Let’s assume we run couple of mail servers on data centers inside the country, and we knew that the government owns these data centers and can monitor traffic inbound and outbound and also has access to the servers, is there any way that they know those mail servers are running to support STATUS? And any way to trace users location or IPs? more than 60 million people are looking for a solution in this situation and they are concerned about their safety and privacy since leaking any information could cause death penalty.

9 Likes

props to @Bruno for a lot of this, as his boards guided me through my trials.

2 Likes

I received my hardware to set-up a node (got the exact pieces listed above in this thread). Is there any doc ready to help newbies to set things up? Thanks!

2 Likes

WIP: https://notes.status.im/WJqu-tZoRtqVRO61Ic4NxQ#

The installation steps should be accurate still tweaking on configuration and terminology. Please do share any issue your run into along the way here!

3 Likes

This is great! I received my hardware yesterday and I wasn’t sure either on how to set up this device!
I’ll configure it this weekend and share the experience!

20200109_191000

6 Likes

I started setting up my NanoPC and documenting the process here: https://notes.status.im/A0VSe1h2SD2ED_95Zy6AEA

Using Armbian server as the OS, so far I’ve found the installation to be easy but not the most user friendly process due to requiring doing some manual configuration to have the drive formatted, creating a partition and mounting it, as well as configuring swap, networking among other things… Probably using the desktop version would make things easier but it does not seem right to install a desktop environment for such device. Is Armbian going to be the recommended OS for the NanoPCs?

I’ve also found this: https://github.com/diglos/userpatches which looks like it generates an image with ethereum software but not sure if we can use this. (I will continue to setup mine manually).

2 Likes

I need to redo mine as I need a tracing node for some work I’m doing… i’ll try out these other images to see if they’re useful in that process.

1 Like

hmm … this is probably a pretty basic question, but how do you connect the SSD drive to the board (I got the parts listed above) ?

Staying tuned for the answer as I received my kit last week. @petty any guidance?

In the bottom of the nanopc there is a slot for the drive.
It needs a M3 screw too (I had to find one lying around my office)

m2

1 Like

Added more steps in my log on how I installed Status in the NanoPC by using the guide shared by @hester, following the systemd installation method.

https://notes.status.im/A0VSe1h2SD2ED_95Zy6AEA?view#Installing-Status

Some notes:

  • I had to install the arm64 version of Go (makes sense considering the type of device used). I initially attempted to install the amd64 version of Go because that’s what I use on my laptop, and that did not work
  • The installation of status-go failed initially because the envsubst command was not available. I had to execute apt install gettext-base in order to get this command. (I think this command should be added to the status-go install guide or at least have the required packages listed)
  • It would be nice if during the installation of status-go the enode address was outputted to a file somewhere instead of having to copy it manually.
  • I had to use a different service name to check if the node was running: status-go-bootnode instead of bootnode.

Now status-go is running successfully in the NanoPC!

next steps, configuring geth and improving the security of the nanopc :slight_smile:

EDIT:
I read here https://github.com/status-im/status-go/blob/develop/_assets/systemd/bootnode/README.md that we could execute make enode to obtain the enode address.

1 Like