Security News
GitHub Removes Malicious Pull Requests Targeting Open Source Repositories
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
@orbs-network/orbs-nebula
Advanced tools
Nebula is a tool to provision new Orbs Hybrid Blockchain Constellations
This step-by-step guide will walk you through creating a new node and connecting it to an existing Orbs network.
To complete this guide you will need the following set up:
Mac or Linux machine
An SSH public key (by default we use ~/.ssh/id_rsa.pub
). We go into details on how to generate it below
A clean, new AWS account with admin programmatic access.
AWS CLI
Use brew install awscli
to get it installed
An AWS credentials profile set correctly:
See more here
We require the aws_access_key_id
and aws_secret_access_key
of an admin account for our Terraform script to execute correctly
Node.js version 8 or above
Use brew install node
to get it installed
Use brew install terraform
to get it installed
Use brew install orbs-network/devtools/orbs-key-generator
to get it installed (requires a Mac)
We require a valid public/private keys to run our deployment scripts and set up the EC2 resources. The key file should remain secret with the exception of feeding it to the configuration during setup. (providing the path for the pub file in the orbs-node.json
setup file as described below)
The generated key should not have a passphrase. It is okay to generate a key by any means, such as based on the following tutorial by GitHub
The gist of creating such a key is running:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
The Orbs node that you provision must have a static IPs in order to communicate with the network.
ca-central-1
)That IP address and region will later be used in the node configuration file.
An Orbs node is identified by a public key and any action of the node should be signed with the corresponding private key. These keys should be generated in a secure fashion and the private key should be securely stored.
We require an Orbs private key and an Orbs address. These can be generated using the Orbs key generator by running orbs-key-generator node
The output of the key generator should be securely stored and used in the orbs-node.json
configuration file and node deployment command as explained below. You will need the NodeAddress
and NodePrivateKey
later on without the leading 0x.
To install Nebula run
npm install -g @orbs-network/orbs-nebula
If you have previously installed Nebula and you are performing a new deploy, we recommend updating it by running npm update -g @orbs-network/orbs-nebula
The thing to do next is to create the orbs-node.json
file and configure it as required for the new node.
The content of the orbs-node.json
should be:
{
"name": "$VALIDATOR_NAME-orbs-prod",
"awsProfile": "default",
"sshPublicKey": "$LOCATION_TO_PUB_FILE",
"orbsAddress": "$ORBS_PUBLIC_NODE_ADDRESS",
"publicIp": "$NODE_AWS_IP",
"backend": true,
"region": "$NODE_AWS_REGION",
"nodeSize": "m4.xlarge",
"nodeCount": 1,
"bootstrapUrl": "https://s3.amazonaws.com/orbs-bootstrap-prod/boyar/config.json",
"ethereumChain": "mainnet",
"ethereumTopologyContractAddress": "0x804c8336846d8206c95CEe24752D514210B5a240",
"cachePath": "./_terraform",
"ethereumEndpoint": "$ETHEREUM_NODE_ADDRESS",
"incomingSshCidrBlocks": ["$YOUR_OFFICE_IP/32"]
}
You will need:
Other parameters (no need to change them):
The cachePath
configuration tells nebula where to store the terraform installation meta-data created during the deploy stage. It is required in cases where you wish to remove the node from AWS. You should store these files and back them up so you can run maintenance if required.
The awsProfile
configuration can be changed if you are using multiple aws configurations and want a specific one to be applied.
While the configuration is quite easily changeable, please do remember that any modification to your configuration file MUST be done while the node is DOWN. For example: if you decide you want to set a backend syncing using the Terraform state syncing to S3 (Just as an example). You should do the following to perform the change:
"backend": true
)To avoid having the orbs node private key as part of your command history, we recommend creating a file called orbs-private-key.txt
and put the orbs node private key inside it, without the leading 0x.
That key was generated by the key generator and should be in a hex string of size 64 characters, like f5f83Ee70a85fFF2exxxxxxxxxxxxxxxxxxxxxxxxxxx334932F34C8D629165Ed
.
To provision the resources required for the node:
nebula create -f orbs-node.json --orbs-private-key $(cat path/to/orbs-private-key.txt)
Terraform files corresponding to nodes can be found in the folder defined in cachePath
and should be backed up.
If needed, the command to remove all resources provisioned for the node is:
nebula destroy -f orbs-node.json
After deployment make sure to backup and securely store -
_terraform
folder contents - these are required to destroy or redeploy the nodeorbs-node.json
fileIn order to register on the network, please follow the Validator Registration process
Contact Orbs after registration is done.
Once the deployment finishes, the node goes through several stages:
At that point if everything passes and the node is part of the topology, it will start syncing with other nodes.
Now, your node has joined the network and should be syncing the existing blocks.
To inspect your node operation on every virtual chain, Orbs has developed a special inspection route available on each node that provides access to node metrics.
To access the metrics, navigate to http://$NODE_IP/vchains/1100000/metrics
replacing $NODE_IP with
your node IP.
You node will not be able to respond to any requests until its Ethereum node finished syncing - this can take several hours from deploy.
The JSON you see will include a property called BlockStorage.BlockHeight
, which indicates the block height that the network is currently on.
Try refreshing this metrics page a couple of times, you should see this value increasing.
If this is the case it means that the network is alive and healthy.
Congratulations!
If you get an Terraform error that your IP does not exist, check whether the combination of ip and region is correct in the node configuration file (orbs-node.json
)
If the metrics page does not respond, it could be that the Ethereum node did not finish syncing - this takes several hours.
If you are having trouble with Ethereum node, add "ethereumEndpoint": "http://eth.orbs.com"
to your node.json
and redeploy the node (nebula destroy
and then nebula create
as usual). If you have your own synced Ethereum node, you can use it as a value for ethereumEndpoint
. We only provide eth.orbs.com
for your convenience. Our long term goal is to use the Ethereum node that belongs to the Orbs node.
Contact Orbs for any other issues
FAQs
Nebula is a tool to provision new Orbs Hybrid Blockchain Constellations
The npm package @orbs-network/orbs-nebula receives a total of 15 weekly downloads. As such, @orbs-network/orbs-nebula popularity was classified as not popular.
We found that @orbs-network/orbs-nebula demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 8 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
Security News
Node.js will be enforcing stricter semver-major PR policies a month before major releases to enhance stability and ensure reliable release candidates.