laconicd-stack/docs/update-deployments.md
2025-06-19 11:01:34 +05:30

9.5 KiB

Update Deployments

Instructions to reset / update the deployments

Login

  • Log in as dev user on the deployments VM

  • All the deployments are placed in the /srv directory:

    cd /srv
    

laconic-wallet-web

  • Deployment dir: /srv/wallet/laconic-wallet-web-deployment

  • If code has changed, fetch and build with updated source code:

    # testnet-onboarding-app source
    cd ~/cerc/laconic-wallet-web
    
    # Fetch from remote
    git fetch
    
    # Checkout to the latest tag (https://git.vdb.to/LaconicNetwork/laconic-wallet-web/tags)
    git checkout <tag>
    
    # Rebuild the containers
    cd /srv/wallet
    
    laconic-so --stack ~/cerc/laconic-wallet-web/stack/stack-orchestrator/stack/laconic-wallet-web build-containers --force-rebuild
    
  • Update the configuration laconic-wallet-web-deployment/config.env:

    # URL for the deploy app so that wallet can work with it
    CERC_ALLOWED_URLS=https://deploy.laconic.com,https://store.laconic.com
    
  • Restart the deployment:

    laconic-so deployment --dir laconic-wallet-web-deployment stop
    
    laconic-so deployment --dir laconic-wallet-web-deployment start
    
    # Follow logs for laconic-wallet-web container, wait for the build to finish
    laconic-so deployment --dir laconic-wallet-web-deployment logs laconic-wallet-web -f
    
  • The web wallet can now be viewed at https://wallet.laconic.com

laconic-console

  • Deployment dir: /srv/console/laconic-console-testnet2-deployment

  • Set deployment directory in a variable:

    CONSOLE_DEPLOYMENT=/srv/console/laconic-console-testnet2-deployment
    
  • Update the configuration:

    nano $CONSOLE_DEPLOYMENT/config.env
    
    # Laconicd (hosted) GQL endpoint
    LACONIC_HOSTED_ENDPOINT=https://laconicd-mainnet.laconic.com
    
    # laconicd chain id
    CERC_LACONICD_CHAIN_ID=laconic-mainnet
    
  • Restart the deployment:

    laconic-so deployment --dir $CONSOLE_DEPLOYMENT stop
    
    laconic-so deployment --dir $CONSOLE_DEPLOYMENT start
    
    # Follow logs for console container
    laconic-so deployment --dir $CONSOLE_DEPLOYMENT logs console -f
    
  • The laconic console can now be viewed at https://console-mainnet.laconic.com


