Deploy WAHA on Coolify

January 13, 2026 in Install by devlikeapro3 minutes

Image for Deploy WAHA on Coolify

Overview

With WAHA on Coolify, you get:

  • Free Self-hosted Coolify
  • UI for deployments, env vars, and storage
  • Automatic HTTPS with a built-in proxy

Coolify overview

Requirements

  • Clean Ubuntu or any Linux-based OS
  • Minimum 2 CPU and 2 GB RAM
  • Public IP address assigned to the server
  • (Recommended) DNS address assigned to the server for HTTPS - waha.example.com

Install

Install Coolify

For self-hosted Coolify, run:

Install Coolify
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | sudo bash

Finish the web setup in your browser.

Create Project

Create a new project:

Add project

Name it myproject:

Project name

Create an App

Open myproject, and Add Resource:

Add resource

Select Docker Image:

Docker image resource

Set the Docker Image:

App name and image

App - General

Open General:

  • Change Name to waha
  • Add a domain for WAHA in Domains, like http://abc.{yourip}.sslip.io,https://waha.example.com (optional, you can still use auto generated domain name)
  • Click Save

Domain settings

App - Advanced

Open Advanced, in Container Names section enable Consistent Container Names:

Advanced container name

App - Environment Variables

Go to Environment Variables, click Developer view and use values below:

Environment variables view

Change Secrets

In the example below, we use 44..44 for some environment variables.

You must generate your own using this command:

Generate Secrets
uuidgen | tr -d '-'

Change WAHA_BASE_URL and WAHA_PUBLIC_URL

Change WAHA_BASE_URL and WAHA_PUBLIC_URL to your domain, like https://waha.example.com

Environment Variables
# ====================
# ===== SECURITY =====
# ====================
WAHA_API_KEY=44444444444444444444444444444444
WAHA_DASHBOARD_USERNAME=admin
WAHA_DASHBOARD_PASSWORD=44444444444444444444444444444444
WHATSAPP_SWAGGER_USERNAME=admin
WHATSAPP_SWAGGER_PASSWORD=44444444444444444444444444444444

# Base URL for the API (used for webhooks, file URLs, etc.)
WAHA_BASE_URL=https://waha.example.com
WAHA_PUBLIC_URL=https://waha.example.com


# Disable Dashboard or Swagger
WAHA_DASHBOARD_ENABLED=True
WHATSAPP_SWAGGER_ENABLED=True

# ==================
# ===== COMMON =====
# ==================
# WhatsApp engine (WEBJS is default, GOWS or NOWEB for better performance)
WHATSAPP_DEFAULT_ENGINE=WEBJS

# "Firefox (YourApp)" in Linked Devices
# WAHA_CLIENT_DEVICE_NAME=YourApp


# ===================
# ===== LOGGING =====
# ===================
# Log format: JSON (for log management systems) or PRETTY (for development)
WAHA_LOG_FORMAT=JSON

# Log level: info, debug, error, warn
WAHA_LOG_LEVEL=info

# Don't print QR codes in logs
WAHA_PRINT_QR=False

# =========================
# ===== MEDIA STORAGE =====
# =========================
# Local storage (default)
WAHA_MEDIA_STORAGE=LOCAL
WHATSAPP_FILES_LIFETIME=0
WHATSAPP_FILES_FOLDER=/app/.media

Environment variables list

App - Storage

Open Persistent Storage, add a Volume Mount

Add volume

Create 2 volumes:

  1. Sessions
  • Name: sessions
  • Destination path: /app/.sessions
  1. Media
  • Name: media
  • Destination path: /app/.media

Volume fields

Click on Persistent Storage again to see all volumes:

Volumes list

App - Healthcheck

Open Healthcheck, set Path as ping, click Enable Healthcheck

Healthcheck

App - Deployments

Open Deployments, click Deploy to pull the image and start the app:

Deployments

When it finishes, click Links and open any link to open WAHA:

App links

Check WAHA

Use admin as Username and your generated WAHA_DASHBOARD_PASSWORD to log in:

Swagger login

You’ll see Swagger documentation. Now click Dashboard:

Open dashboard

Enter your WAHA_API_KEY to connect:

Dashboard API key

Now you can Create & Start a new session:

Create session

Scan the QR code using your WhatsApp app:

Scan QR

Update

When there’s a new version, click Redeploy to pull the latest image.

Redeploy

What’s next?