# 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 ``` * Check the sync status of your node: ```bash docker exec -it status | jq .sync_info ``` ## Join as testnet 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 ```