Part of [Create a public laconicd testnet](https://www.notion.so/Create-a-public-laconicd-testnet-896a11bdd8094eff8f1b49c0be0ca3b8) Added steps to update deployments: - stage2 laconicd - laconic-console-testnet2 - laconic-shopify - fixturenet-eth - Nitro bridge - Nitro nodes - Snowball backend - Snowball frontend Co-authored-by: Adw8 <adwaitgharpure@gmail.com> Reviewed-on: #38 Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com> Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
12 KiB
Service Provider
- Follow Set up a new service provider to setup a new service provider (SP)
- If you already have a SP setup for stage1, follow Update service provider for SAPO testnet to update it for testnet2
Set up a new service provider
Follow steps from service-provider-setup. After setup, you will have the following services running (your configuration will look similar to the examples listed below):
- laconicd chain RPC endpoint: http://lcn-daemon.laconic.com:26657
- laconicd GQL endpoint: http://lcn-daemon.laconic.com:9473/api
- laconic console: http://lcn-console.laconic.com:8080/registry
- webapp deployer API: https://webapp-deployer-api.pwa.laconic.com
- webapp deployer UI: https://webapp-deployer-ui.pwa.laconic.com
Follow the steps below to point your deployer to the SAPO testnet
Update service provider for SAPO testnet
- On a successful webapp-deployer setup with SAPO testnet, your deployer will be available on https://deploy.apps.vaasl.io
- For creating a project, users can create a deployment auction which your deployer will bid on or they can perform a targeted deployment using your deployer LRN
Prerequisites
- A SAPO testnet node (see Join SAPO testnet)
Stop services
-
Stop a laconic-console deployment:
# In directory where laconic-console deployment was created laconic-so deployment --dir laconic-console-deployment stop --delete-volumes
-
Stop webapp deployer:
# In directory where webapp-deployer deployment was created laconic-so deployment --dir webapp-deployer stop laconic-so deployment --dir webapp-ui stop
Update laconic console
-
Remove an existing console deployment:
# In directory where laconic-console deployment was created # Backup the config if required rm -rf laconic-console-deployment
-
Follow laconic-console stack instructions to setup a new laconic-console deployment
-
Example configuration:
# CLI configuration # laconicd RPC endpoint (can be pointed to your node) CERC_LACONICD_RPC_ENDPOINT=https://laconicd-sapo.laconic.com # laconicd GQL endpoint (can be pointed to your node) CERC_LACONICD_GQL_ENDPOINT=https://laconicd-sapo.laconic.com/api CERC_LACONICD_CHAIN_ID=laconic-testnet-2 # your private key CERC_LACONICD_USER_KEY= # your bond id (optional) CERC_LACONICD_BOND_ID= # Gas price to use for txs (default: 0.001alnt) # Use for auto fees calculation, gas and fees not required to be set in that case # Reference: https://git.vdb.to/cerc-io/laconic-registry-cli#gas-and-fees CERC_LACONICD_GASPRICE= # Console configuration # Laconicd (hosted) GQL endpoint (can be pointed to your node) LACONIC_HOSTED_ENDPOINT=https://laconicd-sapo.laconic.com
Check authority and deployer record
-
The stage1 testnet state has been carried over to testnet2, if you had authority and records on stage1, they should be present in testnet2 as well
-
Check authority:
# In directory where laconic-console deployment was created AUTHORITY=<your-authority> laconic-so deployment --dir laconic-console-deployment exec cli "laconic registry authority whois $AUTHORITY"
-
Check deployer record:
PAYMENT_ADDRESS=<your-deployers-payment-address> laconic-so deployment --dir laconic-console-deployment exec cli "laconic registry record list --all --type WebappDeployer --paymentAddress $PAYMENT_ADDRESS"
(Optional) Reserve a new authority
-
Follow steps if you want to reserve a new authority
-
Create a bond:
# An existing bond can also be used laconic-so deployment --dir laconic-console-deployment exec cli "laconic registry bond create --type alnt --quantity 100000000000" # {"bondId":"a742489e5817ef274187611dadb0e4284a49c087608b545ab6bd990905fb61f3"} # Set bond id BOND_ID=
-
Reserve an authority:
AUTHORITY=<your-authority> laconic-so deployment --dir laconic-console-deployment exec cli "laconic registry authority reserve $AUTHORITY" # Triggers an authority auction
-
Obtain the authority auction id:
laconic-so deployment --dir laconic-console-deployment exec cli "laconic registry authority whois $AUTHORITY" # "auction": { # "id": "73e0b082a198c396009ce748804a9060c674a10045365d262c1584f99d2771c1" # Set auction id AUCTION_ID=
-
Commit a bid to the auction:
laconic-so deployment --dir laconic-console-deployment exec cli "laconic registry auction bid commit $AUCTION_ID 5000000 alnt --chain-id laconic-testnet-2" # {"reveal_file":"/app/out/bafyreiewi4osqyvrnljwwcb36fn6sr5iidfpuznqkz52gxc5ztt3jt4zmy.json"} # Set reveal file REVEAL_FILE= # Wait for the auction to move from commit to reveal phase laconic-so deployment --dir laconic-console-deployment exec cli "laconic registry auction get $AUCTION_ID"
-
Reveal your bid using reveal file generated while commiting the bid:
laconic-so deployment --dir laconic-console-deployment exec cli "laconic registry auction bid reveal $AUCTION_ID $REVEAL_FILE --chain-id laconic-testnet-2" # {"success": true}
-
Verify auction status and winner address after auction completion:
laconic-so deployment --dir laconic-console-deployment exec cli "laconic registry auction get $AUCTION_ID"
-
Set the authority with a bond:
laconic-so deployment --dir laconic-console-deployment exec cli "laconic registry authority bond set $AUTHORITY $BOND_ID" # {"success": true}
-
Verify the authority has been registered:
laconic-so deployment --dir laconic-console-deployment exec cli "laconic registry authority whois $AUTHORITY"
-
Update laconic-console-deployment config (
laconic-console-deployment/config.env
) with created bond:... CERC_LACONICD_BOND_ID=<bond-id> ...
-
Restart the console deployment:
laconic-so deployment --dir laconic-console-deployment stop && laconic-so deployment --dir laconic-console-deployment start
Update webapp deployer
-
Fetch latest stack repos:
# In directory where webapp-deployer deployment was created laconic-so --stack webapp-deployer-backend setup-repositories --pull # Confirm latest commit hash in the ~/cerc/webapp-deployment-status-api repo
-
Rebuild container images:
laconic-so --stack webapp-deployer-backend build-containers --force-rebuild
-
Push stack images to the container registry:
-
Login to the container registry:
# Set required variables # eg: container-registry.pwa.laconic.com CONTAINER_REGISTRY_URL= CONTAINER_REGISTRY_USERNAME= CONTAINER_REGISTRY_PASSWORD= # login to container registry docker login $CONTAINER_REGISTRY_URL --username $CONTAINER_REGISTRY_USERNAME --password $CONTAINER_REGISTRY_PASSWORD # WARNING! Using --password via the CLI is insecure. Use --password-stdin. # WARNING! Your password will be stored unencrypted in /home/dev2/.docker/config.json. # Configure a credential helper to remove this warning. See # https://docs.docker.com/engine/reference/commandline/login/#credential-stores # Login Succeeded
-
Push images:
laconic-so deployment --dir webapp-deployer push-images
-
-
Update deployer laconic registry config (
webapp-deployer/data/config/laconic.yml
) with new endpoints:services: registry: rpcEndpoint: 'https://laconicd-sapo.laconic.com' gqlEndpoint: 'https://laconicd-sapo.laconic.com/api' userKey: "<userKey>" bondId: "<bondId" chainId: laconic-testnet-2 gasPrice: 0.001alnt
Note: Existing
userKey
andbondId
can be used since they are carried over from laconicd stage1 to testnet2 -
Publish a new webapp deployer record:
-
Required if it doesn't already exist or some attribute needs to be updated
-
Set the following variables:
# Path to the webapp-deployer directory # eg: /home/dev/webapp-deployer DEPLOYER_DIR= # Deployer LRN (logical resource name) # eg: "lrn://laconic/deployers/webapp-deployer-api.laconic.com" DEPLOYER_LRN= # Deployer API URL # eg: "https://webapp-deployer-api.pwa.laconic.com" API_URL= # Deployer GPG public key file path # eg: "/home/dev/webapp-deployer-api.laconic.com.pgp.pub" GPG_PUB_KEY_FILE_PATH= GPG_PUB_KEY_FILE=$(basename $GPG_PUB_KEY_FILE_PATH)
-
Delete the LRN if it currently resolves to an existing record:
# In directory where laconic-console deployment was created laconic-so deployment --dir laconic-console-deployment exec cli "laconic registry name resolve $DEPLOYER_LRN" # Delete the name laconic-so deployment --dir laconic-console-deployment exec cli "laconic registry name delete $DEPLOYER_LRN" # Confirm deletion laconic-so deployment --dir laconic-console-deployment exec cli "laconic registry name resolve $DEPLOYER_LRN"
-
Copy over the GPG pub key file to webapp-deployer:
cp $GPG_PUB_KEY_FILE_PATH webapp-deployer/data/config
-
Publish the deployer record:
docker run -it \ -v $DEPLOYER_DIR/data/config:/home/root/config \ cerc/webapp-deployer-backend:local laconic-so publish-deployer-to-registry \ --laconic-config /home/root/config/laconic.yml \ --api-url $API_URL \ --public-key-file /home/root/config/$GPG_PUB_KEY_FILE \ --lrn $DEPLOYER_LRN \ --min-required-payment 9500
-
-
Update deployer config (
webapp-deployer/config.env
):# Update the deployer LRN if it has changed export LRN= # Min payment to require for performing deployments export MIN_REQUIRED_PAYMENT=9500 # Handle deployment auction requests export HANDLE_AUCTION_REQUESTS=true # Amount that the deployer will bid on deployment auctions export AUCTION_BID_AMOUNT=9500
-
Start the webapp deployer:
laconic-so deployment --dir webapp-deployer start
-
Get the webapp-deployer pod id:
laconic-so deployment --dir webapp-deployer ps # Expected output # Running containers: # id: default/laconic-096fed46af974a47-deployment-644db859c7-snbq6, name: laconic-096fed46af974a47-deployment-644db859c7-snbq6, ports: 10.42.2.11:9555->9555 # Set pod id export POD_ID= # Example: # export POD_ID=laconic-096fed46af974a47-deployment-644db859c7-snbq6
-
Copy over GPG keys files to the webapp-deployer container:
kubie ctx default # Copy the GPG key files to the pod kubectl cp <path-to-your-gpg-private-key> $POD_ID:/app kubectl cp <path-to-your-gpg-public-key> $POD_ID:/app # Required everytime you stop and start the deployer
-
Check logs:
# Deployer kubectl logs -f $POD_ID # Deployer auction handler kubectl logs -f $POD_ID -c cerc-webapp-auction-handler
-
Update deployer UI config (
webapp-ui/config.env
):# URL of the webapp deployer backend API # eg: https://webapp-deployer-api.pwa.laconic.com LACONIC_HOSTED_CONFIG_app_api_url= # URL of the laconic console LACONIC_HOSTED_CONFIG_app_console_link=https://console-sapo.laconic.com
-
Start the webapp UI:
laconic-so deployment --dir webapp-ui start
-
Check logs
laconic-so deployment --dir webapp-ui logs webapp