INSTRUCTIONS TO SETUP AN ORCHESTRATOR
Orchestrator Infrastructure Requirements
The Orchestrator can be run on the Pillar itself or a separate virtual machine. The stand alone virtual machine requirements are:
CPU: 2 cores w/ 4 threads (4 vCores)
RAM: 4 GB
Disk: NVMe w/ 40 GB
Connectivity: Public IP w/ low latency (preferably datacenter)
If you separate the Orchestrator from the Pillar you will need access to a znnd node. If you run the Orchestrator on the Pillar itself, you can use the znnd node of the Pillar.
Setup ETH node
Before you get started with installing the Orchestrator, you will need to setup an Ethereum node. You can follow these instructions to do that: How to Setup an Ethereum Node. Take note of the ws
or wss
endpoint for use in the config.json
file below.
Download the Orchestrator Binary
wget https://github.com/HyperCore-Team/orchestrator/releases/download/v0.0.7-alphanet/orchestrator-linux-amd64.zip
unzip orchestrator-linux-amd64.zip
Alternatively Build the Orchestrator Binary from Source
Get Source Code
git clone https://github.com/HyperCore-Team/orchestrator
Build the Binary
cd orchestrator
go build --ldflags '-extldflags "-Wl,--allow-multiple-definition"' -o ./build/orchestrator main.go
Setup the Config.json File
Move the Binary and create the config.json
file
sudo cp orchestrator-linux-amd64 /usr/local/bin/
sudo /usr/local/bin/orchestrator-linux-amd64
After running the process above it should fail, but will create a working directory at /root/.orchestrator/
Next we will update the config.json
file located at /root/.orchestrator/config.json
sudo nano /root/.orchestrator/config.json
Update the config.json
file with the correct information.
- Make sure to update the websocket
Urls
for theEthereum
andZenon
nodes. - Make sure to provide the passphrase for the
ProducerKeyFilePassphrase
. This can be found by running thesudo ./znn-controller
then selectstatus
. - Note the
EvmAddress
is unique for each Orchestrator and should not be changed. This will be created by the orchestrator. Do not change or remove it after creation. - Add the Bootstrap address:
"Bootstrap": "/dns/bootstrap.zenon.community/tcp/55055/p2p/12D3KooWBVQYaz3yuJor8oW7bUqoAGDZDpFBGbGerL3SprHn57pQ"
{
"DataPath": "/root/.orchestrator",
"EventsPath": "",
"QueuesPath": "",
"GlobalState": 0,
"EvmAddress": "",
"Networks": {
"BSC": {
"Urls": [
"ws://127.0.0.1:8545"
],
"FilterQuerySize": 2000
},
"Ethereum": {
"Urls": [
"INSERT"
],
"FilterQuerySize": 2000
},
"Zenon": {
"Urls": [
"ws://127.0.0.1:35998"
],
"FilterQuerySize": 0
}
},
"TssConfig": {
"Port": 55055,
"PublicKey": "",
"DecompressedPublicKey": "",
"LocalPubKeys": [],
"Bootstrap": "/dns/bootstrap.zenon.community/tcp/55055/p2p/12D3KooWBVQYaz3yuJor8oW7bUqoAGDZDpFBGbGerL3SprHn57pQ",
"PubKeyWhitelist": {},
"BaseDir": "/root/.orchestrator/tss",
"BaseConfig": {
"PartyTimeout": 90000000000,
"KeyGenTimeout": 600000000000,
"KeySignTimeout": 280000000000,
"KeyRegroupTimeout": 60,
"PreParamTimeout": 600000000000,
"EnableMonitor": false
}
},
"ProducerKeyFileName": "producer",
"ProducerKeyFilePassphrase": "INSERT",
"ProducerIndex": 0
}
Copy the producer
file into the DataPath
. This assumes you are running the orchestrator on the pillar.
sudo cp /root/.znn/wallet/producer /root/.orchestrator/producer
Alternatively, if you are running the orchestrator on a different VM than the pillar, follow these instructions:
On the Pillar Node
sudo cat /root/.znn/wallet/producer
Copy (right click mouse) the entire key (including the curly brackets).
Then go back to the orchestrator server
sudo nano /root/.orchestrator/producer
Paste the key (make sure that you don’t double the curly brackets). You can paste in terminal by right clicking. Save the file: ctrl+x
then y
Setup Orchestrator as a Service
sudo nano /etc/systemd/system/orchestrator.service
Copy and paste to following contents into the terminal.
[Unit]
Description=Orchestrator Service
After=network.target
[Service]
User=root
Group=root
ExecStart=/usr/local/bin/orchestrator-linux-amd64
ExecStop=/usr/bin/pkill -9 orchestrator-linux-amd64
Restart=on-failure
TimeoutStopSec=10s
TimeoutStartSec=10s
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=orchestrator
[Install]
WantedBy=multi-user.target
Activate and start the orchestrator
service
sudo systemctl daemon-reload
sudo systemctl enable orchestrator
sudo systemctl start orchestrator
Check the status of the Orchestrator Service
sudo systemctl status orchestrator
Open Firewall
Make sure port 55055
TCP
is open on your firewall for gossip between nodes.
Fuse 120 QSR
Make sure you have fused at least 120 QSR to the Pillar Producer Address
Steps to Update the Orchestrator Binary
wget -O orchestrator-linux-amd64.zip https://github.com/HyperCore-Team/orchestrator/releases/download/v0.0.2-alphanet/orchestrator-linux-amd64.zip #Note this could change as releases change
unzip orchestrator-linux-amd64.zip
sudo systemctl stop orchestrator
sudo cp orchestrator-linux-amd64 /usr/local/bin/
sudo systemctl start orchestrator
# check status of orchestrator by running next command
sudo systemctl status orchestrator
Notes
- After starting the Orchestrator you can see your EVM address
"EvmAddress": "",
in theconfig.json
file. You can see that address by typingsudo cat /root/.orchestrator/config.json
- Search for node PubKey
journalctl --unit=orchestrator -n 100000 --no-pager | grep "ic.priv"
- Check listening ports
netstat -tulpn | grep LISTEN