Setup env config and update script for running a node

This commit is contained in:
Prathamesh Musale 2024-06-18 10:46:09 +05:30
parent 7adddacc72
commit a37e5ab1f2
3 changed files with 83 additions and 25 deletions

View File

@ -3,6 +3,12 @@ services:
restart: no restart: no
image: cerc/laconic2d:local image: cerc/laconic2d:local
command: ["/bin/sh", "-c", "/opt/run-laconicd.sh"] command: ["/bin/sh", "-c", "/opt/run-laconicd.sh"]
environment:
CERC_MONIKER: ${CERC_MONIKER:-TestnetNode}
CERC_CHAIN_ID: ${CERC_CHAIN_ID:-laconic_9000-1}
CERC_GENESIS_FILE_URL: ${CERC_GENESIS_FILE_URL:-"file:///root/.laconicd/config/genesis.json"}
CERC_PEERS: ${CERC_PEERS}
CERC_LOGLEVEL: ${CERC_LOGLEVEL:-info}
volumes: volumes:
- laconicd-data:/root/.laconicd/data - laconicd-data:/root/.laconicd/data
- laconicd-config:/root/.laconicd/config - laconicd-config:/root/.laconicd/config
@ -17,8 +23,16 @@ services:
- "26656" - "26656"
- "9473" - "9473"
- "9090" - "9090"
- "9091"
- "1317" - "1317"
healthcheck:
test: ["CMD", "nc", "-vz", "127.0.0.1:26657"]
interval: 30s
timeout: 10s
retries: 10
start_period: 10s
extra_hosts:
- "host.docker.internal:host-gateway"
cli: cli:
image: cerc/laconic-registry-cli:local image: cerc/laconic-registry-cli:local
volumes: volumes:

View File

@ -1,47 +1,44 @@
#!/bin/sh #!/bin/bash
if [[ -n "$CERC_SCRIPT_DEBUG" ]]; then if [[ -n "$CERC_SCRIPT_DEBUG" ]]; then
set -x set -x
fi fi
# TODO: Read from env set -e
MONIKER=MyNode
CHAIN_ID=laconic_9000-1
GENESIS_FILE_URL="/root/.laconicd/config/genesis.json"
PEERS=""
LOGLEVEL="info"
if [ -z "$PEERS" ]; then if [ -z "$CERC_PEERS" ]; then
echo "Persistent peers not provided, exiting..." echo "Persistent peers not provided, exiting..."
exit 1 exit 1
else else
echo "Using persistent peers $PEERS" echo "Using persistent peers $CERC_PEERS"
fi fi
echo "Env:" echo "Env:"
echo "Moniker: $MONIKER" echo "Moniker: $CERC_MONIKER"
echo "Chain Id: $CHAIN_ID" echo "Chain Id: $CERC_CHAIN_ID"
echo "Genesis file: $GENESIS_FILE_URL" echo "Genesis file: $CERC_GENESIS_FILE_URL"
echo "Persistent peers: $PEERS" echo "Persistent peers: $CERC_PEERS"
echo "Log level: $CERC_LOGLEVEL"
NODE_HOME=/root/.laconicd NODE_HOME=/root/.laconicd
# Set chain id in config # Set chain id in config
laconicd config set client chain-id $CHAIN_ID --home $NODE_HOME laconicd config set client chain-id $CERC_CHAIN_ID --home $NODE_HOME
# Check if node data dir already exists # Check if node data dir already exists
if [ -z "$(ls -A "$NODE_HOME/data")" ]; then if [ -z "$(ls -A "$NODE_HOME/data")" ]; then
# Init node # Init node
echo "Initializing a new laconicd node with moniker $MONIKER and chain id $CHAIN_ID" echo "Initializing a new laconicd node with moniker $CERC_MONIKER and chain id $CERC_CHAIN_ID"
laconicd init $MONIKER --chain-id=$CHAIN_ID --home $NODE_HOME laconicd init $CERC_MONIKER --chain-id=$CERC_CHAIN_ID --home $NODE_HOME
# Fetch genesis config # Fetch genesis config
echo "Fetching genesis file from $GENESIS_FILE_URL" echo "Fetching genesis file from $CERC_GENESIS_FILE_URL"
curl -o $NODE_HOME/config/genesis.json $GENESIS_FILE_URL curl -o $NODE_HOME/config/genesis.json $CERC_GENESIS_FILE_URL
else else
echo "Node data dir $NODE_HOME/data already exists, skipping initialization..." echo "Node data dir $NODE_HOME/data already exists, skipping initialization..."
fi fi
# Update config with persistent peers # Update config with persistent peers
sed -i "s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/g" $NODE_HOME/config/config.toml sed -i "s/^persistent_peers *=.*/persistent_peers = \"$CERC_PEERS\"/g" $NODE_HOME/config/config.toml
laconicd start --gql-playground --gql-server --log_level $LOGLEVEL --home $NODE_HOME laconicd start --gql-playground --gql-server --log_level $CERC_LOGLEVEL --home $NODE_HOME

View File

@ -33,10 +33,57 @@ This should create several container images in the local image registry:
* cerc/webapp-base * cerc/webapp-base
* cerc/laconic-console-host * cerc/laconic-console-host
## Deploy the stack ## Create a spec file for the deployment
```bash ```bash
laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconicd-full-node deploy up laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconicd-full-node deploy init --output laconic-full-node-spec.yml
```
## Ports
Edit `network` in the spec file to map container ports to host ports as required:
```bash
...
network:
# TODO: UPDATE
ports:
laconicd:
- '6060:6060'
- '26657:26657'
- '26656:26656'
- '9473:9473'
- '9090:9090'
- '1317:1317'
```
## Create a deployment from the spec file
```bash
laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconicd-full-node deploy create --spec-file laconic-full-node-spec.yml --deployment-dir laconic-full-node-deployment
```
### Configuration
Copy genesis file to the deployment data directory:
```bash
# Example
cp genesis.json laconic-full-node-deployment/data/laconicd-config/
```
Inside deployment directory, open the `config.env` file and set following env variables:
```bash
# TODO: UPDATE
# External Filecoin (ETH RPC) endpoint to point the watcher to
CERC_PEERS=""
```
## Start the deployment
```bash
laconic-so deployment --dir laconic-full-node-deployment start
``` ```
## Check status ## Check status
@ -54,7 +101,7 @@ laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/lacon
Stop all services running in the background: Stop all services running in the background:
```bash ```bash
laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconicd-full-node deploy down laconic-so deployment --dir laconic-full-node-deployment stop
``` ```
Clear volumes created by this stack: Clear volumes created by this stack: