Deploying Wazo
Introduction
Wazo is an open-source unified communication platform built on Asterisk that provides enterprise-grade VoIP, video conferencing, instant messaging, and collaboration features. It offers a comprehensive solution for businesses looking to deploy their own communication infrastructure.
Wazo Platform is designed to be developer-friendly with extensive APIs, enabling integration with existing business applications and customization to meet specific requirements.
Key features of Wazo include:
- VoIP Phone System: Full-featured PBX with call routing, IVR, voicemail, and call recording
- Video Conferencing: Built-in video meeting capabilities
- Unified Communications: Integrate voice, video, messaging, and presence
- WebRTC Support: Browser-based calling without plugins
- Mobile Apps: iOS and Android clients available
- REST APIs: Comprehensive APIs for integration and customization
- Multi-Tenant: Support multiple organizations on a single platform
- Call Center Features: Queues, agents, and supervisor dashboards
- SIP Trunking: Connect to external PSTN providers
- High Availability: Clustering support for enterprise deployments
- Open Source: AGPLv3 license with active community
This guide walks you through deploying Wazo components on Klutch.sh using Docker for unified communications.
Prerequisites
Before deploying Wazo on Klutch.sh, ensure you have:
- A Klutch.sh account
- A GitHub account with a repository for your Wazo configuration
- A PostgreSQL database (managed or deployed separately)
- Understanding of VoIP and SIP concepts
- (Optional) SIP trunk provider credentials
Repository Structure
Create a GitHub repository with the following structure:
wazo-deploy/├── Dockerfile└── .dockerignoreDockerfile
Create a Dockerfile in your repository for the Wazo Platform components:
FROM wazoplatform/wazo-platform:latest
# Web interface and APIEXPOSE 443EXPOSE 9497
# The base image handles the entrypointEnvironment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
POSTGRES_HOST | Yes | - | PostgreSQL host |
POSTGRES_PORT | No | 5432 | PostgreSQL port |
POSTGRES_DB | Yes | - | Database name |
POSTGRES_USER | Yes | - | Database user |
POSTGRES_PASSWORD | Yes | - | Database password |
Deployment on Klutch.sh
- Push your Dockerfile to your GitHub repository.
- Log in to Klutch.sh and create a new project.
- Create a new app within your project and connect your GitHub repository containing the Dockerfile.
- Configure the deployment settings: - Select **HTTP** as the traffic type - Set the internal port to **443**
- Add environment variables: - `POSTGRES_HOST`: Your database host - `POSTGRES_DB`: Your database name - `POSTGRES_USER`: Your database username - `POSTGRES_PASSWORD`: Your database password (mark as sensitive)
- Attach persistent volumes: - Mount path: `/var/lib/wazo` - Recommended size: 20 GB - Purpose: Call recordings, voicemails, and configuration
- Click **Deploy** and wait for the build to complete.
- Access the Wazo admin interface at the provided URL.
Important Notes
Wazo is a full-featured telephony platform that typically requires:
- SIP/RTP Ports: VoIP functionality requires UDP ports for SIP signaling and RTP media, which may need additional configuration beyond HTTP
- Static IP: Many VoIP configurations work best with a static IP address
- SIP Trunk: For external calling, you need a SIP trunk provider
For full telephony functionality, consider deploying Wazo on dedicated infrastructure with proper network configuration for VoIP traffic.
Post-Deployment Configuration
After deployment:
- Access the web admin interface
- Configure your SIP trunk(s) for external connectivity
- Create extensions and users
- Set up IVR menus and call routing
- Configure voicemail settings
Troubleshooting
VoIP Audio Issues
VoIP audio issues are typically related to NAT traversal and firewall configuration. Ensure RTP ports are properly configured.
Registration Failures
Verify SIP trunk credentials and network connectivity to your VoIP provider.