testnet-laconicd-stack/stack-orchestrator/stacks/laconicd-full-node/README.md

155 lines
3.6 KiB
Markdown

# laconicd-full-node
Instructions for running a laconicd testnet full node and joining as a validator
## Prerequisites
* Minimum hardware requirements:
```bash
RAM: 8-16GB
Disk space: 200GB
CPU: 2 cores
```
* Testnet genesis file (file or an URL) and peer node addresses
## Setup
* Clone the stack repo:
```bash
laconic-so fetch-stack git.vdb.to/cerc-io/testnet-laconicd-stack
```
* Clone required repositories:
```bash
laconic-so --stack /home/prathamesh/deepstack/testnet-laconicd-stack/stack-orchestrator/stacks/laconicd-full-node setup-repositories
```
* Build the container images:
```bash
laconic-so --stack /home/prathamesh/deepstack/testnet-laconicd-stack/stack-orchestrator/stacks/laconicd-full-node build-containers
```
This should create the following docker images locally:
* `cerc/laconic2d`
* `cerc/laconic-registry-cli`
* `cerc/webapp-base`
* `cerc/laconic-console-host`
## Create a deployment
* Create a spec file for the deployment:
```bash
laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconicd-full-node deploy init --output laconic-full-node-spec.yml
```
* 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
```
* (Optional) Copy over the genesis file (`.json`) to config data directory in deployment (`laconic-full-node-deployment/data/laconicd-data/config`):
```bash
# Example
mkdir -p laconic-full-node-deployment/data/laconicd-data/config
cp genesis.json laconic-full-node-deployment/data/laconicd-config/genesis.json
```
## Configuration
* Inside the deployment directory, open `config.env` file and set following env variables:
```bash
# Comma separated list of nodes to keep persistent connections to
# Example: "node-1-id@node-1-host:26656,node-2-id@node-2-host:26656"
CERC_PEERS=""
# Optional
# A custom human readable name for this node (default: TestnetNode)
CERC_MONIKER=
# Network chain ID (default: laconic_9000-1)
CERC_CHAIN_ID=
# Genesis file URL
# Not required if a genesis file is placed in the config data directory in previous steps
CERC_GENESIS_FILE_URL=
# Output log level (default: info)
CERC_LOGLEVEL=
```
## Start the deployment
```bash
laconic-so deployment --dir laconic-full-node-deployment start
```
## Check status
* To list down and monitor the running containers:
```bash
# With status
docker ps -a
# Check logs for a container
docker logs -f <CONTAINER_ID>
```
* Check the sync status of your node:
```bash
docker exec -it <LACONICD_CONTAINER_ID> status | jq .sync_info
```
## Join as testnet validator
<!-- TODO import a funded account / create an account and get it funded -->
<!-- TODO create a validator-->
## Clean up
* Stop all services running in the background:
```bash
# Stop the docker containers
laconic-so deployment --dir laconic-full-node-deployment stop
```
* To stop all services and also delete data:
```bash
# Stop the docker containers
laconic-so deployment --dir laconic-full-node-deployment stop --delete-volumes
# Remove deployment directory (deployment will have to be recreated for a re-run)
rm -r laconic-full-node-deployment
```