Deploy WAHA on EasyPanel

January 12, 2026 in Install by devlikeapro3 minutes

Image for Deploy WAHA on EasyPanel

Overview

EasyPanel overview

With WAHA on EasyPanel, you get:

  • A public DNS name like https://myproject-waha.<ID>.easypanel.host/
  • Automatic HTTPS handling
  • Easy UI for deployments, env vars, and storage

Requirements

  • Clean Ubuntu or any Linux-based OS
  • Minimum 2 CPU and 2 GB RAM
  • Public IP address assigned to the server
  • No DNS required up front because EasyPanel provides built-in DNS.

Install

Install EasyPanel

Install EasyPanel on a fresh Linux server:

Install EasyPanel
curl -sSL https://get.easypanel.io | sh

Finish the web setup in your browser.

Create Project

Now, we need to create a project :

Create project

Name it myproject:

Project name

Create an App

Open myproject, add a new Service, and choose App:

Create service

Name it waha:

Service name

App - Docker Image

Open the waha service and click Docker Image:

Docker image

Fill the fields based on the WAHA version you’ll use.

You can change it later in the Source tab for the waha service.

👉 Go to Docker Image Configurator to generate the command with the right version.

App - Environment Variables

Go to Environment and paste the environment variables below.

Environment variables

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 '-'
Environment Variables
# ====================
# ===== SECURITY =====
# ====================
WAHA_API_KEY=44444444444444444444444444444444
WAHA_DASHBOARD_USERNAME=admin
WAHA_DASHBOARD_PASSWORD=44444444444444444444444444444444
WHATSAPP_SWAGGER_USERNAME=admin
WHATSAPP_SWAGGER_PASSWORD=44444444444444444444444444444444

# 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

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

# ===================
# ===== 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

App - Storage

Go to the Storage tab and add a Volume Mount:

Storage mount

Create two volumes:

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

Storage path

This is what volumes should look like in the end:

Storage list

Host Path

On the server, you can find the files later in these folders:

  • /etc/easypanel/projects/myproject/waha/volumes/sessions
  • /etc/easypanel/projects/myproject/waha/volumes/media

The pattern is /etc/easypanel/projects/[project]/[service]/volumes/[volume]

App - Advanced

Go to the Advanced tab and disable Zero Downtime deployment.

Advanced settings

App - Deploy

Go to the Deployments tab and click Deploy.

Deploy

When it finishes, click the Open icon to open WAHA.

Open WAHA

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 you want to update the image, trigger a Force Build on the Deployments tab:

Force rebuild

What’s next?