Laconic Shopify

  • Deployment dir: /srv/shopify/laconic-shopify-deployment

  • If code has changed, fetch and build with updated source code:

    laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconic-shopify setup-repositories --git-ssh --pull
    
    # rebuild containers
    laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconic-shopify build-containers --force-rebuild
    
  • Update the configuration if required in laconic-shopify-deployment/config.env:

    # laconicd RPC endpoint
    CERC_LACONICD_RPC_ENDPOINT=https://laconicd-mainnet.laconic.com
    
    # laconicd chain id
    CERC_LACONICD_CHAIN_ID=laconic-mainnet
    
  • Update the code for shopify app in theme/sections/main-product.liquid to use the correct chain ID

    ...
    <script>
      // Function to send a message to the iframe to get or create wallet account
      function requestWalletAddress(iframe) {
        const message = {
          type: 'REQUEST_CREATE_OR_GET_ACCOUNTS',
          # Replace `laconic-testnet-2` with `laconic-mainnet`
          chainId: 'laconic-testnet-2',
        };
    ...
    
  • Restart the deployment:

    cd /srv/shopify
    
    laconic-so deployment --dir laconic-shopify-deployment stop
    
    laconic-so deployment --dir laconic-shopify-deployment start
    

Webapp Deployer

  • Deployment dir: /srv/service-provider/webapp-deployer and /srv/service-provider/webapp-ui

  • Set deployment directory in a variable:

    SP_DEPLOYMENT=/srv/service-provider/webapp-deployer
    SP_UI_DEPLOYMENT=/srv/service-provider/webapp-ui
    
  • Stop the deployments:

    laconic-so deployment --dir $SP_DEPLOYMENT stop
    laconic-so deployment --dir $SP_UI_DEPLOYMENT stop
    
  • Update the laconic registry config with new endpoints:

    nano $SP_DEPLOYMENT/data/config/laconic.yml
    
    services:
      registry:
        rpcEndpoint: "https://laconicd-mainnet.laconic.com"
        gqlEndpoint: "https://laconicd-mainnet.laconic.com/api"
        userKey: "<userKey>"
        bondId: "<bondId>"
        chainId: laconic-mainnet
        gasPrice: 0.001alnt
    

    Note: Existing userKey and bondId can be used since they are carried over from SAPO testnet to mainnet

  • Update any deployer config (webapp-deployer/config.env) if required

  • Start the webapp deployer:

    laconic-so deployment --dir $SP_DEPLOYMENT 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:

    nano $SP_UI_DEPLOYMENT/config.env
    
    # URL of the laconic console
    LACONIC_HOSTED_CONFIG_app_console_link=https://console-mainnet.laconic.com
    
  • Start the webapp UI:

    laconic-so deployment --dir $SP_UI_DEPLOYMENT start
    
  • Check logs

    laconic-so deployment --dir $SP_UI_DEPLOYMENT logs webapp
    

Deploy Backend

  • Deployment dir: /srv/deploy-backend/laconic-backend-deployment

  • Stop the deployment:

    laconic-so deployment --dir laconic-backend-deployment stop
    
  • If code has changed, fetch and build with updated source code:

    laconic-so --stack ~/cerc/snowballtools-base-api-stack/stack-orchestrator/stacks/snowballtools-base-backend setup-repositories --pull
    
    # rebuild containers
    laconic-so --stack ~/cerc/snowballtools-base-api-stack/stack-orchestrator/stacks/snowballtools-base-backend build-containers --force-rebuild
    
  • Push updated images to the container registry:

    cd /srv/deploy-backend
    
    # login to container registry
    CONTAINER_REGISTRY_URL=container-registry.apps.vaasl.io
    # For credentials: "cat /srv/service-provider/webapp-deployer/config.env | grep IMAGE_REGISTRY"
    CONTAINER_REGISTRY_USERNAME=
    CONTAINER_REGISTRY_PASSWORD=
    
    docker login $CONTAINER_REGISTRY_URL --username $CONTAINER_REGISTRY_USERNAME --password $CONTAINER_REGISTRY_PASSWORD
    
    # Push backend images
    laconic-so deployment --dir laconic-backend-deployment push-images
    
  • Update the configuration if required in laconic-backend-deployment/configmaps/config/prod.toml:

    ...
    [registryConfig]
      fetchDeploymentRecordDelay = 5000
      checkAuctionStatusDelay = 5000
      restEndpoint = "https://laconicd-mainnet.laconic.com"
      gqlEndpoint = "https://laconicd-mainnet.laconic.com/api"
      chainId = "laconic-mainnet"
      privateKey = "<private-key>"
      bondId = "<bond-id>"
      authority = "laconic-deploy"
      [registryConfig.fee]
        gasPrice = "0.001alnt"
    ...
    
  • Restart the deployment:

    laconic-so deployment --dir laconic-backend-deployment start
    
  • Check logs:

    laconic-so deployment --dir laconic-backend-deployment logs snowballtools-base-backend
    

Deploy Frontend

NOTE: Follow steps below if CI deployment doesn't work (cancel CI before following steps below)

Prerequisites

  • Node.js

  • Yarn

Setup

  • On your local machine, clone the snowballtools-base repo:

    git clone git@git.vdb.to:cerc-io/snowballtools-base.git
    
  • Install dependencies:

    cd snowballtools-base
    yarn install
    
  • In the deployer package, create required env:

    cd packages/deployer
    cp .env.example .env
    

    Set the required variables:

    REGISTRY_BOND_ID=<bond-id>
    DEPLOYER_LRN=lrn://vaasl-provider/deployers/webapp-deployer-api.apps.vaasl.io
    AUTHORITY=laconic-deploy
    

    Note: The bond id should be set to the laconic-deploy authority

  • Update required laconic config. You can use the same userKey and bondId used for deploying backend:

    # Replace <user-pk> and <bond-id>
    cat <<EOF > config.yml
    services:
      registry:
        rpcEndpoint: https://laconicd-mainnet.laconic.com
        gqlEndpoint: https://laconicd-mainnet.laconic.com/api
        userKey: <user-pk>
        bondId: <bond-id>
        chainId: laconic-mainnet
        gasPrice: 0.001alnt
    EOF
    

    Note: The userKey account should own the authority laconic-deploy

Run