Blog

  • CMP NVMe Storage Tier Upgrade & Downgrade Guide

    Overview

    CMP allows you to change the storage tier of supported NVMe volumes without detaching the disk, restarting the virtual machine, or causing downtime. Storage policy changes between Standard NVMe and Pro NVMe are applied live, allowing you to increase performance or reduce costs as your workload changes.

    Supported Live Changes

    • Standard NVMe → Pro NVMe
    • Pro NVMe → Standard NVMe

    No Downtime • No Data Loss • Live Storage Policy Change

    Storage Tiers

    Storage Tier Max IOPS Max Throughput Storage Architecture Live Tier Change
    Eco NVMe 15,000 500 MB/s Erasure Coding ❌ Not Supported
    Standard NVMe 25,000 1,000 MB/s 3× Replication ✅ Upgrade to Pro
    Pro NVMe 50,000 2,000 MB/s 3× Replication ✅ Downgrade to Standard

    Note: Eco NVMe uses Erasure Coding and cannot be converted to Standard or Pro using a live storage policy change. A new volume must be created, and the data must be migrated manually.

    Before You Begin

    • Ensure you have access to the CMP Advanced Panel.
    • The storage policy option is not available in the standard CMP Dashboard.
    • The volume can remain attached to a running VM during the change.
    • No reboot or detachment is required.

    Accessing the Advanced Panel

    • Log in to the CMP Dashboard.
    • Select the appropriate region.

    Select your Region

    • Click the Advanced Panel (external link icon (↗) ) for your selected region.

    Open the Advanced Panel

    • Navigate to Volumes.

    Navigate to Volumes

    Upgrade Standard NVMe to Pro NVMe

    • Open Volumes in the Advanced Panel.

    Navigate to Volumes in the Advanced Panel

    • Select the volume you want to upgrade.

    Click on the volume to open its detail panel

    • Locate the Storage Policy field under Properties.
    • Click the Edit (Pencil) icon.

    Click the pencil icon to edit the Storage Policy

    • Select Pro NVMe from the drop-down menu.

    Select Pro NVMe from the dropdown

    • Click Save (✓).

    Confirm the selection and save

    • The storage policy is updated immediately.

    Verify the upgrade is applied

    Verify the upgrade is applied

    Performance after upgrade

    • Up to 50,000 IOPS
    • Up to 2,000 MB/s throughput
    • Zero downtime
    • No interruption to the running virtual machine

    Downgrade Pro NVMe to Standard NVMe

    • Open the desired volume from the Volumes section.

    Navigate to the volume in the Advanced Panel

    • Click the Edit (Pencil) icon beside Storage Policy.

    Click the pencil to open the editor

    • Choose Standard NVMe.

    Select Standard NVMe from the dropdown

    • Click Save (✓).

    Confirm and save the downgrade

    • The volume continues operating normally while the storage policy changes.

    downgrade complete and confirmed

    Performance after downgrade

    • Up to 25,000 IOPS
    • Up to 1,000 MB/s throughput
    • No data loss
    • No VM restart required

    Rules & Limitations

    Supported

    • Live upgrade from Standard NVMe to Pro NVMe
    • Live downgrade from Pro NVMe to Standard NVMe
    • Storage policy changes while the volume is attached
    • Immediate application of the selected storage tier

    Not Supported

    • Eco NVMe → Standard NVMe
    • Eco NVMe → Pro NVMe
    • Standard/Pro → Eco NVMe
    • Storage policy changes from the standard CMP Dashboard
    • Partial volume policy changes

    Conclusion

    CMP allows seamless live storage tier changes between Standard NVMe and Pro NVMe without downtime, reboot, or data migration. Eco NVMe cannot be converted through a live policy change because it uses a different storage architecture and requires a new volume with manual data migration.

  • Persistent Volume Expansion in Kubernetes

    1. Overview

    Kubernetes supports in-place Persistent Volume expansion, allowing you to increase the size of an existing Persistent Volume without losing existing data.

    During the expansion process:

    • Block storage is expanded at the Cloud infrastructure layer.
    • The filesystem is resized to use the newly available storage capacity.
    • Existing data remains unchanged. No data is deleted, moved, or modified.

    2. Prerequisites

    Before expanding a Persistent Volume, verify the following requirements.

    StorageClass Configuration

    The StorageClass must have volume expansion enabled:

    Bash
    allowVolumeExpansion: true

    Volume Expansion

    Only increasing the volume size is supported.

    Example:
    5Gi → 10Gi

    Shrinking an existing volume is not supported and will fail validation.

    Verify the CSI Driver

    Check that the CSI driver is running:

    Bash
    kubectl get pods -n kube-system | grep cinder

    All cinder.csi.openstack.org pods should be in the Running state.

    3. Expand the Persistent Volume

    This procedure uses YAML manifests to perform the volume expansion.

    Step 1: Update the PVC Storage Request

    Open the PersistentVolumeClaim YAML file.

    Example:
    pvc.yaml

    Update the requested storage size:

    spec:
    resources:
    requests:
    storage: 10Gi

    In this example, the volume size is increased from 5Gi to 10Gi.

    Apply the updated configuration:

    Bash
    kubectl apply -f pvc.yaml

    Step 2: Resize the Filesystem

    After the volume has been expanded, the filesystem must also be resized to use the additional capacity.

    Note: In this environment using ext4/xfs, a pod restart is required.

    If Using a Deployment

    Run:

    Bash
    kubectl rollout restart deployment <deployment-name>

    If Using a Standalone Pod

    Run:

    Bash
    kubectl apply -f pod.yml

    Kubernetes will:

    • Re-attach the expanded volume.
    • Automatically expand the filesystem when the volume is mounted.

    4. Verify the Volume Expansion

    After completing the expansion, verify that the new storage size is available.

    Check the PVC Status

    Run:

    Bash
    kubectl get pvc <pvc-name>

    Verify that:

    • The PVC status is Bound.
    • The new storage size is displayed.

    Verify the Storage Inside the Pod

    Run:

    Bash
    kubectl exec <pod-name> — df -h /data

    Check the Size column and confirm that the updated storage capacity is displayed.

    5. Safety and Recovery

    Data Integrity

    During volume expansion:

    • The expansion occurs at the end of the partition.
    • Existing data remains unchanged and safe.

    Expansion Failure

    If the expansion fails, for example because of insufficient quota:

    • The PVC status will remain Expanding.
    • The pod will continue operating with the original storage size.
    • After the issue is resolved, the expansion process will automatically continue.

    Best Practice

    • Perform Persistent Volume expansion during a low-traffic period.
    • This helps reduce the impact of any required pod restarts.

    6. Summary

    Kubernetes supports safe, in-place Persistent Volume expansion without affecting existing data.

    The expansion process requires:

    • A StorageClass with volume expansion enabled.
    • Updating the requested storage size in the YAML file.
    • Restarting the pod.
    • Verifying the new storage size after expansion.
  • Managing Kubernetes Clusters

    1. Overview

    Users can deploy ready-to-use Kubernetes clusters with persistent storage for managing containerized applications.
    Only users who have access to the related Project can create and manage Kubernetes clusters.

    2. Create a Kubernetes Cluster

    Step 1: Start Cluster Creation

    1. Go to the Kubernetes Clusters screen.
    2. Click Create.
    3. A window will open where you can configure the Kubernetes cluster.

    K8S

    Step 2: Configure Basic Settings

    Enter or select the following:

    • Cluster Name
    • Kubernetes Version
    • SSH Key

    cluster

    Step 3: Configure the Network

    In the Network section, select the network that will connect the Kubernetes nodes.

    If you select a virtual network, choose the required floating IP configuration.

    Network

    None

    If you select None, you will not have access to the Kubernetes API.

    For Kubernetes API

    A floating IP address will be assigned to:

    • The master node, or
    • The load balancer if the master node uses High Availability.

    For Kubernetes API and Nodes

    Floating IP addresses will be assigned to:

    • The Kubernetes API.
    • Master nodes.
    • Worker nodes.

    You can also choose whether to enable High Availability for the master node.

    If High Availability is enabled, three master node instances will be created and will operate in Active/Active mode.

    Step 4: Configure the Master Node

    In the Master Node section, select a flavor for the master node.

    For production Kubernetes clusters, it is strongly recommended to use a flavor with at least:

    • 2 vCPUs
    • 8 GiB RAM

    master

    You can also enable Integrated Monitoring.

    When enabled, the following monitoring components are automatically deployed:

    • Prometheus
    • Alertmanager
    • Grafana

    Step 5: Configure Container Volumes

    In the Container Volume section:

    1. Select a storage policy.
    2. Enter the required volume size for the master and worker nodes.

    volume

    Step 6: Configure the Default Worker Group

    In the Default Worker Group section:

    1. Select a flavor for each worker node.
    2. Configure the required number of worker nodes.
    3. Choose whether to enable Autoscaling.

    Autoscaling Enabled

    When Autoscaling is enabled:

    • Worker nodes are automatically added if pods remain in a pending state because of insufficient resources.
    • Worker nodes are automatically removed when they have no pods running.
    • Configure the minimum and maximum number of workers.

    Autoscaling Disabled

    When Autoscaling is disabled, the configured number of worker nodes remains fixed.

    Step 7: Configure Labels

    In the Labels section, enter additional Kubernetes cluster parameters using the following format:

    key=value

    Example:

    selinux_mode=permissive

    Currently supported labels are:

    • selinux
    • flannel_network_cidr

    Labels

    Step 8: Create the Cluster

    Click Create.

    The Kubernetes cluster creation process will begin.

    After creation:

    • Master and worker nodes will appear on the Virtual Machines screen.
    • Their storage volumes will appear on the Volumes screen.

    After the cluster is ready, click Kubernetes Access to view instructions for accessing the Kubernetes dashboard.

    You can also access the master and worker nodes through SSH using the assigned SSH key and the username core.

    3. Access Kubernetes Nodes Using SSH

    To access a Kubernetes node, run:

    Bash
    ssh -i <private-key> core@<IP-address>

    Replace:

    <private-key> with the path to your private key file.
    <IP-address> with the public IP address of the VM.

    Note: Verify the required port accessibility from your network or firewall if needed.

    4. Delete a Kubernetes Cluster

    To delete a Kubernetes cluster:

    1. Go to the Kubernetes Clusters screen.
    2. Select the required Kubernetes cluster.
    3. Click Delete.

    The master and worker Virtual Machines will be deleted along with their volumes.

    delete

    5. Managing Kubernetes Worker Groups

    Kubernetes worker groups allow you to use worker nodes with different CPU and RAM configurations based on application requirements.

    When creating a Kubernetes cluster, you can configure only one worker group called the Default Worker Group.

    After the cluster is created, you can:

    • Add additional worker groups.
    • Use different configurations for each worker group.
    • Change the number of workers in each group.

    Note: The Default Worker Group cannot be deleted.

    6. Add a Worker Group

    Step 1: Open the Worker Groups

    1. Go to the Kubernetes Clusters screen.
    2. Select the required Kubernetes cluster.
    3. Open the Groups tab.
    4. In the Workers section, click Add.

    worker node

    Step 2: Configure the Worker Group

    In the Add Worker Group window, enter a name for the group.

    Workers

    In the Worker Group section:

    1. Select a flavor for each worker.
    2. Choose whether to enable Autoscaling.

    Autoscaling Enabled

    The number of workers will automatically increase when pods remain pending because of insufficient resources.

    Workers will be reduced when there are worker nodes with no pods running.

    Configure the minimum and maximum worker group size.

    Autoscaling Disabled

    The number of worker nodes you configure will remain fixed.

    Step 3: Configure Labels

    Enter additional parameters using the following format:
    key=value

    Example:
    selinux_mode=permissive

    Currently supported labels are:

    • selinux
    • flannel_network_cidr

    Other labels can be used at your own risk. Refer to the OpenStack documentation for the complete list of supported labels.

    Step 4: Add the Worker Group

    Click Add.

    After the worker group is created, pods can be assigned to these worker nodes as explained in Assigning Kubernetes Pods to Specific Nodes.

    7. Change the Number of Workers

    To modify the number of worker nodes:

    1. Open the Kubernetes cluster.
    2. Go to the Groups tab.
    3. In the Workers section:
      • Click the pencil icon for the Default Worker Group.
      • For other worker groups, click the ellipsis (⋯) and select Edit.
    4. In the Edit Workers window:
      • Enable or disable Autoscaling, or
      • Change the number of worker nodes.
    5. Click Save.

    Edit worker

    8. Delete a Worker Group

    To delete a worker group:

    1. Click the ellipsis (⋯) next to the required worker group.
    2. Select Delete.

    The worker group and all of its worker nodes will be deleted.

    Note: After deletion, the worker group data will be lost.

    9. Updating Kubernetes Clusters

    When a new Kubernetes version becomes available, you can update the cluster.

    Worker nodes are updated one at a time to maintain data availability.

    The Kubernetes API will be unavailable during the update unless High Availability is enabled for the master node.

    Before starting the update, ensure that the compute cluster has enough resources and quota for at least one additional VM using the largest flavor configured in the Kubernetes cluster.

    If the master and worker nodes use different flavors, consider the largest flavor when checking available resources.

    10. Kubernetes Update Limitations

    The following limitations apply:

    • Kubernetes clusters running versions 1.15.x to 1.17.x cannot be updated to newer versions.
    • Kubernetes can be updated only one minor version at a time.
      Example:
      1.28 → 1.29 → 1.30
    • Node groups can have only a one-minor-version difference.
      Example:
      1.29 and 1.30
    • Kubernetes 1.29 clusters can be updated to 1.30 only if they were created using the Cilium network plugin.
    • Kubernetes clusters cannot be managed through the self-service panel while an update is in progress.

    11. Update a Kubernetes Cluster

    Step 1: Select the Cluster

    Select a Kubernetes cluster that displays the Update Available tag.

    Step 2: Start the Update

    On the Kubernetes cluster pane, click Update in the Kubernetes Version field.

    Step 3: Select the Kubernetes Version

    In the Update window:

    1. Select the Kubernetes version you want to update to.
    2. Follow the provided link to review API resources that are deprecated or obsolete in the selected version.
    3. Click Next.

    Step 4: Select the Update Type

    Choose one of the following options:

    Update All

    Select Update All to update all node groups in the Kubernetes cluster.

    Custom Update

    Select Custom Update to update only specific node groups.

    The master node group is automatically selected and is required for the update.

    Step 5: Confirm the Update

    Click Confirm.

    The Kubernetes cluster update process will begin.

    If different node groups are running different Kubernetes versions, the cluster status will change to Partially Updated.

    In this state, new worker groups will use the same Kubernetes version as the master node group.

    To complete the cluster update, repeat the update process for any worker groups that are still running an older Kubernetes version.

  • How to access Linux VM from Windows and Linux

    Accessing a Linux VM from Windows

    You can connect to a Linux virtual machine from a Windows system using SSH (Secure Shell) or Remote Desktop Protocol (RDP) if a graphical interface is installed.

    Requirements

    Before connecting, ensure you have the following:

    • The IP address of the Linux virtual machine.
    • The SSH service is installed and running on the VM (default SSH port: 22).
    • A valid username and password, or an SSH private key if key-based authentication is configured.

    Method 1: Connect Using PuTTY (SSH Client)

    Step 1: Install PuTTY

    Download the latest version of PuTTY from the official website and install it on your Windows computer.

    Step 2: Launch PuTTY

    Open the PuTTY application.

    • Enter the IP address of your Linux VM in the Host Name (or IP address) field.
    • Verify that the Port is set to 22.
    • Keep the connection type as SSH.

    Launch PuTTY

    Step 3: Establish the Connection

    Click Open.

    The first time you connect, PuTTY will display the server’s SSH fingerprint.

    Click Accept (or Yes) to continue.

    Step 4: Authenticate

    When prompted:

    • Enter the Linux username (for example, root or another user).
    • Enter the corresponding password.

    If you are using SSH key authentication, configure your private key by navigating to:

    Connection → SSH → Auth

    Then browse and select your .ppk private key file.

    Establish the Connection

    Method 2: Connect Using Windows Terminal or PowerShell

    Step 1: Open Windows Terminal

    Launch Windows Terminal, PowerShell, or Command Prompt.

    Step 2: Connect Using SSH

    Execute the following command:

    Bash
    ssh username@<Linux_VM_IP>

    Replace:

    • username with your Linux account name.
    • <Linux_VM_IP> with the IP address of the virtual machine.

    Example:

    Bash
    ssh root@192.168.1.1

    Step 3: Login

    Enter the password when prompted.

    If SSH key authentication is configured, ensure your private key is located in the default Windows SSH directory:

    Bash
    C:\Users\<username>\.ssh\

    Login SSH

    Method 3: Connect Using Remote Desktop (GUI Access)

    If your Linux VM has a desktop environment installed, you can connect through Remote Desktop.

    Step 1: Install XRDP on the Linux VM

    Update the package list and install XRDP

    Bash
    sudo apt update
    sudo apt install xrdp

    Step 2: Enable the XRDP Service

    Start the service and enable it to launch automatically after reboot.

    Bash
    sudo systemctl enable –now xrdp

    Step 3: Open Remote Desktop Connection

    On your Windows machine:

    • Open Remote Desktop Connection.
    • Enter the Linux VM IP address.
    • Click Connect.

    Step 4: Sign In

    Provide your Linux username and password to access the graphical desktop.

    Connecting from one Linux system to another is simple using SSH. You can also use SCP for secure file transfers.

    Requirements

    Before connecting, verify that:

    • You know the Linux VM’s IP address.
    • SSH is installed and active on the VM.
    • You have valid login credentials or an SSH key.

    Method 1: Connect Using SSH

    Step 1: Open the Terminal

    Launch the Terminal application on your Linux computer.

    Step 2: Run the SSH Command

    Use the following command:

    Bash
    ssh username@<Linux_VM_IP>

    Example:

    Bash
    ssh ubuntu@192.168.1.100

    Step 3: Authenticate

    Enter your password when prompted.

    If you are using an SSH key, verify that the key exists in your local SSH directory.

    Example:

    Bash
    ~/.ssh/id_rsa

    Ensure the private key has the correct permissions.

    Bash
    chmod 600 ~/.ssh/id_rsa

    Method 2: Access Using Cockpit (Web Interface)

    Cockpit provides a browser-based interface for managing Linux systems.

    Step 1: Install Cockpit

    Log in to your Linux VM using SSH and install Cockpit.

    For Ubuntu/Debian:

    Bash
    sudo apt update
    sudo apt install cockpit -y

    For RHEL, Rocky Linux, AlmaLinux, or CentOS:

    Bash
    sudo dnf install cockpit -y

    Step 2: Enable and Start the Cockpit Service

    Enable the Cockpit socket so that it starts automatically during system boot, and then start the service.

    Bash
    sudo systemctl enable cockpit.socket
    sudo systemctl start cockpit.socket

    Verify that the Cockpit socket is running.

    Bash
    sudo systemctl status cockpit.socket

    Step 3: Allow Port 9090 Through the Firewall (Optional)

    If your firewall is enabled, allow access to TCP port 9090.

    Ubuntu (UFW):

    Bash
    sudo ufw allow 9090/tcp
    sudo ufw reload

    RHEL/Rocky/AlmaLinux:

    Bash
    sudo firewall-cmd –permanent –add-service=cockpit
    sudo firewall-cmd –reload

    Step 4: Verify Cockpit is Listening

    Run the following command to verify that Cockpit is listening on port 9090.

    Bash
    sudo ss -tulnp | grep 9090

    Expected output:

    Bash
    LISTEN 0 4096 *:9090

    Step 5: Open Cockpit in a Web Browser

    On your Windows or Linux computer, open your preferred web browser and enter the following URL:

    Bash
    https://<Linux_VM_IP>:9090

    Step 6: Log In to Cockpit

    On the Cockpit login page, enter your Linux VM credentials.

    Log In to Cockpit

    Cockpit Login Successfully

    Troubleshooting

    Connection Refused

    If you cannot establish an SSH connection:

    Check whether the SSH service is running.

    Bash
    sudo systemctl status ssh

    If necessary, start the service.

    Bash
    sudo systemctl start ssh

    Ensure the firewall permits SSH traffic.

    Bash
    sudo ufw allow ssh

    Authentication Failed

    If login fails:

    • Verify the username and password.
    • If using an SSH key, confirm the correct private key is selected.
    • Make sure the private key permissions are set properly.
    Bash
    chmod 600 ~/.ssh/id_rsa

    Timeout Issues:

    • Verify the Linux VM is running and accessible via the network.
    • Check network configurations and routes.
  • Assign Multiple Secondary IPs on Different Operating Systems

    Assign Multiple Secondary IPs on Different Operating Systems

    Linux (RHEL / CentOS / Alma Linux / Rocky Linux)

    Method 1: Permanent Configuration (Alma Linux 8/9, Rocky Linux 8/9)

    Edit the network configuration:

    Bash
    nmcli connection modify eth0 +ipv4.addresses 192.168.1.101/24
    nmcli connection modify eth0 +ipv4.addresses 192.168.1.102/24
    nmcli connection modify eth0 +ipv4.addresses 192.168.1.103/24
    nmcli connection up eth0

    Verify:

    Bash
    nmcli connection show eth0
    ip addr show eth0

    Ubuntu 20.04 / 22.04 / 24.04

    Edit Netplan configuration:

    Bash
    nano /etc/netplan/00-installer-config.yaml

    Example:

    Bash
    network:
    version: 2
    ethernets:
    ens18:
    addresses:
    – 192.168.1.100/24
    – 192.168.1.101/24
    – 192.168.1.102/24
    – 192.168.1.103/24
    gateway4: 192.168.1.1
    nameservers:
    addresses:
    – 8.8.8.8
    – 1.1.1.1

    Apply:

    Bash
    netplan generate
    netplan apply

    Verify:

    Bash
    ip addr

    Debian 11 / 12

    Edit:

    Bash
    nano /etc/network/interfaces

    Example:

    Bash
    
    auto ens18
    iface ens18 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    gateway 192.168.1.1
    auto ens18:0
    iface ens18:0 inet static
    address 192.168.1.101
    netmask 255.255.255.0
    auto ens18:1
    iface ens18:1 inet static
    address 192.168.1.102
    netmask 255.255.255.0
    auto ens18:2
    iface ens18:2 inet static
    address 192.168.1.103
    netmask 255.255.255.0

    Restart networking:

    Bash
    systemctl restart networking

    Assign Multiple Secondary IPs on Windows Server 2016 / 2019 / 2022 / 2025

    Method:  GUI Method

    • Open Network Connections
    • Right-click Network Adapter → Properties
    • Select Internet Protocol Version 4 (TCP/IPv4)Properties
    • Click Advanced
    • Under IP addresses, click Add
    • Add each secondary IP:
      192.168.1.101
      192.168.1.102
    • Click OK

    PowerShell Method

    PowerShell
    New-NetIPAddress -InterfaceAlias “Ethernet” -IPAddress 192.168.1.101 -PrefixLength 24
    New-NetIPAddress -InterfaceAlias “Ethernet” -IPAddress 192.168.1.102 -PrefixLength 24
    New-NetIPAddress -InterfaceAlias “Ethernet” -IPAddress 192.168.1.103 -PrefixLength 24

    Verify:

    PowerShell
    Get-NetIPAddress

     

     

     

     

     

  • How to Install and Secure OpenClaw (Moltbot) on a Cloud Server

    1. Overview

    This guide explains how to deploy and secure OpenClaw (Moltbot) on a Cloud Virtual Machine.

    By following this guide, you will:

    • Choose the appropriate Cloud plan.
    • Create a Virtual Machine.
    • Install OpenClaw.
    • Connect messaging channels.
    • Secure the installation for production use.

    2. System Requirements

    RequirementMinimumRecommended
    CPU1 vCPU2 vCPU
    Memory (RAM)1 GB4–8 GB
    Storage500 MB20–30 GB
    Operating SystemLinux (any)Ubuntu 22.04 or 24.04 LTS
    RuntimeNode.js 22+Node.js 22 LTS
    NetworkPublic IPv4Public IPv4 + Firewall

    3. Create the Virtual Machine

    1. Log in to the Cloud dashboard.
    2. Navigate to Compute → Create VM.
    3. Select the required plan.
    4. Choose Ubuntu 22.04 LTS or Ubuntu 24.04 LTS.
    5. Add an SSH key or configure a root password.
    6. Create the Virtual Machine.
    7. Note the public IP address after deployment.

    4. Install OpenClaw

    Step 1: Update the System

    Bash
    sudo apt update && sudo apt upgrade -y
    curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash – && sudo apt install -y nodejs

    Step 2: Configure Corepack

    Bash
    corepack enable
    corepack prepare pnpm@latest –activate
    pnpm setup
    source ~/.bashrc

    Step 3: Install npm

    Bash
    npm install -g npm@11.8.0
    Verify the installation:
    node –version
    npm –version

    Step 4: Install Docker

    Bash
    curl -fsSL https://get.docker.com | sudo sh
    sudo usermod -aG docker $USER

    Verify Docker:

    Bash
    docker –version

    Step 5: Install OpenClaw

    Bash
    curl -fsSL https://openclaw.ai/install.sh | bash

    Verify the installation:

    Bash
    openclaw –version

    Open claw

    Set up

    Step 6: Run the Initial Configuration

    openclaw onboard

    Follow the prompts to configure:

    • AI provider
    • API key
    • Basic settings

    Setup

    Setup

    6. Connect Communication Channels

    Telegram

    1. Open Telegram.
    2. Search for @BotFather.
    3. Run /newbot.
    4. Copy the bot token.
    5. Paste the token when prompted by OpenClaw.

    WhatsApp

    Run:

    Bash
    openclaw channels login whatsapp

    A QR code is displayed.

    Open WhatsApp on your phone:

    Linked Devices → Link a Device

    Scan the QR code to complete the connection.

    Configure the allowed users:

    channels:
    whatsapp:
    allowFrom:
    – “+91XXXXXXXXXX”
    – “+91XXXXXXXXXX”

    Slack

    Create a Slack application.

    Enable Socket Mode.

    Configure the required Bot Token and App Token.

    Add the tokens to the configuration:

    channels:
    slack:
    botToken: “xoxb-your-bot-token-here”
    appToken: “xapp-your-app-token-here”

    Gmail

    Configure Gmail by:

    • Creating a Google Cloud project.
    • Enabling the Gmail API.
    • Enabling the Pub/Sub API.
    • Creating a Service Account.
    • Creating a Pub/Sub topic and subscription.
    • Adding the credentials path to the OpenClaw configuration.

    7. Secure the Installation

    Enable Docker Sandboxing

    Configure:

    agents:
    defaults:
    sandbox:
    mode: “non-main”

    Configure the Cloud Firewall

    Create firewall rules to:

    • Allow SSH only from trusted IP addresses.
    • Block the gateway port from public access.
    • Deny all other inbound traffic by default.

    Configure UFW

    Bash
    sudo ufw default deny incoming
    sudo ufw default allow outgoing
    sudo ufw allow ssh
    sudo ufw enable
    sudo ufw status

    Access the Dashboard

    Create an SSH tunnel:

    Bash
    ssh -L 18789:localhost:18789 moltbot-user@your-server-ip

    Open:
    http://localhost:18789/

    If a gateway token is required, run:

    Bash
    openclaw dashboard –no-open

    Use the generated URL to access the dashboard.

    Configure Allowed Users

    Example:

    channels:
    whatsapp:
    allowFrom:
    – “+91XXXXXXXXXX”

    slack:
    allowUsers:
    – “U01XXXXXXXX”

    Enable Automated Backups

    Open the Cloud dashboard.

    Navigate to:

    Virtual Machine → Backups

    Enable automated backups.

    Run the Health Check

    Bash
    moltbot doctor

    8. Run OpenClaw as a Service

    Create the systemd service:

    Bash
    sudo tee /etc/systemd/system/openclaw.service

    Reload systemd:

    Bash
    sudo systemctl daemon-reexec
    sudo systemctl daemon-reload

    Enable and start the service:

    Bash
    sudo systemctl enable openclaw
    sudo systemctl start openclaw

    Verify the service:

    Bash
    sudo systemctl status openclaw

    View the logs:

    Bash
    journalctl -u openclaw -f

    9. Troubleshooting

    WhatsApp QR Code Does Not Appear

    Verify that Node.js 22 or later is installed.

    Bash
    node –version

    Slack Bot Does Not Respond

    Verify that:

    • Socket Mode is enabled.
    • Bot Token and App Token are configured correctly.

    High Memory Usage

    If multiple communication channels are enabled with browser automation, consider upgrading the Virtual Machine to a larger plan.

    Health Check Shows Warnings

    Run:

    Bash
    moltbot doctor

    Review each warning and apply the recommended corrections.

  • How to create Virtual Machines from Advance Panel

    Cloud delivers a flexible and scalable cloud infrastructure that helps you deploy virtual machines based on your workload requirements. Whether you’re hosting applications, building development environments, or performing testing and data analysis, you can quickly create and manage Windows virtual machines through the Cloud platform.

    If you want to create a Windows Virtual Machine using the standard Cloud Dashboard, refer to the relevant documentation.

    To deploy a Windows Virtual Machine using the Cloud Advanced Dashboard, follow these instructions.

    Step 1: Open the Advanced Dashboard

    Log in to your Cloud account.

    Navigate to the required region and click the arrow icon to open the Region Advanced Dashboard. From this dashboard, you can deploy, configure, and manage your virtual machines.

    Open the Advanced Dashboard

    Step 2: Start Creating a Virtual Machine

    Click the + Create Virtual Machine button.

    This opens the virtual machine deployment wizard where you can configure all required settings before launching the instance.

    Start Creating a Virtual Machine

    Step 3: Configure the Virtual Machine

    Enter the Virtual Machine Name

    Provide a unique and meaningful name for your virtual machine.

    You can customize additional settings such as:

    • Image
    • Boot Volume
    • Flavor
    • Network Interface

    To modify any of these options, click the Edit (Pencil) icon next to the respective section.

    Configure the Virtual Machine

    Option 1: Deploy Using an Existing Volume

    Deploying from a volume allows you to launch a virtual machine using an existing boot volume that already contains an operating system, installed software, and stored data.

    This option is useful when you want to:

    • Restore a previously used virtual machine.
    • Move an existing operating system to another VM.
    • Keep all current applications, configurations, and data intact.

    Steps

    • Click the Pencil icon beside the boot source.
    • Select Attach Boot Volume.
    • Choose the required boot volume from the list.
    • Click Attach.

    The selected volume will now become the boot disk for the virtual machine.

    Deploy Using an Existing Volume

    Option 2: Deploy Using an Image

    Creating a virtual machine from an image installs a fresh operating system using a predefined image, similar to installing Windows on a new computer.

    This method is recommended when creating a completely new virtual machine.

    Deploy Using an Image

    Select the Operating System Image

    Choose the operating system image you want to use from the available image library.

    If you have previously uploaded a custom image, you can select it from the Custom Images section.

    After selecting the image, click Done.

    Note

    If you want to use your own ISO image, you can upload it.

    For more information about uploading images, refer to the Image Management documentation.

    Select the Operating System Image

    Select the Virtual Machine Flavor

    Choose a flavor based on the amount of computing resources your virtual machine requires.

    The selected flavor determines:

    • Number of vCPUs
    • RAM allocation
    • Other hardware resources

    Ensure that the selected flavor satisfies the minimum hardware requirements of the operating system you selected.

    Once you’ve chosen the appropriate flavor, click Done.

    Example

    Certain Windows Server editions require additional CPU cores and memory. Always verify that your selected flavor provides enough resources for smooth operation.

    Select the Virtual Machine Flavor

    Configure the Network Interface

    Inside the Add Network Interface window, select the compute network that the virtual machine should connect to.

    By default, a primary Public IP address is assigned automatically.

    If you prefer assigning a specific Public IPv4 address manually:

    • Uncheck Assign Automatically.
    • Enter the preferred Public IPv4 address.
    • Select the desired Public IP from the dropdown list.
    • Click Add.

    Recommendation

    Assign a Public IP address during the initial deployment to simplify remote access and avoid future connectivity issues.

    Configure the Network Interface

    Add Secondary IP Addresses (Optional)

    You can also configure additional IP addresses if required.

    Unlike the primary IP address, secondary IP addresses are not configured automatically inside the Windows operating system.

    After deployment, you must configure these additional addresses manually within the guest operating system.

    Configure Private Networking (Optional)

    If your virtual machine requires a Private IP address, you must first create a Virtual Private Network (VPN).

    Once the VPN is available, you can attach the virtual machine to the private network.

    Refer to the VPN documentation for complete setup instructions.

    Security Group Configuration

    If the selected network has IP Address Management enabled:

    • Spoofing Protection is enabled automatically.
    • The Default Security Group is applied automatically.

    The default security group permits both inbound and outbound traffic to the virtual machine.

    After reviewing the settings, click Done.

    Add an SSH Public Key

    Click Add SSH Key if you want to use SSH key-based authentication.

    Select or upload the public SSH key that was generated on the computer from which you plan to access the virtual machine.

    For additional information, refer to the SSH Key Authentication guide.

    Add an SSH Public Key

    Step 4: Advanced Configuration (Optional)

    Add a Customization Script (User Data)

    You can provide User Data to perform automatic configuration tasks immediately after the virtual machine starts.

    User Data may be supplied as:

    • A cloud-init YAML configuration file
    • A shell script containing commands to execute during the first boot

    This feature is useful for installing software packages, configuring services, or applying system settings automatically.

    Add a Customization Script

    Enable CPU and RAM Hot Plug

    The CPU and RAM Hot Plug feature allows you to increase or modify CPU and memory resources while the virtual machine is running.

    Because these changes can be applied without restarting the virtual machine, you can scale resources with minimal disruption and avoid downtime.

    Step 5: Deploy the Virtual Machine

    After reviewing all configuration settings, click Deploy.

    Cloud will begin provisioning your Windows virtual machine.

    Once deployment is complete, the virtual machine is created successfully and is ready for use.

    Deploy the Virtual Machine

    Manage the Virtual Machine

    To view or manage the virtual machine:

    • Navigate to the Virtual Machines section.
    • Click the name of the newly created virtual machine.

    From the VM details page, you can monitor its status, manage resources, configure networking, and perform other administrative tasks.

  • How to create Windows Virtual Machines from Advance Panel?

    Cloud delivers a flexible and scalable cloud infrastructure that helps you deploy virtual machines based on your workload requirements. Whether you’re hosting applications, building development environments, or performing testing and data analysis, you can quickly create and manage Windows virtual machines through the Cloud platform.

    If you want to create a Windows Virtual Machine using the standard Cloud Dashboard, refer to the relevant documentation.

    To deploy a Windows Virtual Machine using the Cloud Advanced Dashboard, follow these instructions.

    Step 1: Open the Advanced Dashboard

    Log in to your Cloud account.

    Navigate to the required region and click the arrow icon to open the Region Advanced Dashboard. From this dashboard, you can deploy, configure, and manage your virtual machines.

    Open the Advanced Dashboard

    Step 2: Start Creating a Virtual Machine

    Click the + Create Virtual Machine button.

    This opens the virtual machine deployment wizard where you can configure all required settings before launching the instance.

    Start Creating a Virtual Machine

    Step 3: Configure the Virtual Machine

    Enter the Virtual Machine Name

    Provide a unique and meaningful name for your virtual machine.

    You can customize additional settings such as:

    • Image
    • Boot Volume
    • Flavor
    • Network Interface

    To modify any of these options, click the Edit (Pencil) icon next to the respective section.

    Configure the Virtual Machine

    Option 1: Deploy Using an Existing Volume

    Deploying from a volume allows you to launch a virtual machine using an existing boot volume that already contains an operating system, installed software, and stored data.

    This option is useful when you want to:

    • Restore a previously used virtual machine.
    • Move an existing operating system to another VM.
    • Keep all current applications, configurations, and data intact.

    Steps

    • Click the Pencil icon beside the boot source.
    • Select Attach Boot Volume.
    • Choose the required boot volume from the list.
    • Click Attach.

    The selected volume will now become the boot disk for the virtual machine.

    Deploy Using an Existing Volume

    Attach Boot Volume

    Option 2: Deploy Using an Image

    Creating a virtual machine from an image installs a fresh operating system using a predefined image, similar to installing Windows on a new computer.

    This method is recommended when creating a completely new virtual machine.

    Deploy Using an Image

    Select the Operating System Image

    Choose the operating system image you want to use from the available image library.

    If you have previously uploaded a custom image, you can select it from the Custom Images section.

    After selecting the image, click Done.

    Note

    If you want to use your own ISO image, you can upload it.

    For more information about uploading images, refer to the Image Management documentation.

    Select the Operating System Image

    Select the Virtual Machine Flavor

    Choose a flavor based on the amount of computing resources your virtual machine requires.

    The selected flavor determines:

    • Number of vCPUs
    • RAM allocation
    • Other hardware resources

    Ensure that the selected flavor satisfies the minimum hardware requirements of the operating system you selected.

    Once you’ve chosen the appropriate flavor, click Done.

    Example

    Certain Windows Server editions require additional CPU cores and memory. Always verify that your selected flavor provides enough resources for smooth operation.

    Select the Virtual Machine Flavor

    Configure the Network Interface

    Inside the Add Network Interface window, select the compute network that the virtual machine should connect to.

    By default, a primary Public IP address is assigned automatically.

    If you prefer assigning a specific Public IPv4 address manually:

    • Uncheck Assign Automatically.
    • Enter the preferred Public IPv4 address.
    • Select the desired Public IP from the dropdown list.
    • Click Add.

    Recommendation

    Assign a Public IP address during the initial deployment to simplify remote access and avoid future connectivity issues.

    Configure the Network Interface

    Add Secondary IP Addresses (Optional)

    You can also configure additional IP addresses if required.

    Unlike the primary IP address, secondary IP addresses are not configured automatically inside the Windows operating system.

    After deployment, you must configure these additional addresses manually within the guest operating system.

    Configure Private Networking (Optional)

    If your virtual machine requires a Private IP address, you must first create a Virtual Private Network (VPN).

    Once the VPN is available, you can attach the virtual machine to the private network.

    Refer to the VPN documentation for complete setup instructions.

    Security Group Configuration

    If the selected network has IP Address Management enabled:

    • Spoofing Protection is enabled automatically.
    • The Default Security Group is applied automatically.

    The default security group permits both inbound and outbound traffic to the virtual machine.

    After reviewing the settings, click Done.

    Add an SSH Public Key

    Click Add SSH Key if you want to use SSH key-based authentication.

    Select or upload the public SSH key that was generated on the computer from which you plan to access the virtual machine.

    For additional information, refer to the SSH Key Authentication guide.

    Add an SSH Public Key

    Step 4: Advanced Configuration (Optional)

    Add a Customization Script (User Data)

    You can provide User Data to perform automatic configuration tasks immediately after the virtual machine starts.

    User Data may be supplied as:

    • A cloud-init YAML configuration file
    • A shell script containing commands to execute during the first boot

    This feature is useful for installing software packages, configuring services, or applying system settings automatically.

    Add a Customization Script

    Enable CPU and RAM Hot Plug

    The CPU and RAM Hot Plug feature allows you to increase or modify CPU and memory resources while the virtual machine is running.

    Because these changes can be applied without restarting the virtual machine, you can scale resources with minimal disruption and avoid downtime.

    Step 5: Deploy the Virtual Machine

    After reviewing all configuration settings, click Deploy.

    Cloud will begin provisioning your Windows virtual machine.

    Once deployment is complete, the virtual machine is created successfully and is ready for use.

    Deploy the Virtual Machine

    Manage the Virtual Machine

    To view or manage the virtual machine:

    • Navigate to the Virtual Machines section.
    • Click the name of the newly created virtual machine.

    From the VM details page, you can monitor its status, manage resources, configure networking, and perform other administrative tasks.

    Reset the Windows Administrator Password

    If you need to change or recover the Windows administrator password, you can perform a password reset using the VM Console.

    Refer to the Reset Windows VM Password documentation for detailed instructions.

    Connect to the Windows Virtual Machine Using RDP

    Windows virtual machines can be accessed remotely using Remote Desktop Protocol (RDP).

    If you’re connecting from a Linux machine, you can use xFreeRDP, which is a lightweight and efficient Remote Desktop client.

    For complete connection instructions, refer to the Connect to Windows VM via RDP guide.

  • How to View Billing in Cantech Cloud

    1. Log in to Cantech Cloud Dashboard

    Use your account credentials to access your Cantech Cloud account.

    2. Navigate to Billing History Section

    3. Select Billing Period

    • Choose a month to view billing for that specific month.
    • Or select a custom period to view charges for a specific date range.

     

    4. View Total Billing

    After selecting the desired period, the dashboard will display your total billing for that time frame.

    5. View Resource-wise Billing

    To see detailed billing for each resource:

    • Click on a resource to expand its details.
    • You will see the breakdown of charges per resource.

  • Cantech Cloud Billing Guide

    Overview

    Cantech Cloud uses a Pay-As-You-Go (PAYG) billing model. You are billed based on the resources you actually use, such as compute, storage, and network services. so it is essential to monitor usage regularly to manage costs effectively.

    1. Billing Model

    Pay-As-You-Go

    Cantech Cloud is Postpaid and Usage for the month is billed on 1st of next month.

    • You are charged only for the resources you consume. 
      • Storage: Volumes, snapshots, object storage
      • Network: Floating IPs, Direct IP, Routers, VPN, Load Balancers.
      • Compute: CPU cores, RAM, VM running hours

    Shelving a virtual machine (VM) essentially pauses the instance — it stops the VM from running but preserves its configuration. Think of it as “saving” the VM so you can resume it later.

    You don’t pay for the VM compute resources (CPU and RAM) while the VM is shelved. This helps reduce cost if you aren’t running the VM but want to keep it around, but the volume and direct OR floating IP attached to the VM will be charged.

    2. Alerts and Budgets

    Cantech Cloud currently does not support alerts or budgets:

    • Users cannot set limits on spending.
    • No automatic notifications if usage or costs increase.
    • It is recommended to manually monitor resource usage through the dashboard.

    3. Billing Frequency

    • Billing is done monthly.
    • Usage details and invoices are accessible in the billing dashboard.
    • Ensure that all unused VM’s are Shelved or deleted to avoid unnecessary charges.

    4. Cost Management Tips

    To manage your costs effectively:

    1. Regularly track your usage through the dashboard.
    2. Shelve or delete unused VMs and volumes.
    3. Plan resource deployments carefully.