Skip to main content

Introduction

To develop and host on Square Cloud, it’s essential to follow a structured sequence of configurations and prerequisites. This technical guide will cover the entire process, from initial setup to production deployment.

Prerequisites

  • Square Cloud Account: Hosting platform for your application. Register through the signup page using your email.
  • Active Paid Plan: Ensures dedicated resources and optimized performance for your application. Check our available plans and choose the most suitable for your needs.
Wondering how much RAM and CPU your plan needs to host Whatsapp bots?
Don't worry, we're here to help. Our Standard plan offers 4GB of RAM and 4vCPU, which should be sufficient for most Whatsapp bots. However, if you are working on a larger project and seeking extra stability, we recommend considering our Pro plan. With additional resources, you can maintain stability even during demand spikes. To purchase, simply click here.

Creating project

WhatsApp installed and configured is required for bot authentication and linking. If you don’t have the app, visit the official WhatsApp website for download and setup.
If your implementation needs to access the remote path for the WhatsApp Web version, follow this technical procedure:
  1. Access the wa-version repository
  2. Select the desired version (always recommended to use the latest)
  3. Click “Raw” to view the file
  4. Copy the generated URL for later use
Example configured URL:
https://raw.githubusercontent.com/wppconnect-team/wa-version/main/html/2.2412.54.html

Developing project

  1. Node.js verification: Confirm that Node.js is installed on your system. Otherwise, download it from the official Node.js website.
  2. Project initialization: Set up a new Node.js project by running the initialization command:
Terminal
npm init -y
  1. Dependencies installation: Install the essential libraries for bot functionality:
Terminal
npm install whatsapp-web.js qrcode
  1. Main file creation: Develop the index.js file with the bot’s base structure:
index.js
// Import necessary modules
const { Client } = require("whatsapp-web.js");
const qrcode = require("qrcode");

// Create a new WhatsApp client instance
const client = new Client({
  puppeteer: {
    // Run Chrome in headless mode (without graphical interface)
    headless: true,
    args: [
      // Disable Chrome sandboxing features
      // Required for execution in containerized environments
      "--no-sandbox",
      // Additional sandboxing flag to disable setuid sandbox
      "--disable-setuid-sandbox",
    ],
  },
  // Web version cache configuration
  webVersionCache: {
    // Type "remote" indicates WhatsApp Web version will be fetched from remote URL
    type: "remote",
    // Remote path for WhatsApp Web version
    remotePath: "INSERT_YOUR_URL_HERE",
  },
});

// Event listener for QR Code generation
client.on("qr", async (qr) => {
  // Use qrcode library to generate and save QR Code
  try {
    await qrcode.toFile("./qrcode.png", qr);
    console.log("QR Code generated and saved as qrcode.png");
  } catch (err) {
    console.error("Error generating QR Code:", err);
  }
});

// Event listener for client ready
client.on("ready", () => {
  // Confirmation log when WhatsApp Web session is established
  console.log("WhatsApp client successfully initialized!");
});

// Event listener for created messages
client.on("message_create", (msg) => {
  // Log message content to console
  console.log("Message received:", msg.body);
  
  // Test command implementation
  if (msg.body === "!ping") {
    // Automatic response for ping command
    msg.reply("pong - Bot working correctly!");
  }
});

// Initialize WhatsApp client
client.initialize();

Deploying

After preparing your project files, you can now upload them to Square Cloud and host your project. To do so, create a ZIP file containing all your project files.

Via dashboard

1

Access the Upload Page

Access the upload page and upload your project zip file.
2

Configure Your Environment

After uploading your zip, you will need to configure the name, main file or runtime environment and other settings for your project.
If you are uploading a web project, make sure to select "Web Publication" and set a subdomain to your project.
3

Deploy Your Project

Finally, click on the "Deploy" button to host your project on Square Cloud.
After deployment, you can monitor your project's status and logs from the dashboard.

Via CLI

To use this method, you need to create a config file named squarecloud.app in the root directory of your project. This file will contain the necessary configuration for your project.

Learn more about: how to create the configuration file for Square Cloud.

The squarecloud.app file is a configuration file that will be used to configure your application; it will be used to define your environment.
1

Install the CLI

First, you need to have the CLI installed in your environment. If you don't have it yet, run the following command in your terminal:
npm install -g @squarecloud/cli
If you already have it, we recommend updating it. To do this, run the following command in your terminal:
squarecloud update
2

Authenticate

Now, to authenticate and use other CLI commands, you will find your authorization key here by clicking on "Request API Key". After obtaining your authorization key, run the following command:
squarecloud auth login
3

Upload Your Project

Finally, to deploy your application to Square Cloud using the CLI, you need to run the following command:
squarecloud upload 
Or if you created the zip manually, you can use:
squarecloud upload --file <path/to/zip> 

Additional resources

To deepen your knowledge about WhatsApp bot development using whatsapp-web.js, consult the official whatsapp-web.js library documentation. The documentation offers detailed technical guides, advanced tutorials, and complete API reference to maximize implementation potential.

Contact us

If you continue facing technical difficulties, our specialized support team is available to assist you. Contact us and we'll be happy to help you resolve any issue.