WhatsApp + ChatWoot - HTTPS Guide

July 7, 2025 in Apps, ChatWoot by devlikeapro5 minutes

Image for WhatsApp + ChatWoot - HTTPS Guide

Overview

Complete guide to install and set up production-ready WAHA and Chatwoot instances on your own infrastructure!

ChatWoot Articles

There’s a series of articles about WhatsApp and ChatWoot integrations:

  1. WhatsApp + ChatWoot - Installation Guide
  2. WhatsApp + ChatWoot - Configuration Guide
  3. WhatsApp + ChatWoot - HTTPS Guide

You can follow them one by one or skip some parts if you don’t need them.

Go to 🧩 ChatWoot App to see features available for WhatsApp ChatWoot integration using WAHA.

After completing the configuration guide, you’ll have:

  • WAHA on https://waha.{yourdomain}
  • ChatWoot on https://chatwoot.{yourdomain}

Disclaimer

This project is not affiliated, associated, authorized, endorsed by, or in any way officially connected with WhatsApp, ChatWoot, or any of their respective subsidiaries or affiliates. The official websites can be found at https://whatsapp.com and https://chatwoot.com.

For businesses seeking to integrate with WhatsApp for critical applications, we strongly recommend using officially supported methods.

Requirements

At this point you should have:

If you don’t have it - kindly follow the previous guides in the series above ☝️.

Using a VPS or VM via SSH?

You need to forward ports so you can access remote server ports from your laptop.

Connect to the server using the command:

Connect to server with port forwarding
ssh -L 3000:localhost:3000 -L 3009:localhost:3009 {user}@{server}

Now you’re ready to publish your ChatWoot and WAHA instances on the internet!

Configure DNS

If you have VPS with a Public IP address, you need to configure DNS - add A records to point those domains:

  1. waha.<yourdomain.com> => YOUR_VPS_IP_ADDRESS
  2. chatwoot.<yourdomain.com> => YOUR_VPS_IP_ADDRESS

Configure HTTPS for ChatWoot

Step 1: Install Nginx

Install Nginx
sudo apt-get install nginx

Step 2: Add Nginx Config

Add Nginx config
cd /etc/nginx/sites-enabled
nano chatwoot.<yourdomain.com>.conf
chatwoot.<yourdomain.com>.conf
server {
  server_name chatwoot.<yourdomain.com>;

  # Point upstream to Chatwoot App Server
  set $upstream 127.0.0.1:3009;

  # Nginx strips out underscore in headers by default
  # Chatwoot relies on underscore in headers for API
  # Make sure that the config is set to on.
  underscores_in_headers on;
  location /.well-known {
    alias /var/www/ssl-proof/chatwoot/.well-known;
  }

  location / {
    proxy_pass_header Authorization;
    proxy_pass http://$upstream;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Ssl on; # Optional

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    proxy_http_version 1.1;
    proxy_buffering off;

    client_max_body_size 0;
    proxy_read_timeout 36000s;
    proxy_redirect off;
  }
  listen 80;
}

Step 3: Verify and Reload Nginx Config

Verify and reload Nginx config
nginx -t
systemctl reload nginx

Step 4: Run Let’s Encrypt to configure SSL certificate

Run Let's Encrypt to configure SSL certificate
apt install certbot
apt-get install python3-certbot-nginx
mkdir -p /var/www/ssl-proof/chatwoot/.well-known
certbot --webroot -w /var/www/ssl-proof/chatwoot/ -d chatwoot.<yourdomain.com> -i nginx

Step 5: Update env variables

Update FRONTEND_URL in .chatwoot.env

nano .chatwoot.env
.chatwoot.env
FRONTEND_URL=https://chatwoot.<yourdomain.com>

Apply the changes:

docker compose up -d

Step 6: Access your installation

  • Open https://chatwoot.<yourdomain.com>
  • Make sure it’s working

Step 7: Update ChatWoot URL in WAHA

  • Open WAHA http://localhost:3000
  • Open Apps and Edit App
  • Update ChatWoot URL from http://chatwoot:3009 to https://chatwoot.<yourdomain.com>
  • Hit Save
  • Open ChatWoot https://chatwoot.<yourdomain.com>
  • Send status message to WhatsApp Integration (WAHA) conversation to test WAHA <=> ChatWoot connection

Configure HTTPS for WAHA

It’s optional step - follow it if you need access to 📊 Dashboard from the internet.

Otherwise - use ssh port forwarding to manage WAHA, it’s usually enough.

Using a VPS or VM via SSH?

You need to forward ports so you can access remote server ports from your laptop.

Connect to the server using the command:

Connect to server with port forwarding
ssh -L 3000:localhost:3000 -L 3009:localhost:3009 {user}@{server}

Step 1: Install Nginx

Install Nginx
sudo apt-get install nginx

Step 2: Add Nginx config

Add Nginx config
cd /etc/nginx/sites-enabled
nano waha.<yourdomain.com>.conf
waha.<yourdomain.com>.conf
server {
  server_name waha.<yourdomain.com>;

  # Point upstream to WAHA Server
  set $upstream 127.0.0.1:3000;

  location /.well-known {
    alias /var/www/ssl-proof/waha/.well-known;
  }

  location / {
    proxy_pass_header Authorization;
    proxy_pass http://$upstream;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Ssl on; # Optional

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    proxy_http_version 1.1;
    proxy_buffering off;

    client_max_body_size 0;
    proxy_read_timeout 36000s;
    proxy_redirect off;
  }
  listen 80;
}

Step 3: Verify and reload Nginx config

Verify and reload Nginx config
nginx -t
systemctl reload nginx

Step 4: Run Let’s Encrypt to configure SSL certificate

Run Let's Encrypt to configure SSL certificate
apt install certbot
apt-get install python3-certbot-nginx
mkdir -p /var/www/ssl-proof/waha/.well-known
certbot --webroot -w /var/www/ssl-proof/waha/ -d waha.<yourdomain.com> -i nginx

Step 5: Update env variables

Update WAHA_BASE_URL in .waha.env

nano .waha.env
.waha.env
WAHA_BASE_URL=https://waha.<yourdomain.com>

Apply the changes:

docker compose up -d

Step 6: Access your installation

  • Open https://waha.<yourdomain.com>
  • Make sure it’s working

Step 7: Update Webhook URL in ChatWoot

  • Open ChatWoot https://chatwoot.<yourdomain.com>
  • Go to Settings → Inboxes → {Inbox}
  • Update Webhook URL from http://waha:3000/{WEBHOOKURL} to https://waha.<yourdomain.com>/{WEBHOOKURL}
  • Click Save
  • Send status message to WhatsApp Integration (WAHA) conversation to test WAHA <=> ChatWoot connection

What is next?

🧩 ChatWoot App to see features available for WhatsApp ChatWoot integration using WAHA.

ChatWoot Articles

There’s a series of articles about WhatsApp and ChatWoot integrations:

  1. WhatsApp + ChatWoot - Installation Guide
  2. WhatsApp + ChatWoot - Configuration Guide
  3. WhatsApp + ChatWoot - HTTPS Guide

You can follow them one by one or skip some parts if you don’t need them.

Go to 🧩 ChatWoot App to see features available for WhatsApp ChatWoot integration using WAHA.