Only this pageAll pages
Powered by GitBook
Couldn't generate the PDF for 189 pages, generation stopped at 100.
Extend with 50 more pages.
1 of 100

English

Loading...

Loading...

Loading...

Loading...

Installation

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

User manual

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

FAQ

Setup

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Management

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Incoming Routing

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Standalone Computer

In this article you will find instructions on how to install MikoPBX on a separate computer.

Tested on:

  • Intel NUC DCCP847DYE

  • Intel NUC D54250WUKH

Most modern PCs support booting from a USB device. MikoPBX can be run from a USB device.

Note! The minimum capacity of the USB drive is 600MB

  • The Bootable USB mode is designed for running the PBX from a USB drive (flash drive). Use the .img file for installation.

  • The Live USB mode is intended for system installation or recovery. Use the .iso file for installation.

Using Windows

  1. Download and install the application.

  2. Run ImageUSB

  1. Perform the "Refresh drives" action. Select the USB drive, then select the image file. Perform the "Write" action.

  1. Wait for the writing process to complete, then connect the USB drive to the PC. Restart the PC to boot from the drive.

Using OSX

Be careful when selecting the device for formatting. Changes are irreversible!

  1. Open the Terminal application.

  2. Connect the USB drive.

  3. Run the following command:

diskutil list

Information about all connected drives will be displayed.

In this example, the name of the USB device is "/dev/disk3." Compare the output of the diskutil list command before and after connecting the device.

  1. Format the drive. You will need to enter the administrator password.

sudo diskutil eraseDisk FAT32 NONAME  MBRFormat /dev/disk3;
  1. Unmount the device with the following command:

sudo diskutil unmountDisk /dev/disk3;
  1. Write the image to the USB drive:

sudo dd if=1.0.64-9.0-svn-mikopbx-x86-64-cross-linux.img of=/dev/disk3 bs=1m;

Wait for the writing process to complete, then connect the USB drive to the PC. Restart the PC to boot from the drive.

To create a bootable USB drive, we recommend using the imageUSB application. You can download it . Alternatively, use .

here
balenaEtcher

MikoPBX Manual

Description of MikoPBX and the sections you can find in the documentation. Introduction to the documentation.

Foreword

Welcome to the MikoPBX documentation resource! Here you can find step-by-step instructions related to interacting with the MikoPBX PBX system. For your convenience, the documentation is organized into sections - just like in the web interface, making it very easy to navigate.

What is MikoPBX?

MikoPBX is a free telephony server with its own operating system and a simple, user-friendly web interface. It works with virtually any telephony technology in the world.

MikoPBX is a fully modular interface for Asterisk, written in PHP and JavaScript. This means that you can implement absolutely any additional Asterisk telephony functionality within MikoPBX. Moreover, if you develop a useful module, you can place it in the public repository and make it available to all MikoPBX users. Additionally, MikoPBX has very low hardware requirements:

Simultaneous Calls
Minimally Recommended Configuration

5 - 10

1 GHz x86-64, 512 MB RAM

Up to 25

3 GHz x86-64, 1 GB RAM

Over 25

2 CPUs 3 GHz x86-64, 2 GB RAM or more

Where to Start?

To get started, you should install MikoPBX using any method convenient for you. Below are installation options. By clicking on their names, you can access detailed articles:

After installation, you can begin exploring your PBX system. The "User Guide" documentation will help you with this, providing detailed information about specific sections:

Modules

If you have familiarized yourself with the basic setup and operation of MikoPBX, you can expand its functionality using modules.

Modules allow you to add extra features to your system. You can learn more about them step by step:

FAQ Section

In this section, you can find answers to your questions and solutions that will help you expand the functionality of basic features. This section, like the main documentation, is divided into categories for easy navigation.

Virtual Machine

In this article you will find instructions on how to install MikoPBX using various virtual machines.

MikoPBX supports installation using many virtual machines. In this section you can find detailed instructions for them. Click on an item in the list below to go to the instruction for a specific virtual machine:

System requirements

Discription of system requirements for the MikoPBX system

Network Channel Requirement

An example of calculating the required channel bandwidth for different codecs for 30 simultaneous calls. PBX supports the most popular codecs:

  • G.711 - 4.67 Mbps

  • GSM - 1.68 Mbps

  • G.722 - 4.67 Mbps

  • G.729 - 1.38 Mbps

Minimum system requirements

We recommend using two hard drives for PBX deployment.

  • 800 Mb hard disk for the main system

  • A 50+ Gb hard drive for recording conversations

  • 1 (2 cores) x86-64 processor

  • 2 GB of RAM

  • Network Adapter

A PC with such parameters, in our tests, holds 38 simultaneous incoming calls under the conditions:

  • 10 agents are connected to the queue (all online)

  • Every second a new call comes in

  • Music (MOH) is played to the client while waiting

  • Modules on the PBX is not installed

Approximately, 1 hour of conversation takes up 14MB of disk space. The recommended size for the disk storing call recordings is at least 50 gigabytes.

Thank you for choosing MikoPBX!

Installation .

Installation .

Installation .

Installation in a .

.

.

.

.

.

.

For additional help with getting started quickly, you can refer to .

– here you'll find a detailed description of the registration process and its specifics.

– this section provides a detailed explanation of how to install and manage modules.

– in this section, you'll find detailed descriptions of each module, as well as steps for configuring and using them.

If you have a question that isn't covered here, you can seek assistance in the , where MikoPBX users help each other resolve issues and needs related to the PBX system.

The calculation is approximate, when using the same codec on all devices connected to the PBX. Read more .

❤️
on a standalone computer
in a virtual machine
using cloud services
Docker container
Telephony
Call Routing
Modules
Maintenance
Network and Firewall
System
this article
Registration in the MikoPBX Marketplace
Module Management
Documentation on Specific Modules
Telegram Community
VMware ESXi
VMware Fusion
VirtualBOX
VMware Workstation Pro
Hyper-V
Proxmox
here

VMware Workstation Pro

Installing MikoPBX using VMware Workstation Pro.

This guide covers creating and configuring a virtual machine in VMware Workstation Pro and installing MikoPBX on it.

Use versions of MikoPBX other than 2024.1.114 for installation on VMware Workstation Pro. Version 2024.1.114 currently does not support installation via VMware Workstation Pro!

Creating a Virtual Machine

  1. Open VMware Workstation Pro and click "Create a New Virtual Machine" to start creating a new virtual machine.

  1. In the setup interface, select the virtual machine type: "Typical (recommended)". Then, click "Next >".

  1. Select "Linux" for the "Guest operating system" and "Debian 11.x 64-bit" as the version. Click "Next >".

  1. Enter a desired name for the virtual machine in "Virtual machine name:" and, if necessary, specify a location on your computer under "Location". Click "Next >".

  1. Set the size for the primary (system) hard drive, with a recommended size of 1GB. Choose "Split virtual disk into multiple files" and click "Next >".

  1. A summary of the virtual machine configuration will appear. Click "Finish" to create the virtual machine.

Adding and Connecting a Second Disk

Now, let's create and attach a second hard drive, which will be used to store call recordings.

  1. Open the settings of the previously created virtual machine.

  1. Click "Add..." to add a new system component.

  1. In Hardware types, select "Hard Disk" and click "Next >".

  1. Choose "Virtual disk type" - "SCSI". Click "Next >".

  1. Choose "Create a new virtual disk" and click "Next >".

  1. Specify the disk size, with a recommended minimum of 50GB. Also, choose "Split virtual disk into multiple files". Click "Next >".

  1. Give the hard drive a custom name and click "Finish".

Configuring the Network Interface for the Virtual Machine

In the settings, go to "Network Adapter" and select "Network connection" - "Bridged: Connected directly to the physical network". Click "OK".

First System Boot

  1. Start the virtual machine.

  1. The MikoPBX command-line interface will open as the PBX starts loading from the optical disk where the ISO image was mounted. This is indicated by the line: "The system is loaded in Recovery mode":

  1. To install MikoPBX, select "[8] Install".

  2. A list of available disks will be displayed (in this example, sdb, sdc). The system suggests a default disk, sdb in our case, for the installation. If you agree with the suggested disk for the system, press Enter. Otherwise, enter the name of another disk.

All data on the selected installation disk will be erased.

  1. The system will issue a warning. To confirm the operation, enter "y" and press Enter.

  2. After installation, you'll be prompted to select a disk for storing call recordings. Enter the disk name (in this example, sdc) and press Enter.

  1. After installation, the system will restart. MikoPBX will now boot from sdb, the installation disk, without the line "The system is loaded in Recovery mode"—indicating a successful installation.

First Login to MikoPBX

To access the MikoPBX web interface, enter your virtual machine's IP address in your browser's address bar. You can find the IP address in the console.

Enter the IP address in your browser’s address bar. Log in using the default credentials.

Use the following default credentials for the first login to the MikoPBX web interface:

  • Username: admin

  • Password: admin

You can download the VMware Workstation Pro installer from .

Choose the installation source, "Installer disc image file (iso):". Select the .iso file you want to use. You can download the distribution from . Click "Next >" to continue.

Use the to navigate through the menu options. Press Enter to select an option, or press the corresponding number on the .

the official website
this link
arrow keys
numpad

Proxmox

Installing MikoPBX using Proxmox.

Loading the MikoPBX image

  1. Open the local / ISO images tab and select Download from URL

  2. In the URL field, paste the link to the MikoPBX distribution file with the .iso extension

  3. Click the Download button and wait for the file to finish downloading

Creating a virtual machine

  1. Select Create VM

  2. On the General tab, enter the name of the virtual machine, for example mikopbx-vm

  1. Go to the OS tab, and in the ISO image field, select the previously downloaded image

  2. Set the OS type to Linux

  1. On the System tab, uncheck the Qemu Agent box, and use the default values for other fields

To deploy the PBX use two disks:

  • A 1 Gb disk for the main system

  • A 50+ Gb disk for storing call recordings

  1. Go to the Disks tab

  2. Adjust the size of the system disk to 1 GB

  1. Click the Add button and add an additional disk for data storage

  2. Specify a disk size of at least 50 GB

  1. On the CPU and Memory tabs, specify the computing resources for the virtual machine based on the expected load on the PBX. For a test machine, you can set Cores (CPU tab) to 2 and Memory (Memory tab) to 2 GB

  1. On the Network tab, uncheck the Firewall box

  1. Go to the last tab, Confirm, and check the Start after created box

  2. After entering the values, click the Finish button

Installing MikoPBX

  1. Go to the created virtual machine mikopbx-vm

  2. On the open tab, go to the Console section

  3. If the boot is successful, a console menu will appear. Enter 8 from the keyboard to start the installation

  1. Select the disk for the system and enter the disk name from the keyboard, for example sda. Confirm the selection by entering y from the keyboard

  1. Connect the disk for storing call recordings, enter the disk name for connection from the keyboard, for example sdb

When the message "Press any key within 30 seconds to boot from LiveCD..." appears, do not press any buttons. In this case, the system will boot from the hard drive.

Starting MikoPBX

  1. To access the MikoPBX web interface, enter your virtual machine's IP address in your browser's address bar. You can find the IP address in the console.

  1. Enter the IP address in your browser’s address bar. Log in using the default credentials.

Use the following default credentials for the first login to the MikoPBX web interface:

  • Username: admin

  • Password: admin

ImageUSB start window
Guide for writing the image to a flash drive
List of all connected drives
MikoPBX Interface

Getting to know MikoPBX

Description of the first login to the MikoPBX web-interface

First login to the MikoPBX system

Go to the MikoPBX installation console, remember the IP address that your PBX received.

Enter the received MikoPBX IP address in the web browser. The authorization page will be displayed. Log in using the default credentials:

Use the following default credentials for the first login to the MikoPBX web interface:

  • Username: admin

  • Password: admin

After successful authorization, MikoPBX will automatically open the settings for changing the password:

For more information about the General Settings, see the section.

After changing the password, the system will be fully operational. It is recommended to immediately configure the firewall rules. You can read about how to do this by following .

General Settings
the link

VirtualBOX

Installing MikoPBX as a guest machine in VirtualBOX

Use versions of MikoPBX below 2024.1.114 for installation on VirtualBOX

Version 2024.1.114 temporarily does not support installation on VirtualBOX

Create a virtual machine

  1. Create a new virtual machine.

  1. Specify the Machine Name and Folder.

Type - Linux.

Version - Other Linux (64Bit).

Click Next.

  1. Specify the size of the base memory - 1024 MB, as well as the number of processors - 2

Press Next.

  1. Select Create a new virtual hard disk. Enter a disk size of 700 MB, and also check the box "Pre-allocate Full Size"

Click Create.

  1. Confirm the creation of the virtual machine: click Finish.

Setting up a virtual machine

  1. Go to the settings of the created virtual machine.

To do this, click "Settings" in the upper menu.

  1. Click the "Storage" tab. Add a new hard drive to store call records.

  1. In the window that appears, click Create.

  1. Select the hard disk format - VDI (VirtualBox Disk Image).

Click Next.

  1. The hard disk must be of a fixed size.

Check the box next to "Pre-allocate Full Size"

Click Next.

  1. Specify the Name of the created disk.

Set the Disk Size to about 50 GB.

Click Finish.

  1. Choose the newly created drive and click Select.

  1. The created drive will appear in the media list.

  1. Please mount the MikoPBX image onto an optical disc. To do this, select the optical disc in the 'Media' section and click on the image file selection button in the 'Attributes' section.

  1. In the appeared menu, click on 'Choose a disk file...'

  1. Select the downloaded ISO disk image.

  1. "Go to the 'Network' tab.

Set the Connection Type to 'Bridged Adapter'. Click 'OK' to save all the settings you have made.

Installantion MikoPBX

  1. Start the created virtual machine.

  1. The command interface of the PBX will open. The PBX will start booting.

At this stage, MikoPBX is booting from the optical disc containing the ISO image. This is indicated by the message: 'The system is loaded in Recovery mode'.

To select a menu item, press the Enter key.

  1. Install MikoPBX.

All data on the disk where MikoPBX is being installed will be lost

Click Install.

  1. Information about all available disks will be displayed (in this example: sdb, sdc).

The disk where MikoPBX will be installed is referred to as the system disk (SYSTEM). You can choose a disk with a size larger than 500MB as the system disk.

  1. Enter the name of the disk you referred to as the 'system disk' from the keyboard, in this case sdb, and press Enter. (If it is selected by default, you can simply press Enter).

  2. The system will prompt for confirmation. Enter 'y' and press Enter.

  1. After completing the installation, you will be prompted to select a disk for storing call records.

Approximately, 1 hour of conversation takes up 14MB of disk space.

Enter the disk name (in this example, the only available disk is 'cdc') and press Enter.

  1. After the installation is complete, the system will reboot.

MikoPBX will now run from the sdb drive where you installed it.

We will see that the line "The system is loaded in Recovery mode" is missing.

The first login to MikoPBX

To access the control panel, you need to enter the IP address of your virtual machine in the browser's address bar.

Default creditionals for the first login are:

Username - admin

Password - admin

System will ask to change them after the first login. It is important for the security of your MikoPBX.

The installation of MikoPBX using VirtualBOX is now complete.

VMware Fusion

Installing MikoPBX using VMware Fusion.

Creating a virtual machine

  1. Creating a new virtual machine.

Click "Continue"

  1. Select the type of operating system Other Linux 5.x and later kernel 64-bit

Click "Continue"

  1. Choosing the Legacy bios type

Click "Continue"

  1. Click "Finish"

Connecting a new disk

  1. After creating a virtual machine, wait for it to load

  1. Go to the section "[3] Reboot the system"

  1. Choose "[2] Shutdown"

  1. After shutting down the virtual machine, go to Settings

  1. Select "Add device"

  1. Select "New Hard Disk"

Click "Add..."

  1. Choose the size of the hard drive (we recommend at least 50 GB)

Click "Apply"

1 hour of recording conversations takes approximately 14mb on disk.

Installing MikoPBX

  1. Start the virtual machine

  1. Select "[8] Install"

  1. Enter the name of the disk on which MikoPBX will be installed

In our case - sdb, enter its name and press Enter

  1. Confirm the disk selection: enter y

  1. Select a disk for recording conversations

In our case - sdc, enter its name and press Enter

  1. The system will reboot and MikoPBX will be ready for use.

First connection to MikoPBX

  1. The PBX displays the IP address of the station by which you can connect to it

  1. Enter the IP address of the station in the browser bar and the MIkoPBX login menu will open:

Default creditionals for the first login are:

Username - admin

Password - admin

System will ask to change them after the first login. It is important for the security of your MikoPBX.

Download Virtual Box from the and install it.

You can navigate through the menu items using the .

Alternatively, you can select a menu item by pressing the corresponding ."

After downloading the latest version of the image (), specify the ISO file with the installation distribution.

link
arrow keys
number on the alphanumeric keypad
link

VMware ESXi

Installing MikoPBX using VMware ESXi.

Creating a Virtual Machine

  1. Start by creating a new virtual machine.

  2. Enter the Name, Type, and Version of the virtual machine, as shown in the image below.

  1. Select a datastore for the virtual machine.

  2. Allocate 1024 MB of memory to the virtual machine and create a new virtual hard disk for the system with a size of 1024 MB.

  1. Choose the SCSI controller type and adapter type, as shown in the image below.

  1. Select BIOS as the Firmware option.

  1. Review and save the changes.

Configuring the Virtual Machine

  1. Open the settings of the created virtual machine. Create a new hard disk for storing call recordings.

We recommend allocating at least 50 GB for this disk.

  1. Go to the CD/DVD Drive tab. Upload the ISO image for installation, and check the box next to "Connect at power on."

Installing MikoPBX

  1. Start the virtual machine.

  2. The MikoPBX command-line interface will open as the PBX starts loading from the optical disk containing the ISO image. You will see the message: "The system is loaded in recovery mode (Live CD)".

  1. Install MikoPBX:

All data on the disk where MikoPBX is being installed will be lost.

Go to [8] Install:

  1. Information about all available disks will appear (in this example: sdb, sdc).

  1. Enter the name of the disk you intended as the "system" disk, in this case, sdb, and press Enter (or simply press Enter if it’s already selected).

  2. The system will prompt for confirmation. Type y and press Enter:

  1. Once installation is complete, you will be prompted to select a disk for storing call recordings.

Approximately 14 MB of storage is required for every 1 hour of recorded conversation.

Enter the disk name (in this example, the only available disk is sdc) and press Enter.

  1. After installation, the system will reboot.

MikoPBX will now boot from sdb, the system disk, and the line "The system is loaded in Recovery mode" will no longer appear—indicating a successful installation.

This completes the MikoPBX installation.

First Login to MikoPBX

To access the control panel, enter the virtual machine's IP address in your browser's address bar.

The default login credentials are admin for both username and password.

This completes the MikoPBX installation.

Hyper-V

Installing MikoPBX using Hyper-V.

Creating a virtual machine

  1. Select Action / New / Virtual Machine

  2. On the Specify Name and Location tab, enter the name of the virtual machine, for example mikopbx-vm

  1. Proceed to the Specify Generation tab, and select Generation 1

  1. On the Assign Memory tab, allocate the required amount of RAM based on the expected load on the PBX. For a test machine, you can specify 2 GB

  1. Proceed to the Configure Networking tab, and select a pre-configured network connection

  1. On the Connect Virtual Hard Disk tab, adjust the system disk size to 1 GB

  1. On the Installation Options tab, check the Install an operating system from a bootable CD/DVD-ROM option

  2. Select Image file (.iso) and provide the link to the MikoPBX distribution file with the .iso extension

  1. After entering all values, click the Finish button

Data storage disk

For deploying the PBX, use two disks:

  • a 1 GB disk for the main system

  • a 50+ GB disk for storing call recordings

  1. Go to the settings of the created virtual machine

  2. Select the IDE controller to which the system disk is connected

  3. On the opened tab, select Hard Drive and click the Add button

  4. Click the New button

  5. On the Choose disk format tab, select VHD

  1. On the Choose disk type tab, select Fixed size

  1. On the Specify name and location tab, specify the name (e.g., storage.vhd) and the location of the disk

  1. On the Configure Disk tab, set the disk size for data storage to at least 50 GB

  1. Use the default values for other fields

  2. Complete the setup by clicking the Finish button

Installing MikoPBX

  1. To start the virtual machine, click Connect... -> Start

  1. Go to the Connect tab of the created virtual machine mikopbx-vm

  2. If the boot is successful, a console menu will appear. Enter 8 from the keyboard to start the installation

  1. Select the system disk and enter the disk name from the keyboard, for example sda. Confirm the selection by entering y from the keyboard

  1. Connect the disk for storing call recordings, and enter the disk name for connection from the keyboard, for example sdb

When the message "Press any key within 30 seconds to boot from LiveCD..." appears, do not press any buttons. In this case, the system will boot from the hard drive.

Starting MikoPBX

  1. To access the MikoPBX web interface, enter your virtual machine's IP address in your browser's address bar. You can find the IP address in the console.

  1. Enter the IP address in your browser’s address bar. Log in using the default credentials.

Use the following default credentials for the first login to the MikoPBX web interface:

  • Username: admin

  • Password: admin

Quick start

This guide provides detailed steps to get started with MikoPBX and helps you quickly configure the system.

Follow the step-by-step instructions in the order presented for a quick and successful system setup.

Installing MikoPBX

MikoPBX is a full-fledged operating system for your hardware; it is not a standalone application. It is provided as an image file (*.iso, *.img, *.raw).

It supports various installation methods:

Follow the link for your preferred installation method and proceed according to the provided instructions.

First Login to the Web Interface

After installation, you need to access the MikoPBX web interface for further system configuration. To do this, find the PBX's IP address in the MikoPBX console:

In this example, the IP address is 192.168.0.203. To access the web interface, enter this IP address into your browser's address bar:

If the logs do not provide a username and password, use the default credentials:

Username: admin

Password: admin

After the first login, the system will prompt you to change your password.

Settings Within the Web Interface:

Network and Firewall Settings


Configuring Protection Against Hacking (Fail2Ban)


Adding and Configuring Employee Accounts


Connecting Providers


Setting Up Incoming and Outgoing Routing

At this stage, you need to set routing rules for incoming and outgoing calls: how calls passing through a specific provider will be handled:

To create routing rules, you may also need the following features:


Marketplace and Modules

The Marketplace allows you to extend the system's standard functionality using modules:

This completes the basic setup of MikoPBX! For a deeper exploration of MikoPBX's capabilities, we recommend referring to the comprehensive documentation.

AWS Marketplace

Installation guide for MikoPBX image from AWS Marketplace

Let's get started with the setup

For quick and convenient navigation within the Amazon service, use the search panel

Creating a virtual machine

  1. Open Services / Compute / EC2 and navigate to Images / AMI Catalog

  2. In the open tab enter MikoPBX in the search bar

  3. On the opened tab click Subscribe now

  4. Click the Launch an instance from AMI button to create a virtual machine

  1. Enter the virtual machine name, for example mikopbx-vm

If you have an SSH key

  1. Specify the SSH key in the Key pair field

If you don't have an SSH key

  1. Select Create new key pair and specify the key pair name, for example mikopbx_key

Follow the instructions further

To deploy the PBX use two disks:

  • A 1 Gb disk for the main system

  • A 50+ Gb disk for storing call recordings

  1. If necessary, change the size of the storage disk in Configure storage, default size is 50Gb

  1. Under Network settings, all required Firewall rules are configured automatically

  1. For other fields use default values

  2. Click Launch instance

Starting MikoPBX

  1. Go to the created virtual machine mikopbx-vm

  2. On the opened tab, select Connect / EC2 serial console, wait for the system to fully load until the authentication parameters are displayed

  1. Copy the external address of the created virtual machine and enter it in the browser's address bar

  2. Use the login and password provided in EC2 serial console for login

Make sure to configure the Firewall on the MikoPBX

Cloud

In this article you will find instructions on how to install MikoPBX using various cloud services.

MikoPBX supports installation via many cloud services. In this section you can find detailed instructions for them. Click on an item in the list below to go to the instruction for a specific virtual machine:

AWS

MikoPBX Installation Options Using AWS

The simplest way to install MikoPBX is by deploying a ready-made image from the AWS Marketplace. If you wish to launch a custom version of MikoPBX, please refer to the detailed instructions where we describe step-by-step how to create an AMI image from any MikoPBX distribution.

Google Cloud

MikoPBX Installation Guide using Google Cloud

Installing MikoPBX in Google Cloud can be done in two ways: using an image from the Google Cloud Marketplace or from an image based on a file uploaded from the MikoPBX distribution. The first method provides quick and easy deployment of the standard version of MikoPBX, while the second is suitable for intermediate releases.

Google Cloud Marketplace

MikoPBX Installation Guide using Google Cloud Marketplace

Let's start with the setup

For quick and easy search on the Google Cloud platform, use the search bar

Adding roles to a Service account

If you have a service account, check if it has the necessary roles, and add them if needed

If you do not have a service account, create one and add the necessary roles

  1. Open the Navigation menu / Products & solutions / Management / IAM & Admin

  2. Go to the Service accounts tab and click on CREATE SERVICE ACCOUNT

  3. Enter a name for the service account, for example mikopbx-service-account

  4. Click the CREATE AND CONTINUE button

  1. Add the roles Cloud Infrastructure Manager Agent, Compute Admin, Compute Network Admin, Service Account User

  1. Click the DONE button

Creating a virtual machine

  1. Open the Marketplace and enter MikoPBX in the search bar

  2. On the opened tab select LAUNCH

  1. In the Deployment name field, enter a name, for example mikopbx-vm

  2. In the Deployment Service Account section, check the Existing account option and select the previously created service account

To deploy the PBX, use two disks:

  • A 1 GB disk for the main system

  • A 50+ GB disk for storing call recordings

  1. If necessary, change the size of the data storage disk in the Data Storage section. By default, its size is 50 GB

  1. Under Networking, all required Firewall rules are configured automatically

  1. For other fields, use the default values

  2. After entering the values, click the DEPLOY button

Starting MikoPBX

  1. Open the Compute Engine tab and go to the Virtual machines / VM Instance section

  2. Go to the created virtual machine mikopbx-vm-mikopbx-vm

  3. On the opened tab, go to Logs / Serial port 1 (console)

  1. Copy the external address of the created virtual machine and enter it in the browser address bar

  2. Use the login and password provided in Serial port 1 (console) to log in

Microsoft Azure

MikoPBX Installation Guide using Microsoft Azure

Let's proceed with the setup.

For quick and convenient searching on the Azure portal, use the search bar.

Creating a resource group

  1. Open Menu / All services / General / Resource groups

  2. In the Resource groups tab, select Create

  3. Enter the group name, for example MikoPBX_group

  4. Use default values for other fields

  5. After entering the values, click the Review + create button, then the Create button

Creating a storage account

  1. Open Menu / All services / Analyze and transform data / Storage accounts

  2. In the Storage accounts tab, select Create

  3. Specify the created resource group MikoPBX_group

  4. Enter the storage account name, for example pbximgs

  5. Use default values for other fields

  6. After entering the values, click the Review + create button, then the Create button

Configuring the created storage account

  1. Go to the card of the created storage account pbximgs

  2. In the opened tab, go to the Data storage / Containers

  3. Add a new container

  4. Enter the container name, for example imgs

  5. Click the Create button

  1. Open the created container imgs

  2. In the opened tab, select Upload

  3. Select a file from the MikoPBX distribution with the .vhd extension

  4. Click the Upload button

Creating an image

  1. Open Menu / All services / Compute / Images

  2. In the Images tab, select Create, let's create a new image based on the uploaded *.vhd file

  3. Specify the resource group MikoPBX_group

  4. Enter a unique name for the image, for example MikoPBX_Azure

  1. Specify the OS type - Linux

  2. Specify the generation of virtual machines - Gen 1

  3. Select the blob storage object by clicking Browse, Browse / pbximgs / imgs / *.vhd

  4. Specify the account type - Standard HDD

  5. Use default values for other fields

  6. After entering the values, click the Review + create button, then the Create button

Creating a virtual machine

  1. Open Menu / All services / Compute / Virtual machines

  2. In the Virtual machines tab, select Create / Azure virtual machine

  3. Specify the resource group MikoPBX_group

  4. Enter the virtual machine name, for example MikoPBX-vm

  1. Choose the previously created image, See all images / Other items / My images / MikoPBX_Azure

  2. Specify the machine size (combination of CPU / RAM to be at least 1GB / HDD parameters)

  1. Specify the username for the administrator account

If you have an SSH key, do the following

  1. Select the source of the SSH public key - Use existing public key

  2. Specify it in the SSH public key field

If you do not have an SSH key, do the following

  1. Select the source of the SSH public key - Generate new key pair

  2. Specify the key pair name, for example mikopbx_key

Continue with the following instructions:

  1. In the license type field, specify Other

  2. Use default values for the other fields

To deploy the PBX use two disks:

  • A 1 Gb disk for the main system

  • A 50+ Gb disk for storing call recordings

  1. Go to the Disks tab

  2. Specify the OS disk type

  3. Check the Delete with VM checkbox

  1. Create a new data disk

  2. Specify the disk size to be at least 50GB

  3. Use default values for the other fields, click OK

  1. After entering the values, click the Review + create button, then click Create

Configuring ports for incoming connections

  1. Open the virtual machine you created and go to Networking / Network settings / Rules

  2. In the tab, choose Create inbound port rule

  3. Specify the destination port ranges - 0 - 65535

  4. Choose the protocol TCP

  1. Specify a name, for example TCP

  2. Use default values for the other fields

  3. After entering the values, click the Add button

  1. Similarly, create a rule for UDP. Specify the destination port ranges - 0 - 65535, protocol UDP, and name

Make sure to configure the Firewall on the MikoPBX

Starting MikoPBX

  1. Open the virtual machine you created and go to the Connect section

  2. In the drop-down menu under More ways to connect, select Serial console

  1. Copy the external address of the created virtual machine and enter it in the browser's address bar

  2. For login use the login and password provided in Serial console

AWS deployment guide

Full installation guide for MikoPBX using AWS

To follow the instructions, install the Amazon Command Line Utility by opening Terminal and entering the following command

Let's get started with the setup

For quick and convenient navigation within the Amazon service, use the search panel

Copying access keys

  1. Go to your account

  2. From the dropdown menu, select Security credentials

If you don't have an access key, do the following

  1. Under the Access keys table, select Create access key

  2. Copy the Access key and Secret access key

If you already have an access key, simply copy the Access key and Secret access key

Creating a bucket

  1. Open Services / Storage / S3

  2. On the tab select Create bucket

  3. Enter a unique bucket name

  1. Use default values for other fields

  2. After entering the values, click Create bucket

  1. Open the created bucket and select Upload

  2. On the opened tab select Add files

  3. Upload the file from the MikoPBX distribution with the .raw extension

  4. Click Upload

  5. Wait for the file to finish uploading

Adding permissions and attaching policies

If not done previously for this cloud

  1. Create a separate folder for files on your computer

  2. Create a file named trust-policy.json in the folder

    1. Open Terminal and navigate to the created folder

    2. Run the command vi trust-policy.json

    3. Enter editing mode by pressing i and paste the text

    4. Press ESC and type :wq to save the file

  1. Similarly, create a file named role-policy.json and change the bucket name value in the text to the name of your created bucket

  1. Similarly, create a file named import-image.sh, change the DEFAULT_BUCKET parameter value to the name of your created bucket and the DEFAULT_IMAGE parameter value to the name of the image uploaded to the bucket

  1. Run the command aws configure, specify the region and copied Access key and Secret access key

  1. Run the command

  1. Run the command

  1. Run the command

If the command executes successfully, a unique AMI identifier will be generated

Creating a virtual machine

  1. Open Services / Compute / EC2 and navigate to Images / AMIs

  2. Select the created image and click Launch an instance from AMI to create a virtual machine

  1. Enter the virtual machine name, for example mikopbx-vm

  1. Specify the instance type - t3.micro

If you have an SSH key

  1. Specify the SSH key in the Key pair field

If you don't have an SSH key

  1. Select Create new key pair and specify the key pair name, for example mikopbx_key

Follow the instructions further

  1. In the Network settings section, check Allow SSH traffic and Allow HTTPS traffic

To deploy the PBX use two disks:

  • A 1 Gb disk for the main system

  • A 50+ Gb disk for storing call recordings

  1. If necessary, change the size of the storage disk in Configure storage, default size is 50Gb

  1. For other fields use default values

  2. Click Launch instance

Starting MikoPBX

  1. Go to the created virtual machine mikopbx-vm

  2. On the opened tab, select Connect / EC2 serial console, wait for the system to fully load until the authentication parameters are displayed

  1. Copy the external address of the created virtual machine and enter it in the browser's address bar

  2. Use the login and password provided in EC2 serial console for login

Make sure to configure the Firewall on the MikoPBX

Use the to navigate the menu, and press Enter to select an option. You can also press the corresponding number on the .

Installation .

Installation .

Installation .

Installation in a .

For stable PBX operation, you need to configure the network through the Network and Firewall → Network Interface section. Detailed instructions for these settings can be found .

In MikoPBX, all local subnets can be defined in the Network and Firewall → Firewall section. The firewall is intended to restrict access to the PBX based on traffic type and subnets. Follow the setup instructions .

Fail2Ban blocks IP addresses exhibiting unusual activity; it can reduce the rate of failed authentication attempts and helps protect your PBX from hacking. Instructions to help with the setup can be found .

After completing the initial PBX setup, you can proceed to create accounts for your employees. This will assist you.

After adding employees, you need to connect providers to your PBX. Instructions for this section can be found . Instructions with examples of configuring real providers can be found .

You can read more about Modules in MikoPBX in .

Information on registering in the MikoPBX Marketplace can be found .

Sign in to the service Amazon Web Services

MikoPBX in AWS Marketplace:

In the AWS Marketplace AMIs section select the image by clicking the Select button

Log in to the platform at

MikoPBX on Google Cloud Marketplace:

Select the image

First, log in to the Microsoft Azure portal

Sign in to the service Amazon Web Services

arrow keys
numpad
on a standalone computer
in a virtual machine
using cloud services
Docker container
here
here
here
instruction
here
here
Incoming Call Routing
Outbound Call Routing
Call Queues
IVR Menu
Conferences
this article
here
https://aws.amazon.com
https://aws.amazon.com/marketplace/pp/prodview-ota6fb2tftuhw
MikoPBX
AWS
Microsoft Azure
Google Cloud
Hetzner cloud (In dev)
Digital Ocean
Alibaba Cloud
Vultr
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg" 
sudo installer -pkg AWSCLIV2.pkg -target /
vi trust-policy.json
{
"Version": "2012-10-17",
    "Statement":
    [
        {
            "Effect": "Allow",
            "Principal": { "Service": "vmie.amazonaws.com" },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals":{"sts:Externalid": "vmimport"}
            }
        }
    ]
}
{
    "Version":"2012-10-17",
    "Statement":
    [
        {
        "Effect": "Allow",
        "Action": [
            "s3:GetBucketLocation",
            "s3:GetObject",
            "s3:ListBucket"
            ],
        "Resource": [
            "arn:aws:s3:::",
            "arn:aws:s3:::/*"
            ]
        },
        {
        "Effect": "Allow",
        "Action": [
            "ec2:ModifySnapshotAttribute",
            "ec2:CopySnapshot",
            "ec2:RegisterImage",
            "ec2:Describe*"
        ],
        "Resource": "*"
        }
    ]
}
#!/bin/bash

# Default variable definition
DEFAULT_IMAGE=""
DEFAULT_BUCKET=""
DEFAULT_DESCRIPTION="MikoPBX the best open source PBX on asterisk"
DEFAULT_NAME="MikoPBX 2024.1.40-dev"

# Overriding variables with environment variable values, if set
IMAGE="${IMAGE:-$DEFAULT_IMAGE}"
BUCKET="${BUCKET:-$DEFAULT_BUCKET}"
DESCRIPTION="${DESCRIPTION:-$DEFAULT_DESCRIPTION}"
NAME="${NAME:-$DEFAULT_NAME}"

# JSON file for import-snapshot command
JSON_FILE="disk_container.json"

# Creating JSON file
cat <<EOF> ${JSON_FILE}
{
  "Description": "${DESCRIPTION} image",
  "Format": "raw",
  "UserBucket": {
	"S3Bucket": "${BUCKET}",
	"S3Key": "${IMAGE}"
  }
}
EOF

# Importing the snapshot
IMPORT_TASK_ID=$(aws ec2 import-snapshot --description "${DESCRIPTION} image" --disk-container "file://${JSON_FILE}" --query 'ImportTaskId' --output text)

echo "Import task started with ID: $IMPORT_TASK_ID"

# Waiting for snapshot import to complete
while true; do
	STATUS=$(aws ec2 describe-import-snapshot-tasks --import-task-ids $IMPORT_TASK_ID --query 'ImportSnapshotTasks[0].SnapshotTaskDetail.Status' --output text)
	echo "Current status: $STATUS"
	if [ "$STATUS" == "completed" ]; then
		break
	fi
	sleep 30
done

# Getting SnapshotId
SNAPSHOT_ID=$(aws ec2 describe-import-snapshot-tasks --import-task-ids $IMPORT_TASK_ID --query 'ImportSnapshotTasks[0].SnapshotTaskDetail.SnapshotId' --output text)

# Registering AMI
AMI_ID=$(aws ec2 register-image \
	  --name "$NAME" \
	  --description "$DESCRIPTION" \
	  --architecture x86_64 \
	  --sriov-net-support simple \
	  --virtualization-type paravirtual \
	  --ena-support \
	  --boot-mode legacy-bios \
	  --root-device-name "/dev/sda1" \
	  --block-device-mappings "[{\"DeviceName\": \"/dev/sda1\", \"Ebs\":{\"DeleteOnTermination\":true, \"VolumeSize\":1, \"SnapshotId\":\"$SNAPSHOT_ID\"}}, {\"DeviceName\": \"/dev/sdb\", \"Ebs\":{\"VolumeSize\":50}}]" \
	  --query 'ImageId' \
	  --output text)

echo "AMI created with ID: $AMI_ID"
aws configure
aws iam create-role --role-name vmimport --assume-role-policy-document "file://trust-policy.json"
aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document "file://role-policy.json"
sh import-image.sh
Button for creating a new VM
Parameters of the new VM
Parameters of the new VM
Parameters of the new VM
Summary configuration
"Settings" button
Creating a new hard disk
Creating a new hard disk
Creating a new hard disk
Creating a new hard disk
Creating a new hard disk
Selecting a new hard disk
Mounting an image
Mounting an image
List of MikoPBX images option. You need .iso image!
"Network" tab
Button for starting the created VM
Installation process
Installation process
Installation process
Installation process
Installation process
MikoPBX Console Page
IP address of your MikoPBX
Web-interface of MikoPBX
Button for creating a new VM
Choosing image page
Choosing verison of OS for VM
Choosing the boot firmware for VM
Summary config
MikoPBX Console
"[3] Reboot the system" element
Shutting down the system
Settings button
Add device button
New Hard Disk
Parameters for new hard drive
Starting button
Installation process
Installation process
Installation process
Installation process
MikoPBX Console
IP address of MikoPBX
Name, Type and Version of the virtual machine
Size of RAM and memory for the system hard drive
Controller type and adapter type
"Boot options" section
Loading a system image
System is loaded in recovery mode
[8] Install - for installation process
Available disks for the system
Available disks for the storage
IP-Address of the MikoPBX
Web interface login window
Configuring Virtual Machine
Configuring Virtual Machine
Configuring Virtual Machine
Configuring Virtual Machine
Configuring Virtual Machine
Configuring Virtual Machine
Configuring Virtual Machine
Adding second hard disk
Adding second hard disk
Adding second hard disk
Adding second hard disk
Adding second hard disk
"Connect..." button
Installing MikoPBX
Installing MikoPBX
Installing MikoPBX
Installing MikoPBX
MikoPBX IP-address
MikoPBX web-interface authorization page
Example of MikoPBX Console
MikoPBX login window
Cover

AWS deployment guide

Detailed instruction on how to create an AMI image

Cover

AWS Marketplace

Instructions for installing a ready-made image from AWS Marketplace

Cover

Google Cloud Marketplace

Instructions for installing a ready-made image from Google Cloud Marketplace

Cover

Google Cloud deployment guide

Detailed instructions for uploading MikoPBX from an image based on a .vhd file from the distribution

The "Create a New Virtual Machine" element
Selecting the type of virtual machine to create
Selecting the system installation source for the virtual machine being created
Selecting an operating system and version for the virtual machine being created
Specifying the name and path for the virtual machine being created
Specifying parameters for the system hard disk for the virtual machine being created
The final configuration of the machine being created.
Virtual Machine Settings Section
Button for adding a new system element
Selecting the type of a new system element
Selecting a disk type
Selecting the "Create a new virtual disk" option
Specifying parameters for the disk being created
Name for the second hard drive
Setting up a network interface
Button to start the virtual machine
Loaded MikoPBX from optical disk
Selecting a disk for the system
Selecting a disk for storing call recordings
MikoPBX successfully installed
MikoPBX IP address
MikoPBX WEB interface authorization page
Loading the MikoPBX image
Configuring virtual machine
Configuring virtual machine
Configuring virtual machine
Configuring virtual machine
Configuring virtual machine
Configuring virtual machine
Configuring virtual machine
Configuring virtual machine
Configuring virtual machine
Installing MikoPBX
Installing MikoPBX
Installing MikoPBX
Installing MikoPBX
MikoPBX IP-address
MikoPBX WEB-interface authorization page
MikoPBX IP address for connecting to the WEB interface
Authorization page in the web interface
First authorization in the MikoPBX WEB interface

Hetzner cloud (In dev)

https://console.cloud.google.com/
https://console.cloud.google.com/marketplace/product/mikopbx-public/mikopbx
MikoPBX
https://portal.azure.com/
https://aws.amazon.com

Google Cloud deployment guide

MikoPBX Installation deployment Guide using Google Cloud

Let's start configuring

For quick and convenient navigation on the Google Cloud platform, use the search pane

Creating storage

  1. Open Navigation menu / Products & solutions / Storage / Cloud Storage

  2. On the Cloud Storage tab select Create

  3. Enter the storage name, for example miko-images

  4. Use default values for other fields

  5. After entering the values, click the Create button

  1. Open the created miko-images storage

  2. On the opened tab select UPLOAD FILES

  3. Upload the file from the MikoPBX distribution with the .vhd extension

  4. Wait for the file upload to complete

Connecting Cloud Build API

  1. Open Navigation menu / APIs & Services / Library / Google Enterprise API / Cloud Build API

  2. On the opened tab select ENABLE

Check the roles for the Cloud Build service account:

  1. Select your Google Cloud project

  2. Check the Include Google-provided role grants checkbox

  3. In the table, find the row with the email address ending with @cloudbuild.gserviceaccount.com

  4. Select Edit principal

  5. The roles to be granted to the Cloud Build service account are Compute Admin and Service Account User

If the required roles are not present, add them and click SAVE

Connecting Compute Engine API

  1. Open Navigation menu / APIs & Services / Library / Google Enterprise API / Compute Engine API

  2. On the opened tab select ENABLE

Creating an image

  1. Open Navigation menu / Products & solutions / Compute / Compute Engine

  2. Go to the Storage / Images section

  3. Select CREATE IMAGE to create a new image

  4. Enter the image name, for example mikopbx-new-image

  5. Specify the source type - Virtual disk (VMDK, VHD)

  6. Select Virtual disk file under the BROWSE link, Browse / miko-images / .vhd

  7. Uncheck the Install guest packages checkbox

  8. In the Operating system on virtual disk field specify - No operating system. Data only.

  9. Use default values for other fields

  10. After entering the values, click the Create button and wait for the image creation to complete

Creating a virtual machine

  1. In the Compute Engine tab go to the Virtual machines / VM Instance section

  2. Select CREATE INSTANCE

  3. Enter the virtual machine name, for example mikopbx-vm

  1. In the Machine configuration / General purpose table select Series - N1

  1. In the Machine type section choose Shared-core / f1-micro from the dropdown menu

To deploy the PBX use two disks:

  • A 1 Gb disk for the main system

  • A 50+ Gb disk for storing call recordings

  1. In the Boot disk section select CHANGE

  2. On the opened tab go to CUSTOM IMAGES

  3. In the Image field select the previously created mikopbx-new-image

  4. Use default values for other fields on the tab

  5. Click the SELECT button

  1. In the Advanced options / Disks section select ADD NEW DISK

  2. On the opened tab enter the disk name for data storage, for example disk-storage-mikopbx

  3. Specify the disk size of at least 50GB

  4. Use default values for other fields on the tab

  5. Click the SAVE button

If you have an SSH key, proceed as follows:

  1. In the Advanced options / Security / MANAGE ACCESS section, select ADD ITEM

  2. Specify it in the SSH key field

If you don't have an SSH key, proceed directly to step 18

  1. Use default values for other fields

  2. After entering the values, click the CREATE button

Configuring ports for incoming connections

  1. Open Navigation menu / VPC network / Firewall

  2. Select CREATE FIREWALL RULE to create a new rule for incoming connections

  3. Enter the name of the new rule, for example internal-allow

  1. Specify Direction of traffic - Ingress

  2. Specify Targets

  3. From the Source filter dropdown menu select IPV4 ranges and in the Source IPv4 ranges field enter 0.0.0.0/0

  1. In the Protocols and ports section check the TCP (Ports - 0-65535) and UDP (Ports - 0-65535) checkboxes

  1. Use default values for other fields

  2. After entering the values, click the CREATE button

Make sure to configure the Firewall on the MikoPBX

Starting MikoPBX

  1. Open the Compute Engine tab and go to the Virtual machines / VM Instance section

  2. Go to the created virtual machine mikopbx-vm

  3. On the opened tab navigate to Logs / Serial port 1 (console)

  1. Copy the external address of the created virtual machine and enter it in the browser's address bar

  2. For login use the login and password provided in Serial port 1 (console)

Приступим к настройке

Для быстрого и удобного поиска на платформе Google Cloud используйте панель поиска

Создание хранилища

  1. Откройте Navigation menu / Products & solutions / Storage / Cloud Storage

  2. На вкладке Cloud Storage выберите Create

  3. Введите имя хранилища, например miko-images

  4. Для других полей используйте значения по умолчанию

  5. Завершив ввод значений, нажмите кнопку Create

  6. Откройте созданное хранилище miko-images

  7. На открывшейся вкладке выберите UPLOAD FILES

  8. Загрузите файл из дистрибутива MikoPBX с расширением .vhd

  9. Дождитесь окончания загрузки файла

Подключение Cloud Build API

  1. Откройте Navigation menu / APIs & Services / Library / Google Enterprise API / Cloud Build API

  2. На открывшейся вкладке выберите ENABLE

Проверьте роли учетной записи службы Cloud Build, для этого

  1. Выберите свой проект Google Cloud

  2. Установите флажок Include Google-provided role grants

  3. В таблице найдите строку с адресом электронной почты, заканчивающимся на @cloudbuild.gserviceaccount.com

  4. Выберите Править (Edit principal)

  5. Роли, которые должны быть предоставлены учетной записи службы Cloud Build, - Сompute Admin и Service Account User

Если нужных ролей нет, добавьте и нажмите SAVE

Подключение Compute Engine API

  1. Откройте Navigation menu / APIs & Services / Library / Google Enterprise API / Compute Engine API

  2. На открывшейся вкладке выберите ENABLE

Создание образа

  1. Откройте Navigation menu / Products & solutions / Compute / Compute Engine

  2. Перейдите в раздел Storage / Images

  3. Выберите CREATE IMAGE для создания нового образа

  4. Введите имя образа (Name), например mikopbx-new-image

  5. Укажите тип источника (Source) - Virtual disk (VMDK, VHD)

  6. Выберите Virtual disk file по ссылке BROWSE, *Browse / miko-images / .vhd

  7. Уберите флажок Install guest packages

  8. В поле Operating system on virtual disk укажите - No operating system. Data only.

  9. Для других полей используйте значения по умолчанию

  10. Завершив ввод значений, нажмите кнопку Create и дождитесь окончания создания образа

Создание виртуальной машины

  1. Во вкладке Compute Engine перейдите в раздел Virtual machines / VM Instance

  2. Выберите CREATE INSTANCE

  3. Введите имя виртуальной машины (Name), например mikopbx-vm

  4. В таблице Machine configuration / General purpose ****выберите ****Series - N1

  5. В разделе Machine type в выпадающем меню выберите Shared-core / f1-micro

  6. В разделе Boot disk выберите CHANGE

  7. На открытой вкладке перейдите к CUSTOM IMAGES

  8. В поле Image выберите созданный ранее образ mikopbx-new-image

  9. Для других полей на вкладке используйте значения по умолчанию

  10. Нажмите кнопку SELECT

  11. В разделе Firewall ****разрешите HTTP трафик, установите флажок Allow HTTP traffic

  12. В разделе Advanced options / Disks выберите ADD NEW DISK

  13. На открытой вкладке введите имя диска для хранения данных (Name), например disk-storage-mikopbx

  14. Укажите размер диска (Size) не менее 50Гб

  15. Для других полей на вкладке используйте значения по умолчанию

  16. Нажмите кнопку SAVE

Если у вас есть ключ SSH, выполните следующее

  1. В разделе Advanced options / Security / MANAGE ACCESS выберите ADD ITEM

  2. Укажите его в поле SSH key

Если у вас есть нет ключа SSH, сразу перейдите к пункту 19

  1. Для других полей используйте значения по умолчанию

  2. Завершив ввод значений, нажмите кнопку CREATE

Настройка портов для входящих соединений

  1. Откройте Navigation menu / VPC network / Firewall

  2. Выберите CREATE FIREWALL RULE для создания нового правила для входящего соединения

  3. Введите имя нового правила (Name), например http-80

  4. Укажите Direction of traffic - Ingress

  5. Укажите Targets

  6. Из выпадающего меню в поле Source filter выберите IPV4 ranges и в поле Source IPv4 ranges укажите 0.0.0.0/0

  7. В разделе Protocols and ports установите флажок TCP и в поле Ports укажите 80

  8. Для других полей используйте значения по умолчанию

  9. Завершив ввод значений, нажмите кнопку CREATE

  10. Аналогично создайте правило для HTTPS. Укажите имя, Direction of traffic - Ingress, Targets, Source filter - IPV4 ranges, Source IPv4 ranges - 0.0.0.0/0, Protocols and ports - TCP, Ports - 443

  11. Аналогично создайте правило для SIP сигнализации TCP. Укажите имя, Direction of traffic - Ingress, Targets, Source filter - IPV4 ranges, Source IPv4 ranges - 0.0.0.0/0, Protocols and ports - TCP, Ports - 5060

  12. Аналогично создайте правило для SIP сигнализации UDP. Укажите имя, Direction of traffic - Ingress, Targets, Source filter - IPV4 ranges, Source IPv4 ranges - 0.0.0.0/0, Protocols and ports - UDP, Ports - 5060

  13. Аналогично создайте правило для передачи звука RTP. Укажите имя, Direction of traffic - Ingress, Targets, Source filter - IPV4 ranges, Source IPv4 ranges - 0.0.0.0/0, Protocols and ports - UDP, Ports - 10000-10200

Запуск АТС MikoPBX

  1. Откройте вкладку Compute Engine перейдите в раздел Virtual machines / VM Instance

  2. Скопируйте External IP созданной виртуальной машины

  3. Введите в строке браузера External IP

  4. Откройте созданную виртуальную машину

  5. Скопируйте Instance Id - это пароль для входа в АТС по умолчанию

  6. Логин для входа по умолчанию - admin

Alibaba Cloud

Installing MikoPBX using the Alibaba Cloud platform

This guide applies to MikoPBX version 2024.2.135 and later!

This step-by-step guide will walk you through installing MikoPBX on the Alibaba Cloud platform.

Uploading the Image to Alibaba Cloud

Creating a Bucket

  1. Go to Buckets.

  1. Click Create Bucket:

  1. Specify the following:

  • Bucket name – a custom name for your storage.

  • Region – pick the region where your image will be stored.

The bucket region for your image must match the region of your future virtual machine!

Click OK.

  1. Go to your newly created bucket by clicking its name in the Buckets section:

  1. Click Upload object and upload the previously downloaded .raw disk image file (leave other parameters at default).

  1. Once the disk image file is uploaded, copy its link. Click View Details to the right of the file name; in the opened menu, copy the URL field.

Creating the Image

  1. Click Import Image:

  1. Select Linux Operating System and click Next.

  2. Enter/select the following image parameters:

    • Image File URL – Paste the link to the disk image file you uploaded.

    • Image Name – A custom, unique name for your image.

    • OS Type – Linux

    • OS Version – Others Linux

    • Architecture – 64-bit OS

    • Uncheck "Check After Import"

Click OK to create the image. Wait until the process finishes (the Status will show Available).

Creating an SSH Key Pair

Next, create and add an SSH key pair in Alibaba Cloud.

  1. In the ECS Console, go to Network Security → Key Pairs:

  1. Click Create SSH Key Pair:

  • Name – A custom name for your key pair.

  • Creation Mode – Import

  • Public Key – Paste your public key, generated earlier.

  • Resource Group – Choose your resource group.

Click OK to create the key pair in the cloud.

Creating a Security Group

Before creating the virtual machine, you must set up a security group (firewall).

  1. Go to Network & Security → Security Groups:

  1. Click Create Security Group:

  1. Specify the following security group parameters:

  • Security Group – A custom name for your security group.

  • Network – Your selected network. If it doesn’t exist yet, click "Create VPC" to the right.

  • Security Group – Basic Security Group.

  • Resource Group – Your resource group.

  • Allow all inbound connections (see example below). Outbound is allowed by default.

Click Create Security Group.

Creating the Virtual Machine

  1. Go to Instances & Images → Instances:

  1. Click Create Instance to create a new virtual machine:

  1. Select your VM parameters:

  • Billing Method – Choose how you’ll pay for the VM.

  • Region, Network, and Zone – Select the region and zone to match your needs.

  • Instance – Pick a configuration for your VM.

  1. Configure additional VM parameters:

  • Image – Custom Images → Choose the previously imported image.

  • Storage – Select the type and size of the System Disk (20 GB is the minimum for Alibaba Cloud).

  • Add a second disk by clicking Add Data Disk, specifying its type and size.

We recommend a minimum of 50GB for call recordings.In this guide we use 30GB as an example.

  1. Choose the network parameters for your VM. The security group created earlier will be assigned automatically:

  1. Click Create Order.

Connecting to the MikoPBX Console

In the Instances section, open the newly created VM by clicking its name.

Connecting via Built-in Cloud Console

  1. Click Connect.

  1. Select VNC. A new tab will open in your browser with console access.

Connecting via SSH

Enter the following command to connect via SSH:

ssh -i C:\Users\username\.ssh\id_ed25519 root@ip-adress

Replace:

  • C:\Users\username\.ssh\id_ed25519 with the path to your SSH key,

  • root if you changed the default user when creating the VM,

  • ip-adress with the external IP address of your MikoPBX instance.

You will then connect via SSH:

First Login to the Web Interface

On the VM’s main page, you’ll see important parameters for logging into the MikoPBX web interface.

Paste the IP address into your browser’s address bar to access the MikoPBX web interface login page.

Login credentials:

  • Username: admin

  • Password: Your Virtual Machine’s ID

Vultr

Installing MikoPBX using the Vultr cloud platform

This guide applies to MikoPBX version 2024.2.138 and later!

This guide provides a step-by-step process for installing MikoPBX on the Vultr cloud platform.

Uploading the Image to Vultr

Uploading the File to Storage

First, you need to upload the image to the cloud platform.

  1. Navigate to "Cloud Storage" → "Object Storage":

  1. Create a new storage resource by clicking "Add Object Storage":

  1. Select the type of storage (it’s recommended to use the basic option, as you only need it to store the disk image). Also provide a name.

  2. Click on your newly created storage resource:

  1. Go to the "Buckets" tab and create a new bucket with a custom name.

  1. The storage information will display S3 connection details.

  1. Next, connect to your storage via WinSCP. Open WinSCP and select "New Site":

  1. Enter the following parameters:

  • File protocol – Amazon S3

  • Encryption – TLS/SSL Implicit encryption

  • Port number – 443

  • Host Name, Access key ID, and Secret access key – from the storage information

Click "Login".

  1. Upload the .iso disk image file to the storage.

  1. Return to the Vultr interface and go to your bucket’s directory.

  1. Click the three dots to the right of the file name, then "Change Access". Grant access by toggling the switch.

Importing the ISO

  1. Click the three dots to the right of the file name and select "Copy URL".

  1. Navigate to "Orchestration" → "ISOs":

  1. Click "Add ISO":

  1. Paste the link to your previously uploaded file and click "Upload".

Adding an SSH Key Pair

  1. Go to "Account" → "SSH Keys". Click "Add SSH Key":

  1. In the interface for adding the key pair, provide a custom name and paste your public SSH key.

    Click "Add SSH Key".

Creating a Virtual Machine

  1. Go to "Products" → "Compute":

  1. Click "Deploy Server":

  1. In the next section, select the region and configuration for your virtual machine.

  1. Continue configuring the server:

  • Under ISO/iPXE, select the previously uploaded ISO.

  • Select the SSH key pair you created.

Click "Deploy".

Creating a Second Disk

After the server is created, power it off.

  1. Go to "Cloud Storage" → "Block Storage":

  1. Click "Add Block Storage":

  1. Select the disk type, region (same as the VM), size, and a custom name.

We recommend at least 50GB for storing call recordings. This guide uses 30GB as an example.

  1. Go to the management page for the newly created block storage. Attach the volume to your virtual machine using the "Attach to:" option.

Installing the System

  1. Go to your virtual machine management page.

  1. Open the console by clicking the relevant button:

  1. You will enter the built-in console.

  1. Navigate to "[8] Install".

  2. Select the disk to be used as the system disk. Confirm by typing "y" and pressing "Enter":

  1. Select the disk for storing call recordings. The system will reboot.

  2. Go to "Settings" for your virtual machine and then "Custom ISO". Click "Remove ISO".

At this point, MikoPBX is installed and ready to use.

Connecting to the Web Interface

  1. In your browser, enter the IP adress of your virtual machine. You can find it in the MikoPBX console.

  1. Log in using the following credentials:

  • Username: admin

  • Password: The VM ID, which looks like "150dd137-a0e2-45f6-baf9-ddc15a600d60" and can be found in the address bar (screenshot below).

Docker container

MikoPBX Installation Guide using Docker container

The "Host system" must run on Linux 5+. Tested on Debian 11, Ubuntu 21.04, and Ubuntu Server 22.04 LTS.

MikoPBX can be run in Docker using two main methods. The first method involves running the container directly using a Docker command with the necessary parameters. The second method involves using Docker Compose, which simplifies managing multi-container applications and allows the entire configuration to be described in a yaml file, making the deployment and maintenance of the system more convenient.

Digital Ocean

Installing MikoPBX using the DigitalOcean Cloud Platform

This guide applies to MikoPBX version 2024.2.111 and newer!

In this guide, we will perform a step-by-step installation of MikoPBX using the DigitalOcean cloud platform.

Uploading the Image to DigitalOcean

  1. Go to "Manage" → "Backups & Snapshots":

  1. Go to "Custom Images" → "Import via URL":

  1. Paste the link to the .raw disk image file you copied earlier.

  2. Enter a name for the image, select the region where it will be uploaded (this should match the region of your future virtual machine), and choose "Unknown" as the operating system type.

    Click "Upload image".

Wait for the image upload to complete.

Creating a Virtual Machine in the Cloud

  1. Go to DigitalOcean’s main page:

  1. To create a new virtual machine (Droplet), go to "Create" → "Droplets":

  1. Select a region and datacenter for your virtual machine:

  1. Next, choose the previously uploaded image and configuration for your virtual machine:

  1. Go to the "Additional Storage" tab. Here, you can add a second disk that will be used for call recordings. To do this, click "Add volume" and specify the parameters for the new disk.

We recommend a minimum size of 50GB for the call recordings disk.

  1. Go to "Choose authentication method." Here, you need to select "SSH Key" and add the key pair for SSH authentication. For more information on generating SSH keys, see:

  1. Click "Create Droplet."

Connecting to the Console and First Login to the Web Interface

Connecting via DigitalOcean Console

  1. Go to the page of the newly created Droplet. Wait for it to start. Then connect via the built-in DigitalOcean console (shown in the screenshot).

  1. After the system boots, open the web interface using the external IP address shown in the console (external).

  1. Paste the machine’s IP address into your browser’s address bar. When you reach the MikoPBX login page, use the following credentials:

  • Username: admin

  • Password: The Droplet ID, which you can find in the browser’s address bar:

Connecting via SSH

The default login for SSH on a DigitalOcean VM is do-user.

  1. Open PowerShell and run the following command:

ssh -i C:\Users\<Username>\.ssh\id_ed25519 do-user@mikopbxipadress

Adjust:

  1. C:\Users\<Username>\.ssh\id_ed25519 to the path of your local SSH key.

  2. do-user if you changed the root user during VM creation.

  3. mikopbxipadress to the IP address of your station (IPv4 in the VM management interface).

After pressing Enter, you will be authenticated via SSH and arrive at the MikoPBX console menu.

Running MikoPBX using docker compose

MikoPBX Installation Guide using Docker compose

To work with MikoPBX in a container, you need to install Docker and Docker Compose following the instructions

Docker compose launch option

Here is an example of a docker-compose.yml file that can be used to manage your MikoPBX container via Docker Compose:

Save the contents into a file named docker-compose.yml, make the necessary adjustments, and launch MikoPBX using the command:

Running Multiple MikoPBX Instances on One Host

Mode Without Network Isolation Between Host and Containers (–net=host)

It is also possible to organize the launch of multiple MikoPBX containers on a single host. However, you need to consider Docker's port handling features. If the –net=host mode is not used, it will lead to a high load on the host system's CPU because Docker creates a separate rule in Iptables for each allocated port.

With the –net=host mode enabled, you need to manually monitor the distribution of available ports between the running containers and built-in applications. For instance, to run two MikoPBX containers on one host, you can use the following configuration file:

Save the contents into a file named docker-compose.yml, make the necessary adjustments, and launch MikoPBX using the command:

Network Bridge Mode (–net=bridge)

There is an option to launch MikoPBX containers in the –net=bridge mode. However, as mentioned above, to use this mode you either need to significantly limit the range of RTP ports or open them on the host machine without using Docker's capabilities.

For this, you will need to write a small script to determine the name of the current bridge interface and the IP address of each container. After running Docker Compose, you will then need to add the necessary iptables rules for the RTP port range as follows:

Let's describe several containers in the docker-compose.yaml file, specify different ports for the web interface, SIP ports, and ranges of RTP ports to ensure they do not overlap.

Creating a directory for scripts

Save the start-multiple-mikopbx.sh and docker-compose.yaml files into this folder.

Install the necessary dependencies for the script.

Navigate to our folder, add execution rights and launch our script.

While waiting for the containers to start, check the firewall settings on the host, and if necessary, open the ports specified in our docker-compose.yaml file, specifically:

  • TCP/UDP ports 5060 and 6060 for SIP

  • UDP ranges 10000-10800 and 20000-20800 for RTP voice transmission

  • TCP ports 8443 and 9443 for HTTPS protocol, for web interface operation.

Access each station in turn at the addresses:

  • https://<host machine IP>:8443

  • https://<host machine IP>:9443

To access the web interface of the first MikoPBX, use the login admin and the password mikopbx-first-password

To access the web interface of the second MikoPBX, use the login admin and the password mikopbx-second-password

Each machine should have NAT mode enabled, indicating that the container is behind a router in the network interface settings. If the stations will be used within a local network, then in the external IP field, enter the local IP address of the host machine, otherwise its public IP address.

Important note! One of our containers uses port forwarding from SIP port changing its value from 5060 to 6060. In this case, for the system to function correctly, you need to add the external value of the SIP port in the NAT settings in the network interfaces section of MikoPBX. This setting can also be made by setting the corresponding value of the environment variable EXTERNAL_SIP_PORT=6060 in the docker-compose file.

With that, the setup is complete, and you can configure accounts and make calls.

Environment variables for configuring MikoPBX

Below are some of the environment variables that will allow you to adjust the MikoPBX ports and settings used.

  • SSH_PORT - port for SSH (22)

  • WEB_PORT - port for the web interface via HTTP protocol (80)

  • WEB_HTTPS_PORT - port for the web interface via HTTPS protocol (443)

  • SIP_PORT - port for connecting a SIP client (5060)

  • TLS_PORT - port for connecting a SIP client with encryption (5061)

  • RTP_PORT_FROM - beginning of the RTP port range, voice transmission (10000)

  • RTP_PORT_TO - end of the RTP port range, voice transmission (10800)

  • IAX_PORT - port for connecting IAX clients (4569)

  • AMI_PORT - AMI port (5038)

  • AJAM_PORT - AJAM port used for connecting the telephony panel for 1C (8088)

  • AJAM_PORT_TLS - AJAM port used for connecting the telephony panel for 1C (8089)

  • BEANSTALK_PORT - port for the Beanstalkd queue server (4229)

  • REDIS_PORT - port for the Redis server (6379)

  • GNATS_PORT - port for the gnatsd server (4223)

  • ID_WWW_USER - identifier for www-user (can be set with the expression $(id -u www-user), where www-user is NOT a root user)

  • ID_WWW_GROUP - group identifier for www-user (can be set with the expression $(id -g www-user), where www-user is NOT a root group)

  • WEB_ADMIN_LOGIN - login for Web interface access

  • WEB_ADMIN_PASSWORD - password for Web interface access

Docker installation and creating a user and directories

Preparation guide for MikoPBX using Docker

Installing Docker and Docker Compose on Ubuntu 22.04

Before working with Docker, you need to install Docker and Docker Compose themselves. Here's how to do it:

Creating a user and directories on the host system

Before creating the container on the host machine, it's necessary to create a user and group with limited permissions, as well as a folder for storing configuration settings and call recordings

Useful commands

Command to connect to the PBX console:

Command to connect to the PBX console menu:

Connecting to sngrep for SIP analysis

Telephony

Description of the MikoPBX telephony section

The "Telephony" chapter in the MikoPBX documentation contains detailed information and instructions related to setting up and using telephony in the system.

Extensions

Extensions in MikoPBX are individual users of the system who are assigned internal numbers for making and receiving calls. They have personal accounts that allow you to configure access rights, call forwarding and other personal settings in the system.

In this article, you will find detailed documentation on adding new employees to the station, setting up their rights and profiles. In addition, information about their additional parameters.


Call queues

Call queues in MikoPBX are a feature that allows you to distribute incoming calls between a group of operators, holding calls in a queue until an operator becomes available. This ensures efficient management of a large call flow and improves customer service.

In this article, you will find detailed documentation on creating and configuring such queues.


IVR Menu

IVR menu in MikoPBX is an interactive voice menu that allows callers to interact with the phone system by pressing keys or using voice commands. It automatically routes calls to the right departments or employees, improving call handling efficiency and customer service.

In this article, you will find documentation on creating and configuring an IVR menu.


Conferences

Conferences in MikoPBX are a feature that allows you to organize group phone calls with multiple participants at the same time. It allows you to hold group discussions, meetings and appointments over the phone, improving communication both within the company and with external partners.

In this article, you will find documentation on creating and configuring conference rooms.


Sound files

Sound files in MikoPBX are audio recordings that are used by the system to play various messages, such as greetings, announcements, IVR menu instructions or waiting signals. They allow you to personalize the audio content that callers hear, improving interaction with the system and providing the necessary information.

In this article, you will find detailed information about them, as well as how to add and edit them.


Call detail records (CDR)

Call detail records in MikoPBX is a log that stores information about all incoming and outgoing calls through the system. It provides detailed data about each call, including time, duration, participant numbers and status, which allows you to analyze communications and optimize the operation of the company's telephone network. In this article, you will find information about storing call records and their filters.

Call queues

Creating and configuring call queues.

Queues allow you to:

  1. Distribute phone calls among a group of employees (agents): You can create a call queue and add multiple employees to it. When a call comes in, the system automatically routes it to an available employee in the queue, ensuring a more even distribution of workload and increasing call handling efficiency.

  2. Hold the customer on the line when all employees are busy: If all employees in the queue are occupied with other calls, the customer will be placed on hold until one of the employees becomes available. This helps avoid call abandonment and ensures better customer service.

  3. Notify the customer of their position in the queue and approximate wait time: While the customer is in the queue, the system can provide information about their current position in the queue and an estimated wait time. This helps keep the customer informed and improves their waiting experience.

  4. Display the queue name along with the customer's number on the employee's phone: When an employee answers a call from the queue, their phone displays not only the customer's number but also the name of the corresponding queue. This helps the employee handle calls more effectively and provide personalized service.

To configure call queues in MikoPBX, go to the "Telephony" section and select "Call Queue." Here, you can create and customize your queues according to your business requirements and customer service needs.

The default call duration for a queue is set to 300 seconds (5 minutes). After this time limit is reached, the call will be automatically terminated. To bypass this limitation, you can configure "Scenario 1" as described in the instructions for "Call Routing on Failures".

Main settings

To add a new queue, perform the "Add a new call queue" action

In the queue creation form or dialog, you will find the following fields:

  • Queue Name: Enter a name for the queue. This name will be used for reference when setting up call routing rules.

  • Note: Provide a brief description or note about the queue. This information will be visible in the queue list, allowing you to provide additional details or instructions.

Queue Agents

In the Queue Agents section, you can add an arbitrary number of employees (queue agents) and specify a call distribution strategy.

Here are the options for queue strategy:

  • Ring All: Calls are distributed to all available agents until someone answers the call (default behavior).

  • Least Recent: The call is routed to the agent who has been idle for the longest time within the queue.

  • Fewest Calls: The call is routed to the agent who has handled the fewest number of calls within the queue.

  • Random: A random available agent within the queue is selected to receive the call.

  • Round Robin: The call is distributed to each agent in a sequential manner, cycling through the list of agents.

  • Memory Hunt: The system remembers the last agent who answered a call and starts the distribution from that agent onwards.

When setting up a queue, you can choose one of these strategies to determine how calls are distributed among the agents in the queue. The strategy you select will depend on your specific call handling requirements and the desired distribution behavior

Advanced Settings

In this section, you can provide additional information:

  • Phone number for this queue - you can call the queue using this number from any internal employee extension. Calls can also be transferred to this number.

  • Short name for the queue - for display before the CallerID on the telephone device of the subscriber, for example, "consult."

Queue settings for agents

  • Time attempt call to agents - the duration in seconds for which a call will ring on an individual agent's phone. After this time elapses, the call to the agent will be logged as a missed call in the call history. Once the ring time is over, the call will be routed to the next available agent based on the selected strategy.

  • The rest time of the agent after the processing of the call, before starting to accept new calls - the duration in seconds that is counted from the moment an agent finishes a call from the queue until they are ready to receive new calls. This period allows agents to update notes, complete necessary tasks, or take a short break before being assigned another call.

  • Receive New Calls During A Call - this toggle switch enables or disables the ability to receive new calls while the agent is already on a call. When enabled, agents can handle multiple calls simultaneously.

Queue settings for the caller

  • What the caller hears while waiting - During the wait for their call to be answered, the caller can hear either hold music or a ringing tone.

  • Background Music (MOH) - You can specify a unique audio file to be played to the caller during the wait, such as promotional materials.

  • Notify about current queue position - If all operators (queue agents) are occupied, enabling this toggle switch allows you to notify the caller about their position in the queue. If the Additional Audio Announcement option is activated, this announcement will supplement the information about the position.

  • Notify about estimated hold time - If all operators (queue agents) are occupied, enabling this toggle switch allows you to inform the caller about the approximate wait time for a call to be answered. If the Additional Audio Announcement option is activated, this announcement will supplement the information about the estimated wait time.

  • Additional notification - A sound message is played only if all participants in the queue are occupied.

  • Time in seconds to repeat all alerts periodically - Describes the interval at which to announce the queue position, wait time, and announcement.

Call routing in case of failures

  • The script #1 - In this scenario, you can configure the maximum allowable wait time for a client in the queue. If none of the queue agents can answer the client within the specified time, you can set a number to which the call will be redirected.

  • The script #2 - If there are no agents available in the queue (meaning no agents are currently logged into the phone system), you can specify a number to which the client's call will be transferred.

In these scenarios, as a redirection number, you can choose not only an internal extension but also options such as a conference, queue, IVR (Interactive Voice Response), or a special number within the dial plan application. These options provide flexibility in directing the call to different destinations based on your specific requirements or business needs.

The default call duration for the queue is set to 300 seconds (5 minutes). If you require a longer interval, you can specify a higher duration in Scenario 1 and provide a backup number to redirect the call to. This allows you to customize the wait time and ensure that if none of the queue agents can answer the call within the specified duration, it will be redirected to the designated backup number.

Running MikoPBX in a container

MikoPBX Installation Guide using Docker container

To work with MikoPBX in a container, you need to install Docker and Docker Compose, as well as create a user and directories for storing configuration settings and call recordings according to the instructions

Launching the Docker container

To launch the container with your application, use the following commands:

Testing the functionality

To ensure that your MikoPBX application is posted and working in the Docker container, you can follow these steps after launching it. These steps will help you verify the container's status and view its logs.

Step 1: Check container status

First, ensure that the container is successfully launched and running. To do this, use the command docker ps, which will show a list of running containers and their statuses.

This command will display information about all active containers. Make sure that the mikopbx container is present in the list and its status indicates that it is running (e.g., status up).

Step 2: View container logs

After confirming that the container is running, the next step is to view the logs to ensure that the application has loaded without errors and is functioning properly. The docker logs command will allow you to see the output generated by your application.

Check the command output for a message similar to the one below. This message indicates that MikoPBX is successfully loaded and ready for use:

If you see the MikoPBX startup process, wait a moment and re-run the command sudo docker logs mikopbx

Step 3: Check access to the web Interface

When the container starts, it lacks information about the host system's address, so you need to open the external address of the host system, in this case, Ubuntu, in a web browser. https://<host machine IP>

Log into the web interface using the admin login and the admin password to make sure that the web interface is accessible and functioning correctly.

Features of containerized MikoPBX

  • The NET_ADMIN flag is required for the proactive protection system fail2ban and the firewall iptables to function inside the container. When an access block is triggered, for example, by entering an incorrect password, access from the IP address of the attacker will be blocked.

  • If necessary, you can adjust the standard set of ports used by MikoPBX. This can be done by declaring environment variables when launching the container.

Creating a container from a tar archive

In addition to using our official registry, you might need to create a container from an image, for example, for a beta version. Our published releases and pre-releases include a tar archive, which we use to create a container.

Here is an example code for its use:

Environment variables for configuring MikoPBX

Below are some of the environment variables that will allow you to adjust the MikoPBX ports and settings used.

  • SSH_PORT - port for SSH (22)

  • WEB_PORT - port for the web interface via HTTP protocol (80)

  • WEB_HTTPS_PORT - port for the web interface via HTTPS protocol (443)

  • SIP_PORT - port for connecting a SIP client (5060)

  • TLS_PORT - port for connecting a SIP client with encryption (5061)

  • RTP_PORT_FROM - beginning of the RTP port range, voice transmission (10000)

  • RTP_PORT_TO - end of the RTP port range, voice transmission (10800)

  • IAX_PORT - port for connecting IAX clients (4569)

  • AMI_PORT - AMI port (5038)

  • AJAM_PORT - AJAM port used for connecting the telephony panel for 1C (8088)

  • AJAM_PORT_TLS - AJAM port used for connecting the telephony panel for 1C (8089)

  • BEANSTALK_PORT - port for the Beanstalkd queue server (4229)

  • REDIS_PORT - port for the Redis server (6379)

  • GNATS_PORT - port for the gnatsd server (4223)

  • ID_WWW_USER - identifier for www-user (can be set with the expression $(id -u www-user), where www-user is NOT a root user)

  • ID_WWW_GROUP - group identifier for www-user (can be set with the expression $(id -g www-user), where www-user is NOT a root group)

  • WEB_ADMIN_LOGIN - login for Web interface access

  • WEB_ADMIN_PASSWORD - password for Web interface access

Extensions

Setting Primary Phone Numbers

Extensions in MikoPBX are individual users of the system who are assigned internal numbers for making and receiving calls. They have personal accounts that allow you to configure access rights, call forwarding and other personal settings in the system.

Extensions List

The "Extensions" section displays a list of internal user accounts for employees. On the left side of each employee, the status of the authorized device is displayed. If the device is successfully authorized under the respective internal user account, a green circle is shown; otherwise, it appears gray.

In the search bar, you can find the desired contact. You can search by the employee's name, internal number, mobile number, or email address.

The form also provides the ability to sort the list of employees by name, internal number, mobile number, or email address. There are buttons for copying the account password to the clipboard, editing the account, and deleting the account.

Adding an extension

To add a new employee, simply click on the "Add new extension" button.

Main Account Settings

On the "Basic Parameters" tab, you can configure the general settings for an employee's internal account:

  • Username: This value will be used for name substitution and displayed in the corresponding field on the phone screen.

  • Internal Number: This is the employee's internal extension number, which is also used as the login when connecting the phone.

  • Mobile Number: It is used for additional routing purposes.

  • Email Address: It is used for email notifications.

  • Password for SIP

Please ensure that the passwords for SIP accounts meet the following requirements:

  • The password length should be greater than eight characters.

  • The password should contain both uppercase and lowercase letters. The password should include numbers and special characters: "-", "_", "[]", "{}", "@", ";".

  • By setting complex passwords, you can enhance the security of the user accounts and protect them from unauthorized access.

Advanced Account Settings

Accesses the Advanced drop-down list:

Redefining the set string

In the "Redefining the set string" field, enter the dialing rule for mobile numbers according to your provider's requirements.

Call recording

If you want employees to have the ability to record conversations, you can enable the Сall recording feature.

DTMF Mode

The setting determines how DTMF (Dual Tone Multi-Frequency) signals are transmitted over the SIP protocol. DTMF signals are used, for example, when dialing phone numbers or interacting with IVR systems.

Transport protocol

This setting allows you to specify the transport protocol used for this account. The transport protocol determines how data is transmitted over the network. The most common transport protocols used in SIP (Session Initiation Protocol) are UDP (User Datagram Protocol), TCP (Transmission Control Protocol), and TLS (Transport Layer Security)

Network filter

The subnet described in the "Network Firewall" section specifies the allowed subnet for this account. It determines which IP addresses or networks are permitted to connect to this account. Connections originating from other subnets will result in authentication errors.

Manual additional attributes for SIP

This field is used to modify/override the configuration files of Asterisk. You can override almost all parameters. For example, when using chan_pjsip, a SIP account for an employee is described by the following sections:

To override fields in the sections, you should fill in the "Additional Parameters" field as follows:

Routing Settings

On this tab, you can set rules for call forwarding when the employee is unavailable, busy, or does not answer.

Set the time period in seconds during which the call will be directed to the employee's internal account. If the employee cannot answer the call within the specified time, indicate to which number the call should be forwarded. By default, the call will be redirected to the employee's mobile number.

You can also specify the numbers to which the call should be redirected in case of busy and unavailable status.

Feel free to configure these parameters according to your preferences and requirements.

Connecting softphones

  • Configuring telegram as SIP softphone

Connecting telephones

  • Yealink T19

  • Yealink T21

  • Yealink T28

  • Snom D120

Authorize on the platform

Open the IAM page .

Авторизуйтесь на платформе

Откройте страницу IAM

Before starting, download the latest .raw MikoPBX image from .

First, create a bucket for storing your image. Go to the OSS Management Console ().

Buckets section
"Create Bucket" button
Bucket parameters
Bucket name
"Upload Object" button
URL of the uploaded file

Return to the ECS Console () and go to Images.

"Images" section
"Import Image" Button
Image Parameters
"Key Pairs" section
"Create SSH Key Pair" button

Generate an SSH key pair. For details on how to generate a key pair, see . Fill in the required parameters:

SSH Key Pair Parameters
"Security Groups" Section
"Create Security Group" button

Be sure to configure the firewall within MikoPBX itself as soon as possible after creating the virtual machine. Read more about that .

Security Group parameters
"Instances" section
"Create Instance" button
VM Parameters №1
VM Parameters №2
VM Parameters №3
"Create Order" button
VM's name
"Connect" button
VNC Console

For more information on SSH connections, refer to . In this guide, we demonstrate SSH access via PowerShell.

Command for SSH connection
SSH Connection
Authorization Parameters for the WEB-interface
MikoPBX WEB-interface

Before starting, you must download the latest .iso MikoPBX image file from .

"Object Storage" section
"Add Object Storage" button
Name of the Object Storage
Creating a new bucket
S3 Credetials
"New Site"
S3 Connection parameters
Uploading the .iso disk image file
"Change Access"
"Copy URL" button
"ISOs" section
"Add ISO" button
"Add SSH Key" button

Generate an SSH key pair .

Adding SSH Key Pair
"Compute" section
"Deploy Server" button
VM Parameters №1
VM Parameters №2
"Block Storage" section
"Add Block Storage" button
"Attach to" option
"Server Information" page
"Console" button
Built-in console
Installing system
"Remove ISO" element
MikoPBX IP-adress
Machine ID
MikoPBX Web-interface

Before beginning, you need to copy the download link for the latest .raw MikoPBX image. You can find these on .

Section "Backups & Snapshots"
"Import via URL"
Image parameters
DigitalOcean’s main page
Creating a droplet
VM Parameters #1
VM Parameters #2
"Additional Storage" section

Authentication Methods
Console in the Digital Ocean interface
MikoPBX IP-adress
Droplet ID

To connect via SSH, follow . This example uses PowerShell (Windows).

Command for SSH connection

A full list of all possible setting parameters is available in the source code .

If you need to use the "", the container should be run with the –privileged flag. When MikoPBX is run in a container, backups can also be performed by manually archiving the cf and storage directories. In this case, the privileged mode is not necessary, but the container must be stopped during copying.

The –net=host flag indicates that NAT between the host and container will not be used. MikoPBX will be directly connected to the host machine's network. All ports that the container needs to occupy will also be occupied on the host machine. If any port on the host machine is unavailable, errors will occur when loading MikoPBX. More details in the

A full list of all possible setting parameters is available in the source code .

https://console.cloud.google.com/
https://console.cloud.google.com/projectselector2/iam-admin/iam
https://console.cloud.google.com/
https://console.cloud.google.com/projectselector2/iam-admin/iam
MikoPBX’s GitHub releases
link
link
this guide
here
this set of articles
MikoPBX’s GitHub releases
following this guide
MikoPBX's GitHub releases
Windows
MacOS/Linux
these instructions
docker-compose.yml
services:
  mikopbx:
    container_name: "mikopbx"
    image: "ghcr.io/mikopbx/mikopbx-x86-64"
    network_mode: "host"
    cap_add:
      - NET_ADMIN
    entrypoint: "/sbin/docker-entrypoint"
    hostname:  "mikopbx-in-a-docker"
    volumes:
      - /var/spool/mikopbx/cf:/cf
      - /var/spool/mikopbx/storage:/storage
    tty: true
    environment:
      - ID_WWW_USER=${ID_WWW_USER}
      - ID_WWW_GROUP=${ID_WWW_GROUP}
      # Change the station name through environment variables
      - PBX_NAME=MikoPBX-in-Docker
      # Change the default SSH port to 23
      - SSH_PORT=23
      # Change the default WEB port to 8080
      - WEB_PORT=8080
      # Change the default WEB HTTPS port to 8443
      - WEB_HTTPS_PORT=8443
export ID_WWW_USER=$(id -u www-user)
export ID_WWW_GROUP=$(id -g www-user)
sudo docker compose -f docker-compose.yml up
docker-compose.yml
services:
  mikopbx-first:
    container_name: "mikopbx-first"
    image: "ghcr.io/mikopbx/mikopbx-x86-64"
    network_mode: "host"
    entrypoint: "/sbin/docker-entrypoint"
    hostname: "mikopbx-in-docker-first"
    volumes:
      - /var/spool/mikopbx/first/cf:/cf
      - /var/spool/mikopbx/first/storage:/storage
    tty: true
    environment:
      - ID_WWW_USER=${ID_WWW_USER}
      - ID_WWW_GROUP=${ID_WWW_GROUP}
      - PBX_NAME=MikoPBXFirst
      - PBX_FIREWALL_ENABLED=0
      - PBX_FAIL2BAN_ENABLED=0
      - SSH_PORT=123
      - WEB_PORT=8080
      - WEB_HTTPS_PORT=8443
      - SIP_PORT=5060
      - TLS_PORT=5061
      - RTP_PORT_FROM=10000
      - RTP_PORT_TO=10800
      - IAX_PORT=4569
      - AMI_PORT=5038
      - AJAM_PORT=8088
      - AJAM_PORT_TLS=8089
      - BEANSTALK_PORT=4229
      - REDIS_PORT=6379
      - GNATS_PORT=4223
  mikopbx-second:
    container_name: "mikopbx-second"
    image: "ghcr.io/mikopbx/mikopbx-x86-64"
    network_mode: "host"
    tty: true
    entrypoint: "/sbin/docker-entrypoint"
    hostname: "mikopbx-in-docker-second"
    volumes:
      - /var/spool/mikopbx/second/cf:/cf
      - /var/spool/mikopbx/second/storage:/storage
    environment:
      - ID_WWW_USER=${ID_WWW_USER}
      - ID_WWW_GROUP=${ID_WWW_GROUP}
      - PBX_NAME=MikoPBXSecond
      - PBX_FIREWALL_ENABLED=0
      - PBX_FAIL2BAN_ENABLED=0
      - SSH_PORT=2223
      - WEB_PORT=8081
      - WEB_HTTPS_PORT=9443
      - SIP_PORT=6060
      - TLS_PORT=6061
      - RTP_PORT_FROM=20000
      - RTP_PORT_TO=20800
      - IAX_PORT=5569
      - AMI_PORT=6038
      - AJAM_PORT=9088
      - AJAM_PORT_TLS=9089
      - BEANSTALK_PORT=5229
      - REDIS_PORT=7379
      - GNATS_PORT=5223
export ID_WWW_USER=$(id -u www-user)
export ID_WWW_GROUP=$(id -g www-user)
sudo docker compose -f docker-compose.yml up
start-multiple-mikopbx.sh
#!/bin/bash

COMPOSE_FILE="$1"

if [ -z "$COMPOSE_FILE" ]; then
    echo "Usage: $0 path/to/docker-compose.yaml"
    exit 1
fi

# We will obtain the user ID for running the container
export ID_WWW_USER=$(id -u www-user)
export ID_WWW_GROUP=$(id -g www-user)

# Stop current containers if they are running
docker compose -f "$COMPOSE_FILE" down

# Remove them
docker compose -f "$COMPOSE_FILE" rm

# Start containers in the background
docker compose -f "$COMPOSE_FILE" up -d
sleep 60

# Create a label for IPTABLES rules
IPTABLES_COMMENT="mikopbx-custom-rule"

# Determine the project identifier, used when creating a network bridge
project_prefix=$(cat "$COMPOSE_FILE" | yq e '.x-project-name' -)

# If the prefix is not set, use a default value
if [ -z "$project_prefix" ]; then
    project_prefix="default_prefix"
fi

# Function to get container IP address
function get_container_ip() {
    docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$1"
}

# Function to get the name of the bridge interface
function get_bridge_name() {
    local network_name="$1"
    local prefix="$2"
    local network_id=$(docker network inspect "${prefix}_${network_name}" -f '{{.Id}}')

    if [ -z "$network_id" ]; then
        echo "Error: Network ${prefix}_${network_name} not found."
        return 1
    fi

    local bridge_name=$(ip link show type bridge | grep -o "br-${network_id:0:12}\b")
    echo $bridge_name
}

echo "Delete tagged iptables rules"
# Delete all iptables rules tagged with our comment
iptables -S | grep "$IPTABLES_COMMENT" | sed 's/-A /-D /' | while read rule; do
        echo "Delete rule $rule"
        iptables $rule
done

# Delete all NAT iptables rules tagged with our comment
iptables -S -t nat | grep "$IPTABLES_COMMENT" | sed 's/-A /-D /' | while read rule; do
     echo "Delete rule $rule"
     iptables -t nat $rule
done

# Parse the docker-compose file and obtain all necessary parameters.
echo "Parsing docker-compose file and configuring iptables rules"
cat "$COMPOSE_FILE" | yq e '.services[] | select(.environment[] | test("RTP_PORT_FROM")) | {"container_name": .container_name, "environment": .environment, "network": .networks[0]}' -o=json | jq -c '.' | while read -r service; do
    container_name=$(echo $service | jq -r '.container_name')
    network_name=$(echo $service | jq -r '.network')
    bridge_name=$(get_bridge_name "$network_name" "$project_prefix")
    container_ip=$(get_container_ip "$container_name")

    RTP_PORT_FROM=$(echo $service | jq -r '.environment[] | select(contains("RTP_PORT_FROM")) | split("=")[1]')
    RTP_PORT_TO=$(echo $service | jq -r '.environment[] | select(contains("RTP_PORT_TO")) | split("=")[1]')

    echo "Configuring iptables for $container_name ($container_ip) on $bridge_name from port $RTP_PORT_FROM to $RTP_PORT_TO"

    iptables -A DOCKER -t nat ! -i "$bridge_name" -p udp -m udp --dport $RTP_PORT_FROM:$RTP_PORT_TO -j DNAT --to-destination $container_ip:$RTP_PORT_FROM-$RTP_PORT_TO -m comment --comment "$IPTABLES_COMMENT"
    iptables -A DOCKER -d $container_ip/32 ! -i "$bridge_name" -o "$bridge_name" -p udp -m udp --dport $RTP_PORT_FROM:$RTP_PORT_TO -j ACCEPT -m comment --comment "$IPTABLES_COMMENT"
    iptables -A POSTROUTING -t nat -s $container_ip/32 -d $container_ip/32 -p udp -m udp --dport $RTP_PORT_FROM:$RTP_PORT_TO -j MASQUERADE -m comment --comment "$IPTABLES_COMMENT"

    echo "Don't forget to open UDP ports $RTP_PORT_FROM to $RTP_PORT_TO on external firewall if it exists"
done

echo "iptables configuration completed successfully."
docker-compose.yaml
services:
  mikopbx-first:
    container_name: "mikopbx-first"
    image: "ghcr.io/mikopbx/mikopbx-x86-64"
    entrypoint: "/sbin/docker-entrypoint"
    hostname:  "mikopbx-in-docker-first"
    volumes:
      - /var/spool/mikopbx/first/cf:/cf
      - /var/spool/mikopbx/first/storage:/storage
    tty: true
    cap_add:
      - net_admin
    networks:
      - network-bridge1
    environment:
      - ID_WWW_USER=${ID_WWW_USER}
      - ID_WWW_GROUP=${ID_WWW_GROUP}
      - PBX_NAME=MikoPBXFirst
      - RTP_PORT_FROM=10000 # UDP range 10000-10800 on host will be directed to the container
      - RTP_PORT_TO=10800
      - WEB_ADMIN_PASSWORD=mikopbx-first-password
      - ENABLE_USE_NAT=1
      - PBX_FIREWALL_ENABLED=1
      - PBX_FAIL2BAN_ENABLED=1
    ports:
      - "8443:443"  # TCP port 8443 on the host is directed to port 443 in the container
      - "5060:5060/udp"  # UDP port 5060 on the host is directed to port 5060 in the container
  mikopbx-second:
    container_name: "mikopbx-second"
    image: "ghcr.io/mikopbx/mikopbx-x86-64"
    tty: true
    cap_add:
      - net_admin
    networks:
      - network-bridge2
    entrypoint: "/sbin/docker-entrypoint"
    hostname:  "mikopbx-in-docker-second"
    volumes:
      - /var/spool/mikopbx/second/cf:/cf
      - /var/spool/mikopbx/second/storage:/storage
    environment:
      - ID_WWW_USER=${ID_WWW_USER}
      - ID_WWW_GROUP=${ID_WWW_GROUP}
      - PBX_NAME=MikoPBXSecond
      - RTP_PORT_FROM=20000 # UDP range 20000-20800 on host will be directed to the container
      - RTP_PORT_TO=20800
      - EXTERNAL_SIP_PORT=6060 # Inform MikoPBX about its external SIP port
      - WEB_ADMIN_PASSWORD=mikopbx-second-password
      - ENABLE_USE_NAT=1
      - PBX_FIREWALL_ENABLED=1
      - PBX_FAIL2BAN_ENABLED=1
    ports:
      - "9443:443"  # TCP port 9443 on the host is directed to port 443 in the container
      - "6060:5060/udp"  # UDP port 6060 on the host is directed to port 5060 in the container
x-project-name: mikopbx # This parameter must be present
networks:
  network-bridge1:
    driver: bridge
  network-bridge2:
    driver: bridge
mkdir -p /usr/src/mikopbx
sudo apt-get update
sudo apt-get install jq
sudo snap install yq
cd /usr/src/mikopbx
sudo chmod +x start-multiple-mikopbx.sh
sudo ./start-multiple-mikopbx.sh docker-compose.yaml
# Update package list and install required dependencies
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common

# Add the GPG key for Docker's official repository
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# Add Docker's repository to the APT sources list
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

# Install Docker CE
sudo apt update
sudo apt install docker-ce

# Install Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

# Verify Docker Compose version
sudo docker-compose --version
# Creating a new user (e.g., www-user) without superuser rights
sudo adduser --disabled-password --gecos "" www-user

# Creating directories for data storage
sudo mkdir -p /var/spool/mikopbx/cf
sudo mkdir -p /var/spool/mikopbx/storage

# Granting the created user ownership of the directories
sudo chown -R www-user:www-user /var/spool/mikopbx/
sudo docker exec -it mikopbx sh
sudo docker exec -it mikopbx /etc/rc/console_menu
sudo docker exec -it mikopbx sngrep
# Pulling the container image
sudo docker pull ghcr.io/mikopbx/mikopbx-x86-64

# Running the container in unprivileged mode
sudo docker run --cap-add=NET_ADMIN --net=host --name mikopbx --hostname mikopbx \
           -v /var/spool/mikopbx/cf:/cf \
           -v /var/spool/mikopbx/storage:/storage \
           -e SSH_PORT=23 \
           -e ID_WWW_USER="$(id -u www-user)" \
           -e ID_WWW_GROUP="$(id -g www-user)" \
           -it -d --restart always ghcr.io/mikopbx/mikopbx-x86-64
sudo docker ps
sudo docker logs mikopbx
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|               All services are fully loaded welcome                |
|                       MikoPBX 2024.1.60.                           |
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|                        Web Interface Access                        |
|                                                                    |
| Local Network Address:                                             |
| https://10.0.0.4                                                   |
|                                                                    |
| Web credentials:                                                   |
|    Login: admin                                                    |
|    Password: admin                                                 |
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
| SSH access disabled!                                               |
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Create a container from a tar archive
sudo docker import \
  --change 'ENTRYPOINT ["/bin/sh", "/sbin/docker-entrypoint"]' \
  mikopbx-2024.1.114-x86_64.tar \
  "mikopbx:2024.1.114"

# Launch the created container
sudo docker run --cap-add=NET_ADMIN --net=host --name mikopbx --hostname mikopbx \
	 -v mikopbx_cf:/cf \
	 -v mikopbx_storage:/storage \
	 -e SSH_PORT=23 \
	 -e ID_WWW_USER="$(id -u www-user)" \
	 -e ID_WWW_GROUP="$(id -g www-user)" \
	 -it mikopbx:2024.1.114
[***]
type = aor
max_contacts = 10
; ----

[***]
type = auth
; ----

[***]
type = endpoint
context = all_peers
; ----

[acl_***] 
deny = 0.0.0.0/0.0.0.0
permit = 0.0.0.0/0.0.0.0
; ----
[acl]
; Describe access parameters from different subnets [acl_***]

[auth] 
; Describe authentication parameters for outbound calls

[aor]
; Edit AOR section for the endpoint

[endpoint] 
; Edit endpoint parameters

Docker installation and creating a user and directories

Commands to install Docker and Docker Compose and configuration before creating the container

Running MikoPBX in a container

Instructions for running a ready-made MikoPBX container, creating a container from a custom image, and running it

Running MikoPBX using docker compose

Instructions for running multiple MikoPBX instances on a single host using Docker Compose

Cover
Cover
Cover
"Telephony" Section MikoPBX
"Call queue" section
"Add a new call queue" button
New call queue parameters
Queue agents section
Advanced settings button
Queue settings for the caller
Call routing in case of failures
Extensions status
Search for an employee by email
Sorting employees and functions in the main menu
Button "Add new extension"
Employee Account Settings Tab
Advanced settings option
"Routing settings" section
Docker installation and creating a user and directories
here
Extensions
Call queues
IVR Menu
Conferences
Sound files
Call detail records (CDR)
Docker installation and creating a user and directories
Backup Module
Docker documentation...
here
MicroSIP
Groundwire
Zoiper
Jitsi
PhonerLite
Linphone(Mac OS)
Telephone(Mac OS)
WebRTC tutorial using SIPML5
Softphone.pro
Bria Solo

IVR Menu

Creating and configuring IVR menu in MikoPBX

An IVR menu includes options for routing incoming calls using an interactive voice menu. It allows callers to navigate through a series of menu prompts using their telephone keypad or voice input. The IVR menu typically provides various choices or options for callers to select based on their needs or preferences. Each option in the menu can be associated with a specific action or routing destination, such as transferring the call to a particular department, providing self-service options, or connecting the caller to a specific extension or queue. The IVR menu enhances the caller's experience by offering a self-service mechanism and streamlining call routing based on their selections.

Pre-configuration

Before creating an IVR menu, it is necessary to upload audio files that will be played to callers when they contact your company. The audio files can be added in the "Telephony" -> "Sound files"

Choose your music file using "Upload a new file"

Additionally, there is the option to record a file using a microphone if you connect to the MikoPBX over HTTPS.

Creating an IVR menu

Go to "Telephony" → "IVR menu" section.

Click "Add new IVR nenu."

Set the name, number, and, if necessary, a comment for the IVR menu. Select the audio file that you uploaded in the previous step.

Configure Actions when you extend. In the first column, specify the extension number, and in the second column, set the addressing rule.

Set the number of retries before transferring to the default number.

Set the timeout for entering an extension number (value in seconds) after which the voice greeting will be repeated.

The Default extension is required in case the client does not enter an extension number (for example, due to technical limitations).

Enable the "Allow Dialing of any extension" toggle switch if needed.

Enter the IVR menu number that can be dialed to reach that specific IVR menu.

Press "Save settings."

How IVR works

The principle of operation of an IVR (Interactive Voice Response) is as follows:

  1. When calling the IVR menu number, the Voice Greeting audio file starts playing.

  2. During the playback of the voice menu, the caller can enter an extension number. The "Allow Dialing Any Internal Number" flag determines if callers can dial any internal number, including queues, IVRs, or internal extensions.

  3. After the voice menu is played, there is a waiting period of the "Input Extension Timeout" for entering an extension number.

  4. The total time allowed for entering the extension number is calculated as the sum of the audio file duration and the input extension timeout.

  5. If the total time for entering the extension number expires, a repeat voice announcement occurs, and there is another waiting period within the timeout for the next IVR attempt.

  6. If the user enters an incorrect number or does not enter any number at all, a repeat voice announcement occurs, and there is another waiting period within the timeout for the next IVR attempt.

  7. The maximum number of attempts is set by the "Number of Retries" parameter before transferring to the default number.

  8. Once the number of attempts exceeds the specified value, the call is redirected to the default number.

Call detail records (CDR)

How to view and filter call history in MikoPBX

Call History provides a log of all incoming, outgoing, and internal calls. It is located under "Telephony" -> "Call History".

Benefits

The Call History feature in MikoPBX enables users to:

  • Display all calls;

  • Filter calls based on criteria;

  • Visually identify missed calls from the call log;

  • Download or listen to call recordings.

Each entry in the call log contains information about:

  • The caller’s phone number (Who);

  • The recipient’s phone number (To Whom);

  • The date and time of the call (Call Date);

  • The duration of the call (Duration) – this excludes time spent on greetings or announcements.

Calls marked in red are missed calls. Their duration is logged as zero, and these calls cannot be played back:

For answered calls, users can listen to or download the recording. Call recordings are downloaded locally to your PC in .mp3 format.

Each call log entry provides detailed information about the participants involved.

Filters

To apply a filter, press Enter after entering the search criteria.

The search bar in the Call History page supports the following filters:

  1. Phone Number Filter

You can search using either an internal staff number or an external client number.

  1. Two Phone Numbers Filter

Enter two phone numbers separated by a space. For example, entering "74952293042 302" will display all answered calls between these numbers. Answered calls are those with a duration greater than 0 seconds, excluding greeting time.

  1. Date Filter

When opening the Call History, the log defaults to the current date. To filter for a specific period, select the date range and click Apply.

Sound files

Adding/Creating Audio Files in MikoPBX

Uploading a sound file to the PBX

Supported file format .mp3 and .wav

Audio files in MikoPBX are used in various call scenarios and interactive voice menus (In IVR menu, during non-working hours, in call queues, for various system notifications, and in hold music.) to play voice greetings or notify customers.

The list of available sound files is displayed in the "Telephony" -> "Sound files".

To add a new sound file, click "Add a new sound file".

Click "Upload a new file" and select a sound file.

Correct the file name if necessary.

Save settings

When working over the https protocol, it is possible to record an audio file using a microphone.

Sound files are stored on the PBX along the path /storage/usbdisk1/mikopbx/media/custom

Music on hold

The function is available starting from version 2020.2.XXX

If a client gets into a queue during a call or is waiting for redirection, the PBX plays a melody for him. It is possible to download your own tunes for listening while waiting.

You can do this on the "Music on Hold" tab as described above.

Conferences

Creating and configuring conferences in MikoPBX

Conference calling is used for conducting group discussions, meetings, or negotiations in cases where participants are unable to meet in person. It is also used when a particular matter needs to be discussed with multiple participants simultaneously.

Create conference rooms

The list of conference rooms is located in the "Telephony" -> "Conferences section".

To create a new conference room, click the "Add conference".

You must specify the name of the conference and its internal number, by calling which you can enter this conference

To prevent unauthorized access to the conference by employees for whom the discussion is not intended, you can secure the conference room with a password. To do this, fill in the "Conference Pin" field. Only digits can be entered in this field, with a minimum requirement of at least one digit.

In this case, to join the conference, employees will need to enter the PIN code after dialing the conference PIN.

Characteristics of conference calling include:

  • Communication is conducted solely through voice (no other means of information transmission besides speech are provided).

  • All participants can speak and hear each other simultaneously, ensuring duplex communication.

  • Participants use telephones (hardware or software) for communication.

Usage:

  • Each participant dials the conference number. The first participant hears hold music until at least one more participant joins the conference. An employee can transfer their caller into the conference by using specific key combinations on their phone. Transfers can be made to both internal and external numbers. The key combination for transfers is set in the System -> General Settings -> Call Transfers section.

  • Example: An employee dials the combination **1111 (the combination for unconditional transfer), and their caller joins the conference as its first participant. The call is completed for the transferring employee, and to join the conference, they dial the conference number 1111.

The maximum number of conference participants is not limited.

Call Routing

Description of the MikoPBX routing section

The "Call Routing" section in MikoPBX is an interface for configuring call direction rules within the telephone system. Here, administrators can determine how to handle incoming and outgoing calls by setting conditions and routes for efficient distribution of calls among employees, departments, or external lines.

Telephony providers

Telephony providers in MikoPBX is the system section where connections to external communication operators are configured via internet protocols for IP telephony. Here, administrators can add and configure SIP trunk accounts or other types of connections that allow the system to make and receive calls to and from landline and mobile numbers.

In this article, you will find detailed documentation on connecting providers to the system, their configuration, and features.


Incoming Routes (Incoming Routing)

Incoming Routing in MikoPBX are a set of rules that define how the system handles incoming calls from external telephony providers. With them, administrators can set call directions based on various conditions such as the caller's number, time of day, or the specific number the call was received on. This enables automatic distribution of incoming calls to specific employees, departments, IVR menus, or call queues. Configuring incoming routes helps optimize call handling and improve customer service quality by providing flexible and efficient management of the company's telephone communications.

In this article, you will find detailed documentation on configuring incoming routing.


Outgoing Routes (Outbound Routing)

Outgoing Routes in MikoPBX are a set of rules and settings that determine how the system handles outgoing calls from employees to external numbers. With them, administrators can manage call direction through various telephony providers or communication lines based on certain conditions such as the dialed number, prefixes, time of day, or user access rights. This helps optimize communication costs, distribute load between channels, and implement security policies by restricting or allowing certain types of calls. Configuring outgoing routes provides flexibility and control over outgoing telephone communication, contributing to the effective operation of the company's communication system.

In this article, you will find detailed documentation on configuring outgoing routing.


Off-Work Time (Night and Holiday Switch)

Off-Work Time in MikoPBX is a tool for setting up call handling rules during periods when the company is not operating, such as at night, on weekends, or on holidays. With it, administrators can define how the system will handle incoming calls during off-hours: redirect to voicemail, play special voice messages, or forward calls to the mobile numbers of on-call staff. This allows for proper interaction with clients outside of working hours and maintains a high level of service.

In this article, you will find detailed documentation on setting up off-work time for your system.

Telephony providers

Connecting and configuring telephony providers in MikoPBX

General Information

"Telephony Providers" in MikoPBX is a section of the system where connections to external telecom operators via Internet protocols for IP telephony are configured. Here, administrators can add and configure SIP trunk accounts or other types of connections that allow the system to make and receive calls from landline and mobile numbers.

To make or receive external phone calls via the public switched telephone network or the Internet, you must create at least one provider account. Each technology has its own account type. To add a new account or change an existing one, go to "Call Routing" -> "Telephony Providers":

The provider overview contains a list of all available service providers. A green icon next to the provider's name indicates that MikoPBX has registered this provider, and you can start using this provider. You can enable or disable the use of the provider using the switch on the left.

To connect a new provider account, click Connect SIP or Connect IAX depending on the type of account you are connecting.

Setting up SIP Provider

General Settings

In the general settings of the SIP provider, specify the following settings:

Provider Name - an arbitrary name that is convenient for you. It will be displayed in the selection lists in the corresponding menus.

Account Type - the type of registration for the provider account.

Provider host URL or IP Address - can be either a URL or an IP address.

Username and Password provided by your provider.

DTMF Mode - determines how DTMF signals are transmitted over SIP. There are different standards used to transmit DTMF to SIP providers. Try using different standards to find the mode that suits you.

  • inband sends keypresses as "tones." To use this standard, you need a high-quality audio codec.

  • Auto, rfc, and info transmit keypresses through SIP encoding.

Advanced SIP Provider Settings

Additional provider hosts or ip

In this section, list all communication service provider addresses from which incoming calls can arrive. Access to these addresses for SIP and RTP ports will be automatically opened on the firewall.

SIP Connection Port

By default, it is set to 5060. The SIP protocol describes how a client application (e.g., a softphone) can request the initiation of a connection from another, possibly physically remote client in the same network using its unique name. The protocol defines how clients agree on opening exchange channels based on other protocols that can be used for direct information transmission (e.g., RTP).

Transport Protocol

Allows you to specify the transport protocol used for this provider account.

Outbound Proxy

This is the provider's SIP proxy server for processing requests. The actual SIP server may differ from this address. The outbound proxy takes on primary requests and forwards them to the appropriate server.

Support NAT Session

When this option is enabled, Asterisk will send SIP OPTIONS packets. This is necessary to support NAT tunneling on your router.

Specify the frequency with which Asterisk will send OPTIONS-type SIP messages to check if this device is working and available for making calls.

If this device does not respond within the specified period (default is 60 seconds), Asterisk considers it turned off and unavailable for making calls.

Redefining SIP Header "From"

You can disable the use of the fromuser field of the SIP packet header.

The fromuser and fromdomain parameters in the pjsip.conf file are used for outgoing calls from Asterisk to the SIP device.

You can override:

  • the username in the From field in SIP packets (fromuser).

  • the domain name in the From field in SIP packets (fromdomain).

The fields User and Domain serve this purpose.

Additional Parameters

In this field, you can modify Asterisk configuration files.

You can override almost all parameters. For example, when using chan_pjsip, the provider is described with the following sections:

[REG-AUTH-***]
type = auth
; ----

[REG-***] 
type = registration
transport = transport-udp
; ----

[***-OUT]
type = auth
; ----

[***]
type = aor
max_contacts = 1
; ----

[***]
type = identify
; ----

[***]
type = endpoint
context = incoming
; ----

To override fields in sections, fill in the Additional Parameters field as follows:

[registration-auth]
; Describe authentication parameters for [REG-AUTH-***]

[registration]
; Describe registration parameters on the remote server [REG-***]

[endpoint-auth]
; Describe authentication parameters for outgoing calls through the provider

[identify]
; This section is responsible for matching registration and endpoint. When an incoming call arrives, 
; an identity parameter check will be carried out according to the INVITE.
 
[aor]
; Edit the AOR section for the endpoint

[endpoint]
; Edit endpoint parameters

To complete the configuration, click Save Settings.

Multiple Providers on One IP (Host)

There are cases when you need to connect multiple accounts from one communication service provider. In this case, the settings Host or IP Address and SIP Connection Port may be the same for all accounts.

Asterisk handles this situation differently. The PBX will not be able to correctly route the call to the desired provider, and the call will be dropped.

As a solution, in older versions of the PBX, you could describe additional inbound routes for which you would fill in the Additional Number (DID) field with the Username value for each account of the provider. This required creating N number of additional routes, equal to the number of provider accounts.

The Username field, in most cases, will be used as the destination number Additional Number (DID) for incoming calls. Considering that outgoing routes for all Usernames will be configured, the call will be correctly processed by the PBX.

More about Registration Types

1. Outgoing Registration

This option is used when connecting most providers.

Registration is necessary when the provider cannot know from which IP address the client will connect. For example, when the PBX is behind NAT. The provider's server is usually on a public IP address.

2. Incoming Registration

This option is relevant for the operation of some FXO / GSM gateways when an external device must connect to your PBX using a login and password.

This option is also relevant when the remote device is behind NAT, and MikoPBX cannot know its IP address.

3. IP Authentication, No Password

Relevant for secure private networks. For example, Rostelecom often lays its network cable and connects the client to its local network.

In this case, the PBX and the provider must be in the same network.

Incoming routing

Description and configuration of incoming routing

In this section, you need to create rules and templates for distributing incoming calls for providers created in MikoPBX. The rules for incoming calls describe the route of a call from the moment it arrives at the PBX to the moment it is completed. You can create an unlimited number of inbound routing rules. You can create several rules for one provider.

Routing rule priority and default route

Rules are listed in order of priority. If no one answers the incoming call within the time interval specified in the rule, the call will be routed to the next priority rule. Rules can be moved up and down in the list, that is, their priority can be changed by dragging them by the arrows.

If the call is not answered according to any of the rules, the Default incoming route is used.

The following actions are available and can be specified as the default rule:

  • Play busy signal - the client will play a busy signal and the incoming call will be ended;

  • Hang up;

  • Redirect the call - the call can be transferred to a number that you can select in the field located to the right of the action. You can select an IVR menu, call queue, conference, or employee extension number as the number for transfer.

Multiple routes for one provider

For one provider, you can describe several incoming routes.

First, the call goes along the upper route. If the client does not get through, then the call goes according to the lower rule (lower priority). If the client does not get through via the second route, then the call goes through the default route.

Create a routing rule

To add a new incoming routing rule, click the Add a new rule button.

In the Note field, describe the route you want to implement. In the future, this will help you debug the call circuit.

Select the Provider for which you are creating a new incoming call distribution template.

The additional DID number is the number the client called you on. This field is optional and should be completed if you need to route calls more accurately.

At the next step, you need to indicate to which phone number the incoming call from the client will be sent. The telephone number can be IVR menu numbers, call queues, conferences, or employee internal numbers.

Specify the time during which the call will be sent to the phone number you specified.

If after the specified time interval no one answers the incoming call, the call will be routed to the next priority rule.

Night and Holiday Switch

Setting up non-working time rules

"Off-hours" in MikoPBX is a tool for setting up call processing rules during periods when the company is not working, such as at night, on weekends or holidays. With its help, administrators can determine how the system will handle incoming calls during off-hours: forward to an answering machine, play special voice messages or forward calls to the mobile numbers of on-duty employees. This ensures correct interaction with customers outside of working hours and maintains a high level of service.

Creating a rule

To add a new rule, click on the "Add Time Interval" button.

A form for creating a new rule will open.

In the form, you will find the following fields:

  • Period: The calendar period when employees are absent from the office, such as during New Year's or May holidays.

  • Weekdays: Specific weekdays for which the rule will be applied.

  • Time Range: The time period during the day when employees are absent.

  • Incoming Call Action: You can choose to play a sound file or perform a call transfer. Call transfer options include transferring the call to a conference, IVR menu, queue, internal employee extension, or specific termination numbers.

In the Note field, you can add a note with a description of the created rule, so that you can quickly navigate through the essence of this rule using this description. With the eraser button, you can clear the fields opposite which this button is located.

Apply only to certain incoming routes

By activating this function, a new menu "Route restrictions" will appear on top of you

Here you can choose which specific routes the rule you are creating will apply to.

Examples of rules

This rule is used for calls during non-working hours from Monday to Friday, specifically from 7:00 PM to 9:00 AM:

This rule is used to handle calls on Saturdays and Sundays:

Modules

Description of the Modules section in MikoPBX

The "Modules" section in MikoPBX is an interface for managing additional functional components of the system, which includes two subsections: "Module Management" and "Dialplan Applications".

Managing these subsections allows you to configure MikoPBX as flexibly and efficiently as possible, expanding the functionality of the telephone system and adapting it to the unique requirements of the organization.

Registration in the modules marketplace

Registration in the MikoPBX Marketplace does not affect the basic functionality of the system. You can use MikoPBX to work with calls without registration and installation of additional modules. However, we recommend that you go through the registration procedure in the marketplace to get the opportunity to expand the functionality of the system.

Registration will give you access to additional modules and extensions.


Module management

Module management in MikoPBX is an interface for managing additional system components that expand its functionality. Here, administrators can install, update, enable or disable modules, adding new features or integrations with external services. This section allows you to adapt the system to the specific needs of the company, ensuring flexibility and scalability of the telephone network.


Application dialplans

MikoPBX dialplan applications are a set of tools that allow you to set up individual call processing scenarios within the system. With their help, you can define a sequence of actions that the system will perform when a call is received or made. This may include redirecting a call to a specific extension, playing special audio messages, requesting additional information from the caller, or performing other functions.

Using dialplan applications, you can flexibly customize the logic of the telephone system to the needs of your business without delving into complex programming. This makes it easier to create complex call processing scenarios, allowing you to improve the efficiency of communications and improve the level of customer service.

Module management

This guide explains how to connect, configure, and manage modules in MikoPBX. It also covers how to install applications using the built-in Marketplace.

Additional modules allow you to expand the functionality of the main system. In this guide, you will find information on managing modules and installing applications using the built-in Marketplace.

You can find the Module Management section under "Modules" -> "Marketplace of modules".

Installed Modules

All installed modules are listed under the tab of the same name:

You can upload your own module using the "Upload New Module" button. You need to upload .zip files. After uploading, the module will appear in the list under the "Installed Modules" tab.

You can also access the settings of any module for further configuration:

Additionally, you can enable or disable a module.

From the interface of an installed module, you can quickly access its documentation by clicking on the question mark to the right of the module's short description:

Quick Access to Modules

You can add any module to the sidebar menu for quick access, which can be useful if you need constant access to the module's settings to change parameters or its status.

To do this, follow these instructions:

  1. Go to the settings of the module you want to add to the sidebar menu by clicking on the edit icon to the right of the module's version:

  1. Click on the settings icon to the right of the module's status to access the display settings for the module in the sidebar menu:

  1. In this section, you can:

  • Toggle the display of the module in the sidebar menu—"Show module in sidebar menu".

  • Choose the section where it will be displayed—in the example, the "Modules" section is selected.

  • Specify a custom name for the module if desired.

After completing the settings, click "Save".

Marketplace

In this section, you can install modules from MIKO as well as from partner developers.

Each module has a button for downloading and installing it. Basic information about the module with a short description is also displayed here.

To the left of the module's name, you can find an icon indicating whether it is paid or free. For example, in the image above, the "Access Control Management" module is paid, while the "Backup&Recovery module" module is free.

Module Card

You can access a module's detailed page by clicking on its name in the Marketplace interface.

Here you can find the version of the current release, information about the developer, and whether the module is paid or free. There are also three sections:

Module Description

This section contains images illustrating the module's functionality and settings. Additionally, there is a basic description of the module and a "Useful Links" section with a link to detailed documentation on configuring and operating the module.

Version History

In this section, you can find the module's version history with detailed descriptions of changes, as well as the minimum compatible version of MikoPBX for proper operation. You can also install a specific version of the module by clicking on the blue link under its description.

Activating Coupons

If you purchase a module, you will receive a coupon. To activate it, go to Modules -> Marketplace of modules:

Then navigate to the "License Management" section.

In the "Activate Coupon" field, enter your coupon code and click "Activate Coupon"

The protection key always starts with MIKO-. Coupons for modifying product composition always start with MIKOUPD-.

Outbound routing

Description and configuration of outgoing routing

Outgoing routes in MikoPBX are a set of rules and settings that determine how the system handles outgoing calls from employees to external numbers. With their help, administrators can control the direction of calls through different telephony providers or communication lines depending on certain conditions, such as the dialed number, prefixes, time of day or user access rights. This allows you to optimize communication costs, distribute the load between channels and apply security policies by restricting or allowing certain types of calls. Setting up outgoing routes provides flexibility and control over outgoing telephone communications, contributing to the efficient operation of the company's communication system.

In this article, you will find detailed documentation on setting up outgoing routing.

Creating a rule

Step 1: Add a new rule

To add a new outgoing routing rule, click the "Add a new rule" button.

Step 2: Title and Note

The name of the rule can be set arbitrarily.

In a note, you can describe the call route that you want to implement; this can help you in debugging in the future.

Step 3. Setting the number template

The example in the picture above means the following: if the dialed number starts with "345" or "375" and the rest of the number consists of 10 digits.

If the dialed number matches the rules of several routes, then the call will be made in the order of the route descriptions, one by one, until the call is answered, or until there are no more suitable routes.

Step 4: Number Conversion

Convert number - this setting is intended to remove the number prefix and replace it with the desired prefix.

In the example given, digits are not cut off at the beginning of the number and digits are not added.

Step 5. Selecting a provider

Select from the list the provider for which you configured outgoing routing and save the changes.

Examples

Examples of number templates

Examples of changing number prefixes

Example 1. It is necessary to replace the number prefixes “+7” with “8”.

For example, the number +74952293042 should be converted to the number 84952293042.

The implementation of the rule looks like this:

Example 2. It is necessary to replace the number prefixes “8”, “7” with “+7”.

For example, the numbers 84952293042 and 74952293042 should be converted to +74952293042.

The implementation of the rule looks like this:

Example 3: You need to add the prefix "8" to the number.

For example, the numbers 4952293042 and 4996382584 should be converted to 84952293042 and 84996382584 respectively.

The implementation of the rule looks like this:

Example 4: You need to remove the area code "8495" or "7495" or "8499" or "7499" and leave the 7-digit number.

For example, the numbers 84952293042 and 74996382584 should be converted to 2293042 and 6382584 respectively.

The implementation of the rule looks like this:

Registration in the modules marketplace

Description of the registration process

General Information

Registering in the MikoPBX Module Marketplace is not required for the system’s basic functionality. You can fully utilize MikoPBX for handling calls without registration or installing additional modules. However, we recommend registering in the marketplace to expand your system’s capabilities.

Registration gives you access to additional modules and extensions. These include both free modules (moved out of the core system for easier initial setup) and paid modules from us and third-party developers. If you are a developer, you can contact us at developers@mikopbx.com to get instructions on creating and adding your module to the Marketplace.

MikoPBX is a free solution and does not require registration. The absence of a license does not impact call functionality. You can register or cancel your Marketplace registration anytime.

To begin the registration process, navigate to "Modules" -> "Marketplace of modules":

If you are not registered in the Marketplace, the section will look as follows:


Registration Process

One license key is issued per company. If your company uses multiple MikoPBX instances, a single registration is sufficient.

To start the registration process, click the Register in Marketplace button:

The license key stores all your licenses for MikoPBX products. If you already have a key, you can enter it in the corresponding field. If you've forgotten your key, search your email inbox for messages from lic@miko.ru

If you don’t have a key, you can generate a new one by completing the registration form:

  • Organization Name – Enter your company/organization name.

  • Contact Email – Enter your organization’s email address.

  • Contact Person – Enter the name of the contact person.

  • Contact Phone (optional) – Provide a contact number.

  • Unique Company Identifier (e.g., Tax ID, VAT) (optional).

Click Register.

Upon successful registration, you will see the following screen:

  • A notification confirming the system's registration.

  • The license key field will display a blurred value by default. Hover over it to view or copy the key.


License Management

To manage your license, go to Marketplace -> License Management and click the corresponding option:

Enter your license key in the Enter your license key or activated coupon field and click Login:

You will access a system with nine sections:

Go to the Session monitor section:

In the Info column, click the i button for each binding to view detailed host information.

In the Action column, use the Drop button to unbind the license from the current host.


Potential Issues

Registration Issues

If you encounter issues during registration, check for internet access to the MikoPBX server. Ensure connectivity to lic.miko.ru and lic.mikopbx.com over port 443 (HTTPS). Verify firewall settings and network permissions.

Strikethrough Key Icon

MikoPBX periodically connects to licensing servers to verify installed modules. If a module license becomes unavailable, the module will be disabled, and a strikethrough key icon will appear next to its name.

"Sound files" section
"Upload a new sound file" button
"IVR Menu" section
"Add new IVR menu" button
Parameters of the new IVR menu
"Actions when you extend" section
Number of repetitions before transferring to the default number
Timeout to enter an extension number after IVR menu playback
Default extension
"Allow dialing of any extension" switch
"IVR menu extension"
Call detail records (CDR)
Missed calls
Listen to the recording function
Detailed information
Filter by Phone number
Filter by 2 numbers
Filter by date
"Sound files" section
"add a new sound file" button
"Upload a new file" button
The name of the recording file
"Save settings" button
"Start recording" button
"Music on hold" tab
"Add conference" button
New conference room parameters
Conference PIN field
"Call Routing" Section MikoPBX
Telephony providers section
Switching provider status
Different types of connection

Instructions for connecting to the most popular service providers can be found in our .

General settings of provider
Advanced Settings
Additional provider hosts or ip
SIP Connection Port
Transport Protocol
Outbound proxy
Support NAT Session
Redefining SIP Header "From"
User and Domain fields
Save settings

An alternative is the "" instruction. This approach was not very intuitive.

"Call Routing" -> "Incoming Routing" section

Additional examples of configuring incoming routing are available in the section.

Priority Scheme
Default incoming route
Several incoming routes for one provider
New Rule
Parameters for a new rule
Parameters for a new rule
Parameters for a new rule
"Call routing" -> "Night and Holiday Switch" Section
"Add time interval" button
A form for creating a new rule
"Apply only to certain incoming routes" switch and "Route restrictions" Section
"Route restrictions" section
Example of the rule
Example of the rule

To use both paid and free modules, you need to register your copy of MikoPBX and obtain a free license key. Instructions on how to do this can be found .

Detailed instructions for configuring and operating each module can be found .

This section allows you to manage modules: connecting them, configuring them, and uploading your own custom modules. Documentation on developing your own modules can be found .

Each paid module has a trial period of 2 weeks. During this period, you can try the module's functionality and decide whether to purchase it. To purchase a module, write to

Additional examples of configuring outgoing routing are available in the section.

Set a template for outgoing calls. Read more about number templates in this .

Set a template for outgoing calls. Read more about number templates in the .

The number starts with
The rest of the number consists of the specified number of digits
Examples of numbers

If you move MikoPBX to another host or restore it from a backup, you will need to reset license bindings in the .

You will be redirected to the :

Telephony providers
Incoming routing
Outbound routing
Night and Holiday Switch
FAQ
Registering multiple accounts from one provider
FAQ

[7-8]{1}

10

79257184255, 84952293042

7925

leave the field blank

79257184255, 7925, 7925718…

7ХХ

0

700, 701, 702…

74952293042

0

74952293042

74(95|99)

7

74952293042, 74996382584…

(7|8)0{1}

1

700, 701, 802, 803…

(25|26)

0

25, 26

[0-9]{1}

0

digit from 0 to 9, occurrence once

[1-5]{2}

0

12, 15, 14, 25 digit from 1 to 5, occurrence twice

[8-9]+

0

8899, 888, 988888 digit from 8 to 9, occurrence one or more times

"Modules" section in MikoPBX
"Marketplace of modules" section
All installed modules
"Upload new module" button
Module settings
Enable/disable module
Quick jump to module documentation
Modules in quick access
Go to module settings
Settings of the module
Module display options in the side menu
Marketplace section
Button for installing the module
Module card
Version History section
Marketplace of modules section
Coupon activation
"Call routing" -> "Outbound routing" section
New rule in outbound routing
Step 2: Title and Note
Step 3: Setting the number template
Step 4: Number Conversaion
Step 5: Selecting a provider
+7 to 8
7 and 8 to +7
Prefix 8
Remove prefix
Section "Modules" -> "Marketplace of modules"
Marketplace section if registration is not completed
The "Registration in the marketplace" button
License key
Registration form for the marketplace
Successful registration in the marketplace
"License Management" element
SaaS Licensing Server Page
Entered license key
SaaS System
"Session monitor" Section
Host information
Resetting the license on the host
Registration in the modules marketplace
Module management
Application dialplans
here
here
here
sale@mikopbx.com
FAQ
articles group
License Manager
SaaS Licensing Server
next paragraph

Updating from the MikoPBX console

Update option from MikoPBX console

The console will display the line "The system loaded in Recovery mode".

Select Install / Repair (or press the number 8 on the keyboard) and press Enter.

You need the command "Update to version ****.*.**". Press the number 2 on the keyboard, then press Enter. The update installation will begin. When it is complete, the PBX will reboot.

After the PBX reboots, the message "The system loaded in Recovery mode" will no longer appear, indicating that the PBX has booted from the hard disk and not from the virtual optical drive. The installed update version will be displayed in green at the top.

PBX update

This article contains step-by-step instructions for updating MikoPBX to a newer version.

Updating from the web interface

Update option from the web interface

In some sections of the interface (e.g., Extensions), the current version of MikoPBX is displayed in the lower right corner.

In the PBX web interface, go to Maintenance → PBX update.

If there are newer versions of the PBX available, they will be displayed in the Online updates available table, with the version number in the first field and the list of changes in the second.

We recommend performing updates sequentially without skipping releases.

There are two update options: online update and update using a downloaded img file.

Online upgrade

A warning window will appear. Click Upgrade.

The PBX will download and apply the updates, and then reboot.

Update using a downloaded img file

Please note that this method can also be used to roll back to a previous version.

The img file will start downloading. Wait for the download to complete.

Then click Apply the update, and in the warning window, click Upgrade.

The updates will be applied, and the PBX will reboot upon completion.

Application dialplans

Creating and Configuring Dialplan Applications

Dialplan applications are programmable voice applications in PHP and Asterisk Dialplan. MikoPBX comes with several pre-configured applications. With some basic knowledge of Asterisk dialplans, additional applications can be easily created. Like a phone account, applications can have an extension assigned in the settings.

MikoPBX comes with several pre-configured applications. With some basic knowledge of Asterisk dialplan, you can easily create additional applications. Like a phone extension, applications can have an internal number assigned in the settings.

Below you will see a description of the basic applications included in MikoPBX:

Application Number
Application Description

000063

The application reads the internal number of the employee used to call the application and voices it to the employee, i.e. the employee is voiced his internal number on the PBX

000064

0000MILLI - Generates a constant sound signal with a frequency of 1000 Hz. Used to check the quality of the connection.

10003246

The Echo application sends the received audio signals back to the user so that the delay duration can be determined. In general, you hear what you say. The application is mainly used for testing.

Creating applications

MikoPBX applications are created from several plans of the Asterisk application suite. There are many examples of ready-to-run applications in the system. To add a new MikoPBX application, click on "Add a New" in the application menu.

In just a few steps, you can create your own applications. First, define the Name and Call Number for the application, and optionally fill in the Comment field.

Possible application code types:

  • PHP-AGI script - AGI is an embedded method in Asterisk for executing external scripts (similar to CGI for HTTP servers), which can extend Asterisk's functionality using other programming languages, particularly PHP. AGI scripts can control call handling in the dialplan and are invoked from the extensions.conf file.

  • Asterisk Dialplan - The configuration of the dialplan is contained in the Asterisk configuration file called extensions.conf. This is one of the most important configuration files where the processing and routing of incoming and outgoing calls are defined. This file governs the behavior of all connections passing through your PBX (Private Branch Exchange).

Let's clarify: we will refer to MikoPBX applications as "applications" and Asterisk dialplan functions as "functions". For example, Answer(), NoOP(), Set(), and Wait() are functions. These are individual target functions in Asterisk that are then combined in MikoPBX to create more powerful MikoPBX applications.

Describe the logical operations in the text field of the Programme Code. Please note that only one command is allowed per line, for example:

The figure shows an example of the simplest application for the number 000063. After dialing the number, you will hear the robot voice your internal number.

MikoPBX will check the commands used. It is possible that incorrectly programmed operations may affect the performance of your telephone system.

Description of Asterisk functions that you can use in your applications:

Наименование команды
Описание

answer

Transfer the call to the answered state.

channel status

Returns the status of the connected channel.

control stream file

Sending a preset audio file to the channel, with the ability to control its playback (pause/rewind/resume playback) using the DTMF digits received from the subscriber, if specified. (Asterisk 1.2)

database del

Deleting a key/value from the database.

database deltree

Deleting the key/value tree from the database.

database get

Get the value from the database.

database put

Adding/changing a value in the database.

exec

Execution of the specified Command. (Commands are functions that you use when describing the set plan in the extensions.conf file).

get data

Get data from the channel.

get option

Behaves similarly to the "STREAM FILE" command, but is used with a specified value for timeout. (Asterisk 1.2)

get variable

Get the value of the channel variable.

hangup

Break the connection (Hangup) on the current channel.

noop

An empty command. Does nothing.

receive char

Accepts one character from the channel if it supports this feature.

receive text

Accepts a text string from a channel if it supports this feature.

record file

Writes to the specified file.

say alpha

Pronounces the specified string of characters. (Asterisk 1.2)

say date

Pronounces the date. (Asterisk 1.2)

say datetime

Pronounces the date and time according to the specified format. (Asterisk 1.2)

say digits

Pronounces the specified string of digits.

say number

Pronounces the specified number.

say phonetic

Pronounces the specified string of characters.

say time

Pronounces the time.

send image

Sends the image to the channel if it supports this feature.

send text

Sends text to the channel if it supports this feature.

set autohangup

Automatic termination of the connection (Autohangup) on the channel at the specified time.

set callerid

Setting the caller id for the current channel.

set context

Setting the context for the current channel.

set extension

Change the extension for the current channel.

set music

Включение/Выключение музыки ожидания (Music on hold), например: «SET MUSIC ON default».

set priority

Enabling/Turning off the standby music (Music on hold), for example: "SET MUSIC ON default".

set variable

Setting the channel variable.

stream file

Sending an audio file to the channel.

tdd mode

Setting the TDD mode for a channel that can support it to enable interaction with TDD.

verbose

Writing a message to the verbose log of the asterisk server.

wait for digit

Waiting for the DTMF button to be pressed

Updating the docker

Upgrade option for MikoPBX in Docker container

To update the MikoPBX container to the latest version, you can follow these steps in the command line. These steps include stopping the current container, downloading the new version of the image, and running the container with the updated image.

Updating the docker

First, you need to properly stop the running container. After stopping the container, you can safely remove it

To launch a new container using the latest image version with the same settings as before, use the following commands:

Updating using Docker compose

First, you need to properly stop the running container. After stopping the container, you can safely remove it

The next step is to download the latest MikoPBX image:

An example of the docker-compose.yml file that can be used to update your MikoPBX container through Docker Compose:

Save the contents to a file named docker-compose.yml, make the necessary adjustments, and run the command:

Notes

  • Data: Since data is stored in Docker volumes (mikopbx_cf and mikopbx_storage), it remains untouched during the update, preserving settings and user data.

  • Environment Variables: Ensure that all necessary environment variables are correctly passed.

  • Safety: Always create backups of your data before updating.

These steps will help ensure a smooth and safe update of your MikoPBX container.

Anti brute force

This section is used to configure Fail2ban

Fail2ban is enabled together with the Network Firewall switch in the "Network and Firewall" → "Firewall" section.

Fail2ban blocks IP addresses with abnormal activity. When there is a failed authentication attempt, information about the error will be logged in the PBX. Fail2ban analyzes all failed attempts and keeps track of them. When the number of failed attempts exceeds the maximum allowed authentication attempts, the IP address is banned. Fail2ban is capable of slowing down the rate of failed authentication attempts.

Please note that Fail2ban will not help with the use of simple passwords.

The Anti brute force settings can be found at the bottom of the "Network Firewall settings":

  • If a certain number of failed login attempts (Number of attempts for blocking) occurs within a specific period (Within (seconds)), the IP address will be blocked for a specified duration (Block for (seconds)).

  • The whitelist of addresses defines IP addresses that will not be blocked by Fail2ban. You can specify individual IP addresses like 93.188.40.10 or subnet like 93.188.40.10/32. The separator used is a 'space'.

  • Please note that if you have set the 'Never block addresses from this network' option in the 'Network Firewall' section for a subnet, that subnet is automatically added to the whitelist, and you don't need to add it manually. It is not recommended to manually populate the whitelist of IP addresses. It is preferable to specify IP addresses only in exceptional cases.

The list of blocked addresses shows which IP addresses are currently blocked.

You can also unblock an address by clicking on the corresponding icon in the table.

Network interface

Description and configuration of network interfaces

The "Network Interface" section in MikoPBX is an interface for configuring the system's network connection parameters. Here, administrators can manage IP addresses, subnet masks, gateways, and other network settings for each network interface. This allows MikoPBX to be correctly integrated into the organization's network and ensure its stable operation in accordance with the requirements of the network infrastructure.

The section is located in "Network and Firewall" -> "Network Interface":

General parameters

The hostname is the name of the machine. If no value is specified, the default hostname used is 'mikopbx.local'.

Network interfaces

There are two ways to configure the IP address:

  1. DHCP (Dynamic Host Configuration Protocol) can be used for automatic IP address configuration. Enable the 'Use DHCP to obtain network settings' switch. This is recommended for most users. To not rely on DHCP server settings (to provide a specific address), you can disable the switch.

  2. If you do not want to use settings obtained from a DHCP server, you can configure the network manually. This requires some knowledge about the network topology. To the right of the IP address, there is a field for Subnet Mask in CIDR format. You should use the alternative format: /8 corresponds to the subnet mask 255.0.0.0, /16 corresponds to 255.255.0.0, and /24 corresponds to 255.255.255.0.

"VLAN ID" - MikoPBX supports virtual network interfaces. This is relevant only for physical PCs. Sometimes a PC may have only one network interface, and it may not be possible to connect a second one physically. Using VLAN, you can create a virtual interface that works 'on top' of the physical one. One of the advantages of using VLAN is that all phone calls can be routed through it, while the network equipment can 'tag' all VLAN traffic and guarantee a stable connection.

The number of network interfaces in MikoPBX is not limited.

Network topology

The 'Network interface with internet access' is the primary network interface through which access to external addresses (non-local) will be established.

If no DNS server address is specified, the default server 8.8.8.8 will be used.

Depending on your network topology, you need to perform the following steps to configure MikoPBX. The PBX can be behind a network router, which is the most common scenario, or it can have a public IP.

  • If the PBX is behind a router, you need to check the 'This station is located behind a NAT router' option.

  • If you know the external address of the station (IP or domain name) and have forwarded the ports of the PBX to the external world, it is recommended to fill in the fields 'External IP address of your router' or 'External hostname of your router'.

For all addresses that are not local to the PBX, the station will be represented by the external address:

If 'External IP address of your router' is empty and 'External hostname of your router' is filled, the PBX will be represented by the hostname (External hostname) field.

The external IP address is mandatory to fill in. If a domain name is specified, it takes priority, and the external IP address field is not used.

When enabling the option 'This station is located behind a NAT router,' it is mandatory to specify the external address or hostname of the router. Additionally, you need to perform port forwarding on the router for SIP port 5060 and RTP ports 10000-10200 to the local address of the PBX.

If your provider allows registration and you do not need to connect external subscribers, you can choose not to enable the option "This PBX is located behind a NAT router", even if the PBX is behind a NAT router.

Manual configuration of network routes

  1. Go to the 'System' → 'System file customization' section.

  1. Open the file '/etc/static-routes' for editing.

  1. Select the 'To replace all' mode and insert the rule. For example, 'route add -net 54.246.198.136 netmask 255.255.255.255 gw 172.16.32.15 dev eth0'

We specify to the operating system that the specified IP address 54.246.198.136 can be found through the network interface 'eth0' and the request should be directed to the gateway (172.16.32.15).

The netmask '255.255.255.255' indicates that the rule will only be applicable to the address 54.246.198.136. If you need to create a rule for a group of addresses, for example, the entire subnet 54.246.198.0: In fact, it is the range of addresses from 54.246.198.1 to 54.246.198.254.

Click "Save settings".

Firewall

Description and configuration of Firewall rules in MikoPBX

The Firewall in MikoPBX is an interface for configuring the system's firewall. Here, administrators can create and manage network traffic filtering rules, controlling access to MikoPBX and protecting it from unauthorized access and network threats. Configuring the firewall ensures the security of the telephone system, preventing potential attacks and ensuring stable operation in the organization's network infrastructure.

In MikoPBX, all local subnets can be described in the "Network and Firewall" → "Firewall" section. The firewall is designed to restrict access to the station by traffic type and subnets.

To add a new rule, you need to click on the button:

General settings

You can give the rule any custom name. To the right of the subnet address, there is a field for Subnet Mask in CIDR format.

Available services

  • SIP&RTP - registration of phones and voice traffic. Session Initiation Protocol is used for establishing connections between VoIP phones.

  • WEB - access to the administrative interface for configuring the PBX. SSH - root access to the system.

  • SSH (Secure Shell) allows accessing the MikoPBX console.

  • AMI - access to Asterisk Manager API via telnet. Asterisk Manager Interface (AMI) provides access to Asterisk via TCP/IP protocol.

  • AJAM - access to Asterisk Manager API via HTTP or HTTPS.

  • ICMP - communication check using the 'ping' command.

  • CTICLIENT - connection of the telephony panel 2 for 1C.

Advanced Options

  • Each subnet has a flag 'Is it a VPN or a local network'. When this flag is set, MikoPBX will present itself as a local IP to all local subnets instead of external ones.

  • The flag 'Never block addresses from this network' should be enabled only for trusted subnets. If this flag is enabled, intrusion prevention rules will not apply to this subnet

Reboot

Description of section functions

Rebooting the station via the MikoPBX interface

The system shutdown/reboot menu can be found in MikoPBX by clicking on "Reboot" in the "Maintenance" section.

When you open the page, a list of active calls to the PBX will be displayed. The start date of the call is displayed, from whom and to whom the call.

As long as there are active calls, the reboot and shutdown will not be available via the web interface.

  • Restart the PBX - the command starts restarting the station.

  • Turn off PBX - completes all processes and disconnects the station.

Rebooting the station via the console menu

You can restart the station via the console menu. To do this, select the section "[3] Reboot the system"

  • If you want to restart the station: press "[1] Reboot MikoPBX"

  • If you want to turn off the station: press "[2] Shutdown"

The system will reboot.

Reboot with disk check

In case of an emergency restart of the PBX (for example, power outage), it may be necessary to check the disk for errors.

In the PBX console menu, enter the command "[9] Console(Shell)" and press Enter.

System launch the MikoPBX console.

Enter the command reboot. Press Enter.

The system will reboot with a disk check.

Network and Firewall

Description of the Network and Firewall section in MikoPBX

The "Network and Firewall" section of MikoPBX is an interface for configuring network settings and managing the system's firewall. Here, administrators can configure IP addresses, network interfaces, and create firewall rules to protect the system from unauthorized access. This section ensures the secure and stable operation of MikoPBX in the organization's network infrastructure.

Network interface

The "Network Interface" section in MikoPBX is an interface for configuring the system's network connection parameters. Here, administrators can manage IP addresses, subnet masks, gateways, and other network settings for each network interface. This allows MikoPBX to be correctly integrated into the organization's network and ensure its stable operation in accordance with the requirements of the network infrastructure.


Firewall

The "Firewall" section of MikoPBX is an interface for configuring the system's firewall. Here, administrators can create and manage network traffic filtering rules, controlling access to MikoPBX and protecting it from unauthorized access and network threats. Configuring the firewall ensures the security of the telephone system, preventing potential attacks and ensuring stable operation in the organization's network infrastructure.


Anti brute force (Fail2Ban)

The "Anti brute force (Fail2Ban)" section in MikoPBX is a tool for ensuring system security from unauthorized access and network attacks. Fail2Ban monitors event logs and automatically blocks IP addresses that make suspicious or repeated failed login attempts. Setting up this section helps prevent system hacking and protect the organization's confidential data.

System log entries

Description of section functions

The "System Diagnostics" section in MikoPBX is a tool for monitoring and analyzing the status of the telephone system. Using this section helps to promptly detect and eliminate technical problems, ensuring stable and efficient operation of MikoPBX.

Section location: "Maintenance" -> "System log entries"

Contains 3 tabs: Show log, System information, Capturing network packets.

Show log section

This section allows you to view log files for detailed analysis of PBX operations.

  1. To start, select a file.

  2. Set the lines for the number of lines to fetch.

  3. Set the offset value to shift the selection.

  4. Set the filter by entering a string to be included in the selection.

The following options are available:

Example: Call Analysis

Suppose you need to analyze an outgoing call to the number 74952293042.

  1. Select the log file asterisk/verbose.

  2. Set the phone number 74952293042 as the filter.

  3. Set the limit to a sufficient value, such as 2000, to ensure all log entries are included.

  4. In the last line of the log selection, find the identifier:

  1. In this example, the ID = C-0000000f.

  2. Repeat the log query but use the filter C-0000000f this time.

  3. You will receive the entire log of the dialplan process.

  4. The obtained data can be sent to technical support for further assistance.

System Information

The tab displays the following information:

  • Network settings

  • CPU load

  • RAM usage

  • iptables settings

Campuring network packets

This section allows you to perform a detailed analysis of errors in PBX operation.

Capturing Network Packets

You can start capturing network packets passing through the network interface.

  1. To start the process, press the Start button.

  1. Reproduce your issue: make a call or perform an action that causes the error or failure.

  2. Press the Stop and Download button.

The network packets will automatically be saved in the archive MikoPBXLogs_log-tcpdump-XXXXXXXXXX. They should also automatically save in your browser's Downloads folder.

You can use the search function in WinSCP by entering "log-tcpdump*" in the file name field and specifying the search directory as "/storage"

Download All System Logs

You can download all system logs accumulated on the PBX. To do this, click the Download All System Logs button.

The system logs will automatically be saved in the archive MikoPBXLogs_log-sys-XXXXXXXXXX.zip. The logs should also automatically save in your browser's Downloads folder. You can also obtain this log archive from the /storage/usbdisk1/mikopbx/tmp directory by connecting to the PBX using WinSCP. The file will be log-sys-XXXXXXXXXX.zip.

Be careful! If there are many calls or heavy network "load" on the PBX, logs can take up a significant amount of disk space.

Other ways to collect logs:

Below is an example of a PBX installed on a VirtualBOX virtual machine, updated from version 2023.1.223 to version 2023.2.206. Download the iso image of the required PBX version from the .

.iso image in MikoPBX release repository

In VirtualBOX, open the settings of the virtual machine where the PBX is installed. Go to the Storage section. Select the virtual optical drive. Click the icon in the Attributes group, and click Choose Disk File. Select the downloaded PBX iso image. Start the machine.

Selecting a disk file in the VirtualBox interface
MikoPBX Console
Update installation process
Updated version

Before updating, be sure to back up your PBX settings using the .

Displaying the version in the web interface
"PBX update" section
Section "Available online updates"

Be cautious! If the system is installed on the same disk where call recordings are stored, there may be difficulties with the update.

Updates are downloaded to the PBX and applied immediately. To update this way, click the button for the desired version.

Button to update the system
Warning window

To update using this method, click the button for the desired version.

Button to download the update file

Then click the button and select the downloaded img file.

Selecting a file to update
Installing the update
The update process
List of basic Application dialplans
"Add a new" button
Parameters of the new dialplan application
"Programme code" section

Download the selected log as a file .

Refresh the log .

Auto-refresh the log .

If you cannot find the archive in the Downloads folder, you can and download it from the /storage/usbdisk1/mikopbx/tmp directory - the file will be log-tcpdump-XXXXXXXXXX.zip.

Using an

Using the

Using the

repository
backup module
See forum
# Stop the current container
sudo docker stop mikopbx

# Remove the current container
sudo docker rm mikopbx
# Downloading the latest container image version
sudo docker pull ghcr.io/mikopbx/mikopbx-x86-64:latest

# Starting the container in unprivileged mode
sudo docker run --cap-add=NET_ADMIN --net=host --name mikopbx --hostname mikopbx \
           -v data_volume:/cf \
           -v data_volume:/storage \
           -e SSH_PORT=23 \
           -it -d --restart always ghcr.io/mikopbx/mikopbx-x86-64:latest
# Stop the current container
sudo docker stop mikopbx

# Remove the current container
sudo docker rm mikopbx
# Downloading the latest container image
sudo docker pull ghcr.io/mikopbx/mikopbx-x86-64:latest
docker-compose.yml
services:
  mikopbx:
    container_name: "mikopbx"
    image: "ghcr.io/mikopbx/mikopbx-x86-64:latest"
    network_mode: "host"
    cap_add:
      - NET_ADMIN
    entrypoint: "/sbin/docker-entrypoint"
    hostname:  "mikopbx-in-a-docker"
    volumes:
      - data_volume:/cf
      - data_volume:/storage
    tty: true
    environment:
      # Change the station name through environment variables
      - PBX_NAME=MikoPBX-in-Docker
      # Change the default SSH port to 23
      - SSH_PORT=23
      # Change the default WEB port to 8080
      - WEB_PORT=8080
      # Change the default WEB HTTPS port to 8443
      - WEB_HTTPS_PORT=8443
      
volumes:
  data_volume:
sudo docker compose -f docker-compose.yml up
[2023-03-18 16:28:17] VERBOSE[21654][C-0000000f] app_stack.c: Spawn extension (SIP-1676196499-22-outgoing, 74952293042, 13) exited non-zero on 'PJSIP/302-0000001a'

Updating from the web interface

Through the web interface of MikoPBX, using the built-in update mechanism

Updating from the MikoPBX console

From the MikoPBX console, use the command to download and install the new version

Updating the docker container

By downloading the latest MikoPBX container image and restarting with the new image

Cover
Cover
Cover
"Firewall and anti-hacking protection are enabled" switch
"Anti brute force" section
Parameters of the Anti Brute Force rule
Blocked addresses list
Unlock button
"Network Interface" Section in MikoPBX system
"Network interfaces" section
"Network topology" section
"System file customization" section
/etc/static-routes file
code for /etc/static-routes file
Section "Network and Firewall" -> "Firewall" in MikoPBX
Button for creating a new rule
Rule parameters
"Available service" section
"Advanced options" section
"Maintenance" -> "Reboot" section
List of active calls
System shutdown/reboot options
MikoPBX console
Restart/shutdown station
Console menu MikoPBX
Reboot command
Section "Network and Firewall" in MikoPBX
System logs section
Three sections
"Show log" section
Filters
System information section
"Computer network packets" section
"Start" button
"Stop" button
Logs file
"Download all system logs" button
Network interface
Firewall
connect to the PBX via WinSCP
SSH client
Wireshark utility
tcpdump application

General settings

Description of the settings of the main system parameters

This section configures the main system parameters. It is recommended to set these parameters immediately after installing the PBX.

Main Settings

  • The name of the PBX - will be displayed on the MikoPBX home page.

  • Additional Description - visible only to system administrators.

  • PBX sound messages language - specify the language for voice notifications.

  • Maximum lenght of extension - maximum length of the internal number (for employees).

  • Maximum Timeout Between Digits When Entering Extension.

  • Allow incoming calls from any servers

  • The PBX is restarted every night - restart Asterisk every night.

  • Send developers information about crashes - when an error occurs, its description will be sent to the developers (requires internet access).

Call Recording

  • Call Recording - enables/disables call recording.

  • Recording internal conversations - enables/disables internal call recording.

  • Save recordings in stereo changes the recording mode from mono to stereo. The recording stream will be split into incoming and outgoing channels and merged into a stereo file.

There is a slider that allows you to choose how long call recordings will be stored.

You can also select an audio file for call recording notifications.

Phone calls are saved in mp3 format. Here is an example of the final call recording file information:

Input File     : 'mikopbx-1554098285.0_M1gEr1pgrt.mp3'
Channels       : 1
Sample Rate    : 8000
Precision      : 16-bit
Duration       : 00:00:17.64 = 141120 samples ~ 1323 CDDA sectors
File Size      : 70.6k
Bit Rate       : 32.0k
Sample Encoding: MPEG audio (layer I, II or III)

Approximately, 1 hour of conversation takes up 14MB of disk space.

Call Transfers

Call Park Number

Call parking is a variant of "holding" a customer on the line. It is useful when you need to temporarily disconnect to clarify information. During parking, the customer will hear music.

MikoPBX supports two methods of parking customer calls:

  1. To park a customer call, enter *2. The customer's call will be put on hold by MikoPBX, and you will be informed of the parked call slot number. Any employee can pick up the call by dialing the parked call slot number from their phone.

  2. In the Call Transfers section, assign a Car Park Number. When the customer's call is transferred to the parking number, MikoPBX will park the call, and you will be informed of the parked call slot number. Any employee can pick up the call by dialing the parked call slot number.

You can set the range of parked call slot numbers in the Call Transfers section: Start Parking Slot and End Parking Slot.

Call Transfers

MikoPBX offers two types of transfers: Attended and Unattended (blind).

  • With an attended transfer, you can speak to the person before transferring the call. The caller will be on hold during this time. Once the person handling the transfer hangs up, the transfer is completed successfully.

  • An unattended transfer occurs when you transfer the call without first speaking to your colleague. For example, when you receive a second incoming call while already on the phone, you can transfer the new call to a colleague without interrupting your current call.

  • By default, the combination for an attended transfer is two pound signs (##).

  • By default, the combination for an unattended transfer is two asterisks (**).

Timeouts

The return time for a call if there is no answer after an unattended (blind) transfer is 45 seconds.

Call Pickup

If your colleague's phone is ringing, you can intercept the call by dialing *8. If you don't know your colleague's number, simply dial *8.

SIP

Session Initiation Protocol (SIP) is the signaling protocol used by most VoIP phones. You can change the SIP port (default is port 5060) to enhance security. Additionally, some SIP providers require additional parameters, such as Registration Periods (the time before the registration expires). Some firewalls close ports after a period of inactivity, which may require shortening the SIP provider's registration timeout. Another reason might be the need for different registration timeouts for certain SIP providers. The default values are:

  • SIPMiniExpiry - minimum registration duration in seconds, default is 60 seconds.

  • SIPMaxExpiry - maximum registration duration in seconds, default is 3600 seconds.

In real-time, the Transport Protocol (RTP) defines the standard format for transmitting audio and video over IP networks. By default, RTP uses port ranges between 10000 and 10200. Some routers and firewalls may require the port range to be adjusted. Another reason to adjust the port range is the number of simultaneous calls. Each call uses two RTP ports. This means if there are 200 ports, only 100 simultaneous calls are possible. If your phone system needs to handle more calls at once, you should expand the port range.

  • STUN Server Address - helps with PBX operation behind NAT, especially when using WebRTC.

  • Use WebRTC - additional settings will be configured for WebRTC connections. For example, for extension 201, an additional endpoint will be created, accessible via WebRTC using the URL sip:201-WS@IP_PBX

Audio/Video Codecs

Configuration of allowed codecs for the PBX.

AMI & AJAM

Asterisk Manager Interface (AMI) is a powerful and convenient API for Asterisk, allowing external programs to control the system. AMI allows external programs to connect to Asterisk via the TCP protocol, execute commands, read results, and receive notifications of real-time events. AMI is often used for integration with business processes and CRM (Customer Relationship Management) systems. AMI listens for connections on a network port (default TCP port 5038). Once a client program connects and authenticates, Asterisk responds to requests and sends notifications about changes in subsystem states.

Asynchronous Javascript Asterisk Manager (AJAM) is a new technology that allows web browsers or other HTTP-capable applications to directly interact with the Asterisk Manager (AMI) interface via HTTP/HTTPS. By default, port 8088 is used.

SSH

SSH or Secure Shell is an encrypted protocol commonly used for interacting with and remotely managing servers. The SSH server can authenticate users using various algorithms. The most popular method is password authentication. It's simple but not very secure. Passwords are transmitted over a secure channel, but they may not be strong enough to resist brute-force attempts. The computing power of modern systems, combined with special scripts, makes brute-forcing very easy.

Default SSH client authorization in MikoPBX:

  • Login - root

  • Password - admin (we recommend changing this immediately)

A more secure and reliable authentication method is SSH keys. Each key pair consists of a public and private key. The private key is stored on the client side and should not be accessible to anyone else. If the private key is leaked, the attacker will be able to log in to the server unless additional password authentication is set up.

We highly recommend disabling password authentication. To do this, enable the "Disable password authorization" option.

The public key is used to encrypt messages, which can only be decrypted with the private key. This property is used for authentication with key pairs. The public key is uploaded to the remote server where access is needed. It should be added to the special file ~/.ssh/authorized_keys.

When the client tries to authenticate with this key, the server sends a message encrypted with the public key. If the client can decrypt it and return the correct response, authentication is successful.

You can save the public SSH key on the PBX in the SSH Authorized Keys field. If you have multiple public keys, you can paste them one after the other, separated by a blank line.

Web Interface

In this subsection, you can increase security by changing the HTTP port (default is port 80) or activating HTTPS mode.

HTTPS (HyperText Transfer Protocol Secure) is an extension of HTTP that supports encryption for enhanced security. HTTPS data is transmitted over cryptographic protocols such as SSL or TLS. Unlike HTTP, which uses TCP port 80, HTTPS uses TCP port 443 by default.

  • Redirect to HTTPS - when attempting to open the web interface via HTTP, the user will be redirected to HTTPS.

Web Interface Password

In this subsection, you need to change the WEB interface Login and Password.

Default MikoPBX authorization:

  • Login - admin

  • Password - admin

Delete all system settings

Time Settings

In this subsection, you can configure the clock and calendar settings.

You need to set the time zone correctly to ensure accurate system time display. If the time zone is not set, notifications and call history will be recorded with incorrect timestamps.

To configure the time zone, go to the "System" section and select "Time Settings":

There is an option to set the time "manually" without using an NTP server. However, whenever possible, we recommend using automatic time synchronization.

To manually set the time, toggle the switch "Adjust the time manually."

System

Description of the "System" section in MikoPBX

The "System" section in MikoPBX is the interface for managing general settings and parameters of the telephone system. Here, administrators can configure core system parameters, manage updates, date, and other functions that ensure stable and secure operation of MikoPBX. This section allows you to control and optimize the system's operation at the entire infrastructure level.

General settings

In the "General settings" section of MikoPBX, administrators can manage the main system parameters, such as call recording retention settings, notifications, log parameters, voice prompt language, and many other system options. This section provides control over general functions and behavior of MikoPBX, allowing you to optimize the system's operation according to the organization's needs.


Time Settings

The "Time Settings" section in MikoPBX is an interface for configuring system date and time parameters. Here, administrators can set the current date and time, choose a time zone, and configure synchronization with Network Time Protocol (NTP) servers. Correct date and time settings are important for accurate event logging, call logs, and the operation of schedule-dependent functions, ensuring system synchronization with other network devices and services.


Mail settings

The "Mail settings" section in MikoPBX allows you to configure sending system notifications via email. Here, administrators specify SMTP server parameters, define events for notifications, such as voice messages or system errors, and edit email templates. This section helps to timely inform users and administrators about important events, ensuring effective control over the system's operation.


Asterisk Manager Inteface (AMI)

The "Asterisk Manager Inteface (AMI)" section in MikoPBX is an interface for configuring access to the Asterisk Manager Interface (AMI). Here, administrators can manage AMI connection parameters, such as enabling or disabling access, specifying login credentials for authentication. Configuring AMI access allows external applications or scripts to interact with the MikoPBX system for monitoring and managing calls, expanding the telephone system's functional capabilities.


System files customization

The "System files customization" section in MikoPBX provides administrators with the ability to directly modify or supplement the system's standard configuration files. Here, you can make individual settings that are not available through the standard web interface and adapt the system's behavior to the specific requirements of your organization.

This section is intended for advanced users who have a deep understanding of the structure and operation of MikoPBX. With its help, you can:

  • Edit configuration files: Make changes to existing files or add new parameters.

  • Override standard settings: Change default values for certain functions or modules.

  • Add your own scripts or modules: Expand the system's functionality by integrating custom solutions.

It is important to note that incorrect modification of system files can lead to unstable operation or system failures. Therefore, it is recommended to create backups before making changes and to carefully check the correctness of the settings.

Setting up E-mail notifications for the Gmail mail service

Setting up mail for gmail service

  1. Enter the IP address of the MikoPBX PBX in the browser and go to System → Mail Settings

SMTP Client Settings for Gmail service:

  • SMPT host - smtp.gmail.com

  • SMPT port - 465 (Customer Service port)

  • SMPT login and Sender address- the E-mail from which messages about missed calls will be sent

  • SMPT Password - the email password required for authorization

  • Encryption Method - Use TLS

  1. Go back to System → Mail Settings. We will send a test letter to the e-mail of any service. In case of successful testing, a test email will be sent to the email address you specified.

Mail settings

Setting up mail and notifications

The Mail and Notifications section in MikoPBX allows you to configure sending system notifications via email. Here, administrators specify SMTP server parameters, define notification events such as voice messages or system errors, and edit email templates. This section helps to promptly inform users and administrators about important events, ensuring effective control over the system.

Connecting to the SMTP server

To receive notifications about missed calls and voicemail messages by email, you need to configure the SMTP client. SMTP (Simple Mail Transfer Protocol) is used to send e-mail over the Internet. SMTP clients interact with an SMTP server that sends email.

  • SMTP host - address of the mail server

  • SMTP port - the port of the mail server

  • SMTP login, SMTP password - authorization parameters

  • Sender's address - Emails will be sent on behalf of this address Email of the system administrator - all system notifications will be sent to this email address, for example, about the lack of disk space. When changing and saving the settings, a test email will be sent to this address

  • Use TLS - activates the use of encryption when connecting to the server, to connect via SSL, you need to add a protocol description to the server address

  • Validate server certificate - in some cases it is necessary to disable it when using self-signed certificates

  • Use mail motifications - allows you to enable/disable all email alerts, including voice mail

If the server supports a secure connection only over SSL, then you can explicitly specify the protocol in the "SMTP host" field, for example:

Setting up notifications for mail services:

Missed Notifications

It is possible to customize the address and template for notifications about missed calls:

  • Email for missed notifications - by default, missed notifications are sent to the email specified in the employee card. If the call cannot be matched with an employee or email is not specified, the call will be sent to this "shared" address

  • The subject, text, and footer of the letter may contain parameters in the form of PARAMETER_NAME

List of available "parameters":

  • NOTIFICATION_MISSEDCAUSE - currently always takes the value "NOANSWER", i.e. a missed call

  • NOTIFICATION_CALLERID - who was the call from

  • NOTIFICATION_TO - who was the call to

  • NOTIFICATION_DURATION - duration in seconds

  • NOTIFICATION_DATE - date of the call

Voice mail

It is possible to set up an address and a template for a voicemail notification:

  • Voice mail will be sent to each employee who missed the call (if the email is specified in his card).

  • Voicemail will always be sent to the "Email address to receive all voice mail records"

The following "parameters" can be used in the subject, body and footer of the email:

  • VM_DATE - date and time

  • VM_CALLERID - caller's callerid, consists of name and num, example "Alex Magnet" <101>

  • VM_DUR - message duration

  • VM_CALLER_NAME - caller's name (taken from VM_CALLERID)

  • VM_CALLER_NUM - caller's phone number (taken from VM_CALLERID)

To specify a parameter, you need to use a construction of the form PARAMETER_NAME.

Click Save to complete the setup.

Asterisk Manager Interface(AMI)

Setting up AMI access

Asterisk Manager Interface (AMI) is a powerful and convenient Asterisk programming interface (API) for managing the system from external programs. Thanks to the AMI, external programs can connect to Asterisk via the TCP protocol, initiate the execution of commands, read the result of their execution, as well as receive notifications about events in real time.

AMI is often used for integration with business processes and systems, CRM software (Customer Relationship Management - customer interaction management). Asterisk is often managed from the CLI console, but using AMI does not require direct access to the server running Asterisk. AMI is the simplest tool, which in the hands of a developer can be a very powerful and flexible tool for integration with other software products. It enables developers to use the information generated by Asterisk in real time.

The first thing to do is to enable the AMI and create a user with which the client program will authenticate. "System" -> "Asterisk Manager Interface(AMI)":

AMI User Options and Rights

AMI user rights set in the [user] section of the configuration file /etc/asterisk/manager.conf

General settings section in the MikoPBX system
Main Settings section
Call recording section
Call transfers section
Sip settings section
Audio / Video Codecs Section
AMI&AJAM Section
SSH settings

How to create an SSH key for authorization and add it to the server? Read more .

Web-interface section

When the system starts, the PBX generates its own certificate for HTTPS operation - this is a "self-signed" certificate, not verified by a public "registrar," but it still allows HTTPS operation and encrypts traffic between the PBX and the browser. You can use module.

WEB interface password settings
"Delete all system settings" section

Always use "Application Passwords" for authorization. . for setting up smtp from Gmail.

To receive notifications about missed calls by email, you need to configure the SMTP client. Detailed information about notifications in MikoPBX is reviewed . As part of this instruction, an example of setting up missed call notifications for the Gmail mail service will be considered.

Save the entered settings and proceed to setting up your email account. A feature of the Gmail service is that access to your account is automatically denied to untrusted applications, which include MikoPBX, so you need to manually allow access to these applications (setup instructions are posted ).

You can read about how to set up a letter template to create an E-mail notification .

It is possible to listen to the voicemail recording from the

To add a new account, you must specify a Username and Password. In addition, it is necessary to set a Network filter, i.e. from which subnet the connection to the AMI user is allowed. You can allow connections from any addresses, or specify a specific network that you have configured in the "Network and Firewall" → ""

rights ID
reading
writing
here
Let's encrypt
ssl://smtp.gmail.com

System

Reading general information about the system, for example, configuration restart notifications

Allows the user to execute Asterisk control system commands such as Restart, Reload, or Shutdown. This permission also gives users the ability to run system commands outside of Asterisk. Granting such permission is equivalent to granting access to the command shell, with the rights of the user/group under which the Asterisk process is running

Call

Reading an event about channels in the system

Allows the user to set information on channels

Log

Provides the user with access to reading logs

Read only

Verbose

Provides the user with access to reading detailed logs

Read only

Agent

Reading agent status events from app_queue and chan_agent modules

Allows the user to perform actions to manage and retrieve the status of queues and agents

User

Access to user events as well as Jabber/XMPP user events

Allows the user to execute the UserEvent command to create custom events

Config

For recording only

Allows the user to receive, update, and overload configuration files

Command

For recording only

Allows the user to execute Asterisk CLI commands from AMI

DTMF

Allows the user to receive DTMF events

Read only

Reporting

Access to call quality events such as jitterbuffer or RTCP

Allows the user to perform a number of actions to obtain statistics and information about the status of the entire system

Cdr

Reading data write events in CDR

Read only

Dialplan

Reading events for setting dialplan variables, creating extents

Read only

Originate

For recording only

Allowing the user to execute the Originate command, which sends a request to create a new call

"Time Settings" section
"Adjust the time manually" switch
"System" section in the MikoPBX system
"Mail settings" section
SMPT Settings section
"Mail settings" section in the MikoPBX system
"Template - missed calls" section
Template - Voicemail" section
"Asterisk Manager Interface (AMI)" section
New User AMI Parameters
General settings
Time Settings
Mail settings
Asterisk Manager Interface(AMI)
System files customisation
See instructions
Instructions
here
here
here
Gmail
PBX call history
Firewall

Maintenance

Description of the Maintenance section in MikoPBX

The Maintenance section of MikoPBX is an interface for managing the technical aspects of the system and ensuring its stable operation. Here, administrators can perform tasks on data backup and recovery, software updates, system status monitoring, and event log management. This section helps maintain the functionality of the telephone system, promptly detect and eliminate possible problems.

PBX update

The "PBX update" section in MikoPBX is an interface for managing system software updates. Here, administrators can check for new versions, install updates, and view the change history. Regular use of this section ensures that MikoPBX is up-to-date, secure, and stable.


System log entries

The "System log entries" section in MikoPBX is a tool for monitoring and analyzing the status of the telephone system. Here, administrators can view event logs, check the status of various services and system components, and test connections and calls. Using this section helps to promptly detect and eliminate technical problems, ensuring stable and efficient operation of MikoPBX.


Reboot

The "Reboot" section in MikoPBX is an interface for securely managing the state of the telephone system via the web interface. Here, administrators can reboot the system to apply new settings or shut it down gracefully for maintenance. Using this section prevents possible errors and ensures stable operation of MikoPBX. In addition, the possibility of rebooting via the console will be discussed.

Transfer Using Backup

A method to transfer MikoPBX to another host using backup

This method involves creating a backup of your current MikoPBX configuration, transferring it, and restoring it on the new server. It’s simple to implement and suitable for small systems. This approach is convenient for users with minimal technical experience.

  1. Select the data you want to transfer and wait for the process to complete.

  1. Download your archive by clicking the corresponding button in the "Backup Module" section:

  1. On the new host (server) with your MikoPBX installation, restore from the archive by clicking "Upload backup file":

After this, your system will be restored from the archive. This method is ideal for transferring small amounts of data.

Migrating MikoPBX to Another Server

Overview of methods for transferring MikoPBX to another server

There are several ways to transfer MikoPBX to a different host (server). Each method has its advantages and special considerations. Below is a brief overview of each option, and you can refer to the detailed guides in this section.

Option #1: Transfer Using Backup

Description:

A backup of the current MikoPBX configuration is created and then uploaded to the new server. This method is suitable for smaller amounts of data.

Pros:

  • Easy to set up.

  • Allows you to preserve the current configuration.

Considerations:

  • May be less reliable for large amounts of data.

  • Requires intermediate storage for the backup (e.g., local disk or cloud).


Option #2: Transfer Using SFTP and Scheduled Backups

Description:

A backup is automatically created and saved directly to the target server via the SFTP protocol. This method is especially effective for large amounts of data.

Pros:

  • Suitable for large amounts of data.

  • Minimizes manual actions.

  • Provides direct data transfer between servers.

Considerations:

  • Requires SFTP configuration on both servers.

  • Needs correct SSH user settings for proper operation.


Option #3: Transfer Using rsync

Description:

The rsync command is used to directly synchronize data between the old and new servers. This method is convenient for experienced users.

Pros:

  • Fast synchronization, even for large data volumes.

  • Preserves access rights and directory structure.

  • Does not require creating intermediate backups.

Considerations:

  • Requires basic command-line knowledge.

  • Possible errors if configurations (e.g., paths) are incorrect.

  • Both servers must be accessible on the network at the same time.


Fine-tuning the firewall

When publishing a PBX on a public IP address, the task arises to protect the speaker from scanners, pests who are trying to pick up passwords to SIP PBX accounts. If a simple numeric password is set, it will be picked up very quickly, which will cause losses.

For basic protection against scanners, fail2ban must be enabled. Additionally, you can fine-tune the iptables rules.

  1. Go to the "System file customization" section

  1. Go to edit the /etc/firewall_additional file

  1. Set the "Add to end of file" mode, insert the following code:

The added rule allows blocking all incoming requests over the UDP protocol that contain the substring "friendly-scanner"

A more complete example of a set of rules:

This will protect you from most scanners that I mention User-Agent when requesting.

First, create a backup of your previous system. You can find detailed instructions in .

iptables -I INPUT 2 -p udp -m udp --dport 5060 -m string --string 'friendly-scanner' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p udp -m udp --dport 5060 -m string --string 'sipcli' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p udp -m udp --dport 5060 -m string --string 'sip-scan' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p udp -m udp --dport 5060 -m string --string 'iWar' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p udp -m udp --dport 5060 -m string --string 'sipvicious' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p udp -m udp --dport 5060 -m string --string 'sipsak' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p udp -m udp --dport 5060 -m string --string 'sundayddr' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p udp -m udp --dport 5060 -m string --string 'VaxSIPUserAgent' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p udp -m udp --dport 5060 -m string --string 'friendly-scanner' --algo bm --to 65535 -j DROP

iptables -I INPUT 2 -p tcp -m tcp --dport 5060 -m string --string 'sipcli' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p tcp -m tcp --dport 5060 -m string --string 'sip-scan' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p tcp -m tcp --dport 5060 -m string --string 'iWar' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p tcp -m tcp --dport 5060 -m string --string 'sipvicious' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p tcp -m tcp --dport 5060 -m string --string 'sipsak' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p tcp -m tcp --dport 5060 -m string --string 'sundayddr' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p tcp -m tcp --dport 5060 -m string --string 'VaxSIPUserAgent' --algo bm --to 65535 -j DROP
iptables -I INPUT 2 -p tcp -m tcp --dport 5060 -m string --string 'friendly-scanner' --algo bm --to 65535 -j DROP
"Maintenance" section in MikoPBX
Creating a new backup copy
Selecting data for backup copy
Button to download archive
"Upload backup file" button
"System file customization" section
File "/etc/firewall_additional"
The code for the file "/etc/firewall_additional"
PBX update
System log entries
Reboot
this article
Transfer Using Backup
Transfer using scheduled backup (SFTP)
Transfer using rsync

Installation on MDADM RAID1

Preparation

WARNING: All data on the disks will be erased.

  1. Prepare a PC with two disks of the same size.

RAID 1 Assembly

  1. Run the following command in the console to display disk names:

fdisk -l
  1. The disk names will be displayed. In this example, the disk names are:

/dev/sda
/dev/sdb
  1. Clear the superblocks on the disks:

bashCopy codemdadm --zero-superblock --force /dev/sd{b,a}
  1. Clean the old metadata:

bashCopy codewipefs --all --force /dev/sd{b,a}
  1. Create the RAID1 array:

bashCopy codemdadm --create --metadata=0.90 --verbose /dev/md0 -l 1 -n 2 /dev/sd{b,a}
  1. When prompted with "Continue creating array?", confirm by entering "y".

Grub

TODO: You may need to modify the grub.cfg file. Otherwise, there is no guarantee that the system will boot if one of the disks fails.

System files customisation

Description of the capabilities of the "System file customization" section

The system file customization section can be found under "System" -> "System file customization":

This section allows for customization of system and Asterisk configuration files. We recommend using this section only for experienced Asterisk administrators. MikoPBX provides the ability to modify the following configuration files via the web interface:

File Name

Description

asterisk.conf

General (global) settings of Asterisk. In the asterisk.conf configuration file, you define the following: - The location, permissions, and owner of the socket used to connect the remote management console to the server. The location of various directories used by the Asterisk server to determine where configuration files, libraries, scripts, and logs will be created. Default command-line parameters for starting the server.

cel.conf

Channel Event Logging. Unlike CDR, it logs all events that occur in the channel.

extensions.conf

The Asterisk dialplan. It defines how incoming and outgoing calls are handled and routed. This file controls the behavior of all connections passing through your PBX.

features.conf

The file defines custom codes and options for Asterisk functions like call transfer, call pickup, on-demand recording, digit timeout, call parking, etc.

http.conf

Built-in Asterisk HTTP server configuration.

iax.conf

Describes your IAX protocol connections.

indications.conf

Nationalization of tonal signals.

logger.conf

Asterisk logging configuration. This file configures logging of Asterisk events to files, console, and Linux syslog. To apply settings, run the command "logger reload" in the Asterisk console (CLI).

manager.conf

AMI (Asterisk Manager Interface) configuration.

modules.conf

Asterisk module loading parameters.

musiconhold.conf

Music-on-hold settings in IVR.

queues.conf

Asterisk queue settings. Detailed description of call strategies, penalty, timeout, member, and other available parameters.

rtp.conf

Global RTP settings – media ports and protocol.

sip.conf

Configures internal and external SIP channels in Asterisk.

voicemail.conf

Email notification settings.

jail.local

Fail2ban settings.

msmtp.conf

SMTP client settings.

You will be presented with the configuration file editing form:

Choose one of four editing options:

  • "Not change" - prevents modifications, read-only mode.

  • "Add to end of file" - appends content to the end of the selected configuration file (recommended).

  • "To replace all" - your changes will completely overwrite the configuration file.

  • "Script" mode in MikoPBX system file customization allows administrators to add custom scripts or commands directly into the configuration files. This mode is ideal for advanced users who need to execute specific actions, automate tasks, or modify system behavior dynamically, enhancing the flexibility of the PBX configuration. It should be used with caution to avoid system disruptions.

Customizing System Files with Scripts

In some cases, more complex modifications to system files are required than simply adding text to the end of a configuration file. For instance, you may need to redistribute PJSIP account parameters while retaining the ability to configure the system through the web interface.

We've introduced a new approach to customization, where you can describe a Bash script that will execute each time the system generates a configuration file. This way, integrators can make precise changes to configuration files without developing additional modules.

For example, you can modify the pjsip.conf file and change the max_contacts parameter for all internal numbers, except one.

sip.conf

You can add parameters to an existing section using the (+) syntax:

[user2_pingtel]
type=friend
username=user2_pingtel
secret=blah
host=dynamic
qualify=1000 ; Consider the client unreachable if response time exceeds 1 sec.
callgroup=1,3-4 ; The client is a member of call groups: 1, 3, and 4.
pickupgroup=1,3-4 ; We can "pick up" calls using *8 for calls in groups 1, 3, and 4.
defaultip=192.168.0.60
disallow=all
allow=ulaw
allow=alaw
allow=g729

extensions.conf

Modify the dialplan with caution – there is a high chance of disrupting the PBX!

It is possible to intercept the execution of the dialplan by defining custom contexts. Currently, you can intercept executions in the following contexts:

  • internal-originate-custom - used for calls originating from the telephony panel for 1C.

  • <PROVIDER-ID>-incoming-custom - used for handling incoming calls from the provider.

  • <PROVIDER-ID>-outgoing-custom - used for handling outgoing calls via the provider.

  • all_peers-custom - used for direct outgoing calls from a phone.

  • outgoing-custom - used when dialing an external number, before selecting an outbound route.

  • add-trim-prefix-clid-custom - used for handling incoming calls, best suited for normalizing incoming phone numbers by adding/removing a prefix.

  • internal-users-custom - used for handling calls to internal extensions.

  • public-direct-dial-custom - used for handling incoming calls without authentication.

Example context:

[outgoing-custom]
exten => _X!,1,NoOp(--- hangup - ${CHANNEL} ---)
    same => n,return

Make sure to call the method "return" at the end.

Some examples of using custom contexts:

  • Configuring outbound AOH for an employee

Transfer using rsync

A method for transferring MikoPBX to another host using rsync (preferred)

This article discusses transferring data to a new host using rsync. This approach uses a generated SSH key for authentication, making it the most reliable and therefore the recommended method.

Schematically, the transfer process can be depicted as follows:

Creating the Script File and Adding Content

  1. Once connected, switch to the console ([9] Console). First, you need to create a directory to store the script file. Use the following command:

mkdir -p /storage/usbdisk1/transfer
  1. Navigate to the created directory:

cd /storage/usbdisk1/transfer
  1. Create the file "transfer-rsync.sh" to store the script:

touch transfer-rsync.sh

Use the following command to download the script:

curl -o /storage/usbdisk1/transfer/transfer-rsync.sh https://gist.githubusercontent.com/excla1mmm/c9891306b459cac0c7ea3c785ab0936e/raw/ec57ab60ee48112b4a16635e7b47955e5a044513/transfer-rsync.sh

Running and Using the Script

  1. Make the file executable:

chmod +x transfer-rsync.sh
  1. Run the script:

./transfer-rsync.sh
  1. You will be prompted to enter necessary information about your old MikoPBX:

  • IP address of your old station

  • Username for SSH authentication

  • Port for SSH authentication

  1. Next, you’ll be asked whether to generate a new key. If you haven’t done this before, type "y" to confirm. If you previously generated a key for accessing the second MikoPBX, type "n":

  1. A new SSH key will be created. You must copy this key and insert it into the web interface of your old MikoPBX at General Settings → SSH → SSH Authorized keys field.

  1. After saving the key on the old MikoPBX, wait a few seconds, then press any key to continue the script.

The transfer of all data to the new host will begin. This may take some time.

After the transfer, always verify the integrity of all data before retiring the old MikoPBX!

Reset to factory settings

Method 1

  1. Go to "General Settings" -> "Delete all system settings"

  1. In the input field, paste the text "delete everything", click "Save settings"

Method 2

  1. Open the MikoPBX console menu. Use the keyboard to enter 9 to go to the PBX console.

  1. Enter two commands sequentially:

  1. After executing these commands, MikoPBX will reboot. The login to the web interface takes place with the login (admin) and password (admin) by default.

Boot the machine in.

Connect to the machine via .

You can now proceed with the installation as per the . When selecting the disk during installation, choose md0.

System file customization section

To edit a configuration file, use the button:

Customization menu of the system file /acl.conf (example)
File customization with "Scripts"

Data transfer scheme

First, establish an SSH connection to your new MikoPBX. You can find instructions on how to do this in .

Successful SSH connection to the new MikoPBX
Running commands to create a file

Next, you need to fill the file with the script content. You can find the script .

Entering the required data
Generating a new key
Generated ssh key
Inserted key
Successful transfer
LiveCD or LiveUSB mode
SSH
installation guide
Call through a specific provider
this article
here
cp /conf.default/mikopbx.db /cf/conf/mikopbx.db
reboot

Change the login name

When configuring SIP Clients, you can often see two key parameters:

  1. Username - usually equal to the account ID, in the case of MikoPBX equal to the internal number

  2. Auth name - username for authorization. In the case of MikoPBX is equal to the internal number

To change the authorization name:

  1. Open the employee's account for editing

  1. Go to "Advanced Settings" → "Advanced SIP Settings"

  1. Add the following lines:

[auth] 
username = MIKO204

Instead of MIKO204, specify a name for authorization, it is advisable to use both letters and numbers

Transfer using scheduled backup (SFTP)

A method to transfer MikoPBX to another host using scheduled backup via SFTP

The second method involves setting up automatic scheduled backups, saving the data directly onto the target server via SFTP. This approach is particularly convenient for transferring larger amounts of data, as it eliminates the need for intermediate storage of the backup.

Configuring Scheduled Backup

First, you need to configure scheduled backups for the MikoPBX you want to transfer data from.

  1. Go to the "Backup" module. Navigate to the "Backup Schedule" tab:

  1. Next, set the scheduled backup parameters:

  • Server Address: Enter the address of your new MikoPBX server.

  • Mode: SFTP mode

  • Port: 22

  • Username: The SSH username for your new MikoPBX server.

  • Password: The SSH password for your new MikoPBX server.

  • The path on the server: "/storage/usbdisk1/mikopbx/backup/"

For information on SSH connection, refer to the related documentation. To start the backup immediately after saving the settings, choose the option "Start backup immediately after saving settings". You can also select the specific data you want to transfer in the corresponding section.

Wait for the backup to complete, and then shut down the old machine.

Restoring from the Backup on the New Host

If the data transfer is successful, your backup will appear in the backup module section on the new host:

To restore from the backup on your new host, do the following:

  1. Go to the backup settings by clicking on the respective element:

  1. Select the data you need to transfer and click "Restore from a backup":

Monitoring Providers on MikoPBX

When working with telecom service providers, issues may occasionally arise. For example, the provider's server might become unresponsive or unavailable. This article provides a mechanism for notifying the system administrator via email.

To enable notifications, you will need to configure the SMTP client. See instructions in the section "Mail and Notifications".

  1. Create a new "Dialplan Application".

  1. Enter a name (e.g., Blacklist), a short number for the application (e.g., 99), and select "Code Type" - "PHP AGI Script".

  1. Go to the "Program Code" tab:

  1. Insert the following code:

<?php
use MikoPBX\Common\Models\PbxSettings;
use MikoPBX\Common\Models\LanInterfaces;
use MikoPBX\Core\System\Notifications;
use MikoPBX\PBXCoreREST\Lib\SIPStackProcessor;

require_once 'Globals.php';

$result = SIPStackProcessor::callBack(['action' => 'getRegistry']);
$adminMail = null;
$localIP = '';
$message = '';
foreach ($result->data as $provider) {
    if ($provider['state'] !== 'OFF' && $provider['state'] !== 'REGISTERED') {
        if ($adminMail === null) {
            $adminMail = PbxSettings::getValueByKey('SystemNotificationsEmail');
            $interfaces = LanInterfaces::find("disabled='0'");
            foreach ($interfaces as $interface) {
                if (!empty($interface->ipaddr)) {
                    $localIP = $interface->ipaddr;
                    break;
                }
            }
        }
        $message .= "Provider state: {$provider['state']}<br>" . "Url (local): ']} <br><br>";
    }
}

if (!empty($message) && !empty($adminMail)) {
    $notify = new Notifications();
    try {
        $notify->sendMail($adminMail, 'Provider invalid state...', $message);
    } catch (\Throwable $e) {
    }
}
  1. Save the changes and copy the dialplan application identifier from the browser's address bar. It will look like "DIALPLAN-APP-CF967EE0".

  1. Go to System → Customizing System Files and open the file /var/spool/cron/crontabs/root for editing.

  1. Select the mode "Append to the end of the file", and in the black editing field at the bottom, insert the following code:

Adjust the file name according to your dialplan application identifier "DIALPLAN-APP-CF967EE0

*/5 * * * * /usr/bin/php -f /var/lib/asterisk/agi-bin/DIALPLAN-APP-9С060381.php start > /dev/null 2> /dev/null 

Save the changes.

You're done!

Storing Recordings in a Shared Windows Folder

In some cases, it is necessary to save call recordings on a network drive. This example shows how to connect a shared Windows folder to MikoPBX.

Note: If the network folder becomes unavailable, it may cause disruptions in PBX operation.

  1. Create a directory for the script:

  1. Create the script file:

  1. Insert the script content:

  1. Press "CTRL+D" twice to finish creating the file.

  2. Grant execution permissions:

  1. In the script variables "HOST, USER, PASS", specify the connection parameters to the shared folder.

  2. Add the script to cron for automatic connection of the shared folder.

  3. Go to the System → Customizing System Files section.

  4. Add the following rule to the end of the /var/spool/cron/crontabs/root file:

Test the PBX operation to ensure that call recordings are being saved to the network drive.

The extra disk space has run out, the disk size has increased

Some virtual machines allow you to increase the disk size

Be sure to back up your data before you work!

Control of free disk space

The data storage disk is usually mounted in the "/storage/usbdisk1" directory. From the example above, it can be seen that 4.5G of 4.9G is currently available.

Disabling the disk

Before starting work, you should unmount the disk. To do this, run the script:

Make sure that the data storage disk is no longer mounted:

Editing the Partition table

Deleting a partition

First, delete the existing partition. This operation does NOT delete data on the disk, just edits the partition table.

Launching the Section Editor:

The system will prompt you to enter a command, enter "d" and press Enter:

Система запросит выбрать раздел к удалению, он один, вводим номер раздела «1» и жмем Enter:

Сохраняем таблицу разделов, вводим команду «w» и жмем Enter:

Adding a larger section

Launching the Section Editor:

The system will prompt you to enter a command, enter "n" and press Enter:

Next, specify the command "p", the section will be primary, press Enter:

Enter the number of the created section "1", press Enter:

Next, the system will ask you to enter the numbers of the first and last sector "First sector" / "Last sector", wait for Enter, do not enter anything and agree with the "default" values.

Checking a new partition

The size of the partition must match the size of the disk.

Checking the section for errors

Run the verification command:

Example of the result of the team's work:

Partition file system size

Run the command:

Example of command output:

Rebooting and mounting

When booting, the system will automatically mount a disk for data storage:

When a new is added to the PBX, a SIP account with a numeric internal number is created on the PBX. In some cases, for security reasons, it is necessary to change the name for authorization of this employee.

Section "Employees"
Advanced Employee Settings
Additional parameters
"Backup schedule" button
Parameters of backup
Backup copy
Way to recovery settings from a copy
"Restore from a backup"
Creating a new dialplan application
Parameters of dialplan
Identificator of dialplan application
File for editing

To execute the following commands, you will need to .

Employee
mkdir /storage/usbdisk1/mikopbx/custom_modules/shared-folder-script
/cat > /storage/usbdisk1/mikopbx/custom_modules/shared-folder-script/mount-shared-folder.sh
#!/bin/sh
HOST='//172.16.32.38/SharedFolder';
USER='';
PASS='';
REC_DIR='autorecords';
mountPoint='/storage/win-shared';

createLink ()
{
  subDir="$(date '+%Y/%m')";
  monitorDir="$(/bin/busybox grep monitordir < /etc/inc/mikopbx-settings.json | /bin/busybox cut -f 4 -d '"')";
  if [ "${monitorDir}x" = 'x' ];then
    echo "Empty monitor dir";
    return;
  fi;
  /bin/busybox mkdir -p "$monitorDir" "$mountPoint/$REC_DIR/$subDir";
  if [ ! -L "$monitorDir/$subDir" ] && [ -d "$monitorDir/$subDir" ];then
    cp -r "$monitorDir/$subDir/"*  "$mountPoint/$REC_DIR/$subDir";
    rm -rf "${monitorDir:?}/$subDir/";
    ln -s "$mountPoint/$REC_DIR/$subDir" "${monitorDir:?}/$subDir";
  fi;

  if [ ! -L "$monitorDir/$subDir" ] && [ ! -f "${monitorDir:?}/$subDir" ]; then
    ln -s "$mountPoint/$REC_DIR/$subDir" "${monitorDir:?}/$subDir";
  fi;
}

/bin/busybox mount | /bin/busybox grep "$HOST";
resGrep="$?";
if [ "$resGrep" = "0" ]; then
  echo "Disk is mounted..."
  createLink;
  exit 2;
fi;

mkdir -p "$mountPoint";
/bin/busybox mount -t cifs "$HOST" "$mountPoint" -o "username=$USER,password=$PASS,vers=2.0"
resMount="$?";

if [ "$resMount" != '0' ];then
  echo "Error mount $HOST"
  exit 1;
fi;

createLink;
chmod +x /storage/usbdisk1/mikopbx/custom_modules/shared-folder-script/mount-shared-folder.sh
*/1 * * * * /storage/usbdisk1/mikopbx/custom_modules/shared-folder-script/mount-shared-folder.sh > /dev/null 2> /dev/null
~ # df -h
Filesystem                Size      Used Available Use% Mounted on
none                    281.3M    324.0K    281.0M   0% /dev
/dev/sda2               392.3M    384.6M      3.8M  99% /offload
/dev/sda3                14.1M    915.0K     12.9M   6% /cf
/dev/sdb1                 4.9G     71.0M      4.5G   2% /storage/usbdisk1
~ # /sbin/freestorage
~ # df -h
Filesystem                Size      Used Available Use% Mounted on
none                    281.3M    324.0K    281.0M   0% /dev
/dev/sda2               392.3M    388.3M         0 100% /offload
/dev/sda3                14.1M    915.0K     12.9M   6% /cf
# fdisk /dev/sdb
Command (m for help): d
Selected partition 1
Command (m for help): w
# fdisk /dev/sdb
Command (m for help): n
Command action p
Partition number (1-4): 1
~ # fdisk -l 
Disk /dev/sdb: 10 GB, 10737418240 bytes, 20971520 sectors
1305 cylinders, 255 heads, 63 sectors/track
Units: cylinders of 16065 * 512 = 8225280 bytes

Device  Boot StartCHS    EndCHS        StartLBA     EndLBA    Sectors  Size Id Type
/dev/sdb1    0,1,1       1023,254,63         63   20964824   20964762  9.9G 83 Linux
e2fsck -f /dev/sdb1
e2fsck 1.43.4 (31-Jan-2017)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdb1: 35/655360 files (11.4% non-contiguous), 63423/2620595 blocks
resize2fs /dev/sdb1
resize2fs 1.43.4 (31-Jan-2017)
The filesystem is already 2620595 (4k) blocks long.  Nothing to do!
~ # df -h
Filesystem                Size      Used Available Use% Mounted on
none                    281.3M    324.0K    281.0M   0% /dev
/dev/sda2               392.3M    384.6M      3.8M  99% /offload
/dev/sda3                14.1M    915.0K     12.9M   6% /cf
/dev/sdb1                 9.8G     73.3M      9.2G   1% /tmp/123
connect to the PBX using an SSH client

Troubleshooting

Resetting WEB Interface Credentials

Steps to reset the WEB interface credentials from the MikoPBX console

You may encounter a situation where you have forgotten the username or password for the MikoPBX web interface. This guide explains how to reset them.

Solution

  1. Go to the MikoPBX console.

The location of the console depends on the installation method:

  • If installed on a physical server - on the monitor connected to the server.

  • If installed in a virtual machine - in the virtual machine management console.

  • If installed in the cloud - in the cloud serial console (also in the virtual machine management console).

  • The reset method when installing in a Docker container is described in more detail in the current documentation.

  1. Select the option "[7] Reset password for the web interface".

  2. Type y to confirm resetting the login and password.

  1. Log in to the web interface using the default credentials:

Default web interface credentials:

  • Username: admin

  • Password: admin

After the first login, you will be prompted to change the credentials.

Resetting the Password in a Docker Container

  1. Access the container shell:

Replace mikopbxContainerNameOrID with the name or ID of your container.

  1. Launch the menu using this command:

  1. Navigate to "[7] Reset password for the web interface".

  2. Enter "y" to confirm resetting the username and password.

  3. Log in to the web interface using the default credentials:

Default web interface credentials:

  • Username: admin

  • Password: admin

Change the login credentials after the first authorization:

Backup Internet and Provider Re-Registration

Configuring Backup Internet

If your PBX is behind NAT and its public IP address changes, the PBX may not receive incoming calls until it re-registers with the provider, which by default can take 2–6 minutes.

Create the IP Check Script

  1. Create a new script file with this command:

The system will wait for input; paste the following script into the terminal:

  1. Press CTRL+D to finish.

  2. Make the file executable:

Schedule the Script

  1. Go to the MikoPBX web interface → "System" → "System file customization":

  1. Open the file: /var/spool/cron/crontabs/root

  1. Append the following line to the end of the file:

This schedule runs the script every minute to check for a changed public IP. If the IP has changed, it re-registers all providers.

If the IP changes, you’ll see an informational log in system/messages stating the old and new IP addresses.

Connecting to the PBX using SSH

Overview of methods for connecting to a PBX using SSH

SSH (Secure Shell) is a protocol used for secure remote connections and server management. It allows you to run commands, transfer files, and administer systems through an encrypted channel. SSH protects your data from interception by providing authentication and encryption between the client and the server. It is a primary tool for developers, system administrators, and DevOps engineers when working with remote machines.

Below are two different methods for connecting to MikoPBX via the SSH protocol:

  • Password-based connection using third-party applications (this article uses PuTTY as an example)

  • Key-based connection, demonstrated with examples on Windows, Linux (MacOS)



Connecting via SSH (Windows)

Connecting to MikoPBX via SSH using PowerShell (OpenSSH)

Generating and Linking the Key

  1. After installation, verify it by entering the following command in PowerShell:

You should see the OpenSSH version displayed:

If nothing happens when checking the version, you can run:

Add-WindowsCapability -Online -Name OpenSSH.Client*

  1. Next, generate an SSH key by entering the following command:

After this, the key pair will be created in the specified directory. One file will contain the public key, and the other the private key.

  1. Run the following command to retrieve the public SSH key:

Copy the public key from the output.

  1. Open the MikoPBX web interface and go to "System" → "General Settings":

  1. Navigate to the SSH section and paste the public key into the "SSH Authorized Keys" field in the following format:

Click "Save settings":

Connecting via SSH

To connect via SSH, run the following command in PowerShell:

Replace the following based on your parameters:

  • The path to your SSH key.

  • The IP address of your MikoPBX instead of mikopbxipadress.

You will then be connected to the MikoPBX console via SSH:

Connecting to PBX using SSH client (Putty)

This tutorial will describe how to connect via SSH using Putty

  1. Run the downloaded program. The main menu will open for you.

  1. Go to the "Connection" - "Data" section

  1. "Auto-login username" specify root

"Terminal-tipe string" specify xterm-256color

  1. Go to the "Translation" section

  1. «Remote character set» - specify UTF-8

    Set the flag «Enable VT100 line drawing even in UTF-8 mode»

  1. Go to the section "Session" - "Logging". Here you can configure saving the output to a file:

  1. Go to the "Session" section

  1. Required data:

  • Host Name (or IP address) — IP address of the PBX

  • Port — port for SSH connection by default 22

  • Enter the session name and save its settings

  1. In the future, use the "Load" action to use the previously saved session

  1. Perform the "Open" action to connect to the PBX and enter the SSH password

  1. Before connecting, you need to allow password authorization in the MikoPBX web interface, as well as set a password for connection: to do this, go to "General Settings" -> "SSH"

  1. After entering the SSH password, the PBX menu will open

  1. To open the console, go to "[9] Console(Shell)"

In addition, the console can be accessed using SSH authorization. You can read more about SSH connection .

To learn more about MikoPBX, please refer to the .

Connect using SSH into your MikoPBX (documentation about different ways to do that - )

To begin, you need to install OpenSSH on Windows. You can do this from .

This will generate an "ed25519" key with the comment "" to identify it. You can specify a path for the keys by adding -f and a path, for example:

Download the program to connect via SSH. This can be done on the official website at the

docker exec -it mikopbxContainerNameOrID sh
/etc/rc/console_menu
cat > /storage/usbdisk1/mikopbx/custom_modules/update_ip.sh
#!/bin/bash
# File to store the previous IP
IP_FILE="/tmp/last_ip.txt"
# Command to retrieve the current public IP
CURRENT_IP=$(/usr/bin/curl -s https://checkip.amazonaws.com)

# Check if the file with the previous IP exists
if [ -f "$IP_FILE" ]; then
    LAST_IP=$(cat "$IP_FILE")
else
    LAST_IP=""
fi

# Compare the current IP with the previous IP
if [ "$CURRENT_IP" != "$LAST_IP" ]; then
    /bin/busybox logger -t 'UpdateIP' "IP changed: $LAST_IP -> $CURRENT_IP"
    echo "$CURRENT_IP" > "$IP_FILE"
    # Trigger an Asterisk command
    /usr/sbin/asterisk -rx 'pjsip send register *all'
fi
chmod +x /storage/usbdisk1/mikopbx/custom_modules/update_ip.sh
*/1 * * * * /storage/usbdisk1/mikopbx/custom_modules/update_ip.sh > /dev/null 2> /dev/null
ssh -V
ssh-keygen -t ed25519 -C "example.powershell@gmail.com"
ssh-keygen -t ed25519 -f ~/.ssh/my_new_key
Get-Content ~/.ssh/id_ed25519.pub
KeyType KeyData
ssh -i C:\Users\<Username>\.ssh\id_ed25519 root@mikopbxipadress
Authorization failed
MikoPBX Console
Password reset confirmation
Changing your login information
Changing your login information
"System file customization" section
"crontabs/root" file
Editing file crontabs/root
SSH connection
OpenSSH version
Generating a Key in Powershell
Generated keys (pair)
"General settings" section
"SSH Authorized Keys" field
Successful connection!
here
following documentation
here
Connecting to PBX using SSH client (Putty)
Connecting via SSH (Windows)
Connecting via SSH (Linux/MacOS)
this link
example.powershell@gmail.com
link

Getting logs using the tcpdump application

tcpdump is a Linux utility for capturing and analyzing network traffic. It allows you to monitor packets passing through a network interface in real time and save them for further analysis.

Capturing Logs with the tcpdump Application

  1. Run the following command:

tcpdump -i eth0 -n -s 0 -vvv -w /tmp/capturefilename.pcap
  1. Reproduce the issue by making a phone call. After the call, press CTRL + C in the SSH console to stop tcpdump.

  1. Send the log file /tmp/capturefilename.pcap to technical support.

Connecting to a PBX using WinSCP

  1. Install the program

  2. After installation, the main menu of the program will open

  1. Host Name (or IP address) — MikoPBX IP address Port — the default port for SSH connection is 22 User name — always specify root Password — SSH password of your MikoPBX

  1. Before connecting, you need to allow password authorization in the MikoPBX web interface, as well as set a password for connection: to do this, go to "General Settings" -> "SSH"

  1. To connect, click "Login"

  1. After successful connection, the MikoPBX root folder will open for you

Connect to your PBX via SSH (instructions ).

Command in SSH connection
Command in SSH connection

Connect to the PBX using WinSCP (instructions ).

File with logs

Download the WinSCP installer from the official website at the

here
here
link

Connecting via SSH (Linux/MacOS)

Connecting to MikoPBX via SSH using Terminal (Linux/MacOS)

Generating and Linking the Key

  1. First, generate an SSH key. Open a terminal and enter the following command to create it:

ssh-keygen -t ed25519 -C "example.powershell@gmail.com"

You can also specify a path where the key files will be saved. By default, keys are stored in ~/.ssh/id_ed25519.pub. To set a custom path, add -f and specify it, for example:

ssh-keygen -t ed25519 -f ~/.ssh/my_new_key

By default, the key is saved at Username/.ssh/id_ed25519.pub on macOS or /home/Username/.ssh/id_ed25519.pub on Linux.

  1. Next, you need to retrieve and copy the newly created public key. Enter the command:

cat ~/.ssh/id_ed25519.pub
  1. Open the MikoPBX web interface and go to System → General Settings:

  2. Paste your public key into the "SSH Authorized Keys" field:

Connecting via SSH

To connect via SSH, run the following command in your terminal:

ssh -i ~/.ssh/id_ed25519 root@mikopbxipadress

Replace the following with your actual parameters:

  • The path to your SSH key (if different from default).

  • The IP address of your MikoPBX in place of mikopbxipadress.

You will then be prompted for the SSH passphrase if you set one. Upon successful authentication, you will be connected to the MikoPBX console via SSH:

Traffic Analysis Using Sngrep

Sngrep is a command-line tool for capturing and analyzing SIP traffic. It allows you to visualize SIP sessions, filter them, and track issues in voice connections.

Use this application to analyze logs and send them to technical support.

To start the application, use the command:

sngrep -r

If multiple network interfaces are used, specify the interface ID when launching the application:

bashCopy codesngrep -d eth1 -r

The -r key allows capturing audio traffic.

You can view the list of interfaces using the following command:

# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:08:EF:FD  
          inet addr:172.16.156.223  Bcast:172.16.156.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:81838 errors:0 dropped:0 overruns:0 frame:0
          TX packets:38019 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:66203565 (63.1 Mb)  TX bytes:7603334 (7.2 Mb)

eth1      Link encap:Ethernet  HWaddr 00:0C:29:08:EF:07  
          inet addr:172.16.32.162  Bcast:172.16.32.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:48506 errors:0 dropped:4432 overruns:0 frame:0
          TX packets:5386 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3698996 (3.5 Mb)  TX bytes:1886690 (1.7 Mb)

Example of Sngrep Interface:

The application window displays a list of all SIP dialogues:

  • Use the ⇑ and ⇓ arrows to navigate between dialogues.

  • Press Enter to view detailed information about a dialogue.

  • In the detailed view, you can examine specific SIP packets by selecting them with ⇑ and ⇓.

  • Press Enter to view the contents of a SIP packet.

  • Press ESC to return to the previous window.

  • Use the Space key to select multiple SIP dialogues and press Enter to view them in one window.

  • In the detailed view, use the Space key to select two SIP packets for comparison.

Saving a Dump

  1. Use the Space key to select the SIP dialogue "Call" of interest.

  1. Press F2 to open the save dump dialogue:

  • Use the ⇑ and ⇓ arrows to navigate between form fields.

  • Enter the path and file name.

  • Select the save action and press ENTER.

Filtering

  1. Press F7 to open the filter dialogue:

  1. Use the ⇑ and ⇓ arrows to navigate between form fields.

  2. Use the Space key to select SIP methods for analysis.

  3. Select the Filter action and press ENTER.

Capturing Logs from PBX using Wireshark

Wireshark is a program for capturing and analyzing network traffic. It provides a user-friendly graphical interface for viewing and closely inspecting packets, making it useful for diagnosing and resolving network issues.

  1. Launch Wireshark. Select the network you will use to analyze traffic by left-clicking on it, then press the blue shark icon to start capturing traffic.

  1. Reproduce the issue by making a test call.

  2. To stop the capture, click on the red stop icon:

Adjusting the volume

There are cases when a customer can be heard very quietly during a phone call and there is no way to increase the volume level on the telephone /softphone. Let's describe a way that can help in solving the problem:

  1. Go to "System" -> "System file customization"

  1. Open modules.conf for editing

  1. Add to the end of the file

Save the changes

  1. Open the extensions.conf file for editing

  1. Add the following code to the end of the file:

Save the changes.

  1. Open the features.conf file for editing

  1. Add the following code to the end of the file:

Save the changes

The default volume will be higher, the value is 5 instead of 0. If desired, the employee can dial #1 to increase the volume or #0 to decrease

In this example, an "ed25519" key will be generated with the comment "" for future identification.

Creating the SSH Keys (pair)
Public key
SSH Authorized Keys Field
Successful connection!

To start working with the application, follow the SSH connection to the PBX .

The view of Sngrep
information about the dialogue
Contents of the SIP packet
Comparison of two SIP packages
Dialogue "Call"

Download the file using .

Download Wireshark from . Install it with the default settings.

example.powershell@gmail.com
guide
SSH connection to the PBX with WinSCP
this link
load => func_volume.so
[all_peers-custom]
exten => _X!,1,Set(__DYNAMIC_FEATURES=vUp#vDown)
    same => n,Set(VOLUME(TX)=5)
    same => n,Set(VOLUME(RX)=5)
    same => n,return   
    
[add-trim-prefix-clid-custom]
exten => _.X!,1,Set(__DYNAMIC_FEATURES=vUp#vDown)
    same => n,Set(VOLUME(TX)=5)
    same => n,Set(VOLUME(RX)=5)
    same => n,return

[volume-level-control]
exten => up,1,NoOp()
    same => n,ExecIf($[ "${Vol}x" == "x" ]?Set(Vol=0)
    same => n,Set(Vol=$[${Vol}+5])
    same => n,Set(VOLUME(TX)=${Vol})  
    same => n,return
exten => down,1,NoOp()
    same => n,ExecIf($[ "${Vol}x" == "x" ]?Set(Vol=0)
    same => n,Set(Vol=$[${Vol}-5])
    same => n,Set(VOLUME(TX)=${Vol})  
    same => n,return
[applicationmap](+)
vUp => #1,self,Gosub,"volume-level-control,up,1"
vDown => #0,self,Gosub,"volume-level-control,down,1"

Choosing a provider when redirecting to a mobile

Task: Several providers A,B, C, D are installed on the PBX… The call arrives at MikoPBX through provider A. When dialing an employee's mobile number, the call must also go through provider A. The provider must support more than one simultaneous call.

  1. Go to System → System file customization

  1. Open the extensions.conf configuration file for editing.

  1. Set the "Add to end of file" mode. In the black window, add the following code snippet:

[all-outgoing-custom]
exten => _[0-9*#+a-zA-Z][0-9*#+a-zA-Z]!,1,NoOp(-)
    same => n,NoOp("${PROVIDER_ID}" --- "${ONLY_THIS_PROVIDER}")
    same => n,Set(NEED_RETURN=${UNDEFINED})
    same => n,ExecIf($["${ONLY_THIS_PROVIDER}x" == "x"]?return)
    same => n,ExecIf($["${PROVIDER_ID}" != "${ONLY_THIS_PROVIDER}"]?Set(NEED_RETURN=1))
    same => n,ExecIf($["${PROVIDER_ID}" != "${ONLY_THIS_PROVIDER}"]?Set(ROUTFOUND=${UNDEFINED}))
    same => n,Return()
    
[add-trim-prefix-clid-custom]
exten => _[0-9*#+a-zA-Z][0-9*#+a-zA-Z]!,1,NoOp(start check blacklist)
    same => n,ExecIf($["${CHANNEL(channeltype)}" == "PJSIP" ]?Set(__ONLY_THIS_PROVIDER=${CHANNEL(endpoint)}))
    same => n,Return()
System file customization section
Extensions.conf file

For each provider, it is necessary to describe the

Fill in the mobile numbers for employees ()

Limit the use of outgoing routes for users, use the "" module

Now, if an incoming call is sent to an employee's mobile phone, for example through the , then the call will be sent through the same provider through which it came

outbound routes
see the documentation
User Groups
IVR menu

Jitter Configuration

Jitter configuration is usually required when there are significant issues with RTP traffic transmission, such as delayed voice, dropped audio, or the inability to hear the other party.

It is best to investigate the root cause by analyzing call dumps on the PBX, router, or upstream router. Compare the data and observe where the jitter increases.

However, in some cases, you may not be able to influence the quality of the communication channel. If the audio stream delay becomes too large, Asterisk will discard "late" packets. Increasing the Jitter value can solve this issue.

modules.conf - Add the following line:

load => func_jitterbuffer.so

extensions.conf - You can add custom contexts for the provider:

For internal (outgoing):

[all_peers-custom] 
exten => _.!,1,Set(JITTERBUFFER(fixed)=200,1500) 
    same => n,return

For internal (incoming):

[internal-users-custom] 
exten => _.!,1,Set(JITTERBUFFER(fixed)=200,1500) 
    same => n,return

For incoming calls:

[SIP-1611151795-incoming-custom] 
exten => _.!,1,Set(JITTERBUFFER(fixed)=200,1500) 
    same => n,return

For outgoing calls:

[SIP-1611151795-incoming-custom] 
exten => _.!,1,Set(JITTERBUFFER(fixed)=200,1500) 
    same => n,return

Notification of Employment, Call Waiting

  1. Proceed to editing the "modules.conf" file

  1. Add the following code to the end of the file:

  1. Go to editing the file "extensions.conf"

  1. Add the following code to the end of the file:

  1. In the extension card, in the "Advanced Settings" - "Extra Options" field, set the value

If the employee is busy, a beep file (a short beep) will be played to the caller, then music will be played instead of beeps until the employee answers the call

device_state_busy_at is the number of conversations at which the employee should be considered "busy", in this case the "Routing Settings" rules described in the employee card will start working.

If the problem solution does not work correctly, change the code in extensions.conf to:

There is this on sound problems.

In MikoPBX, jitter can only be configured through .

Go to the section

article
system files customisation
load => func_extstate.so
[internal-users-custom]
exten => _X!,1,Progress()
  same => n,ExecIf($["${EXTENSION_STATE(${EXTEN})@internal-hints}" = "INUSE" || "${EXTENSION_STATE(${EXTEN}@internal-hints)}" = "RINGINUSE"]?Playback(beep))
  same => n,ExecIf($["${EXTENSION_STATE(${EXTEN})@internal-hints}" = "INUSE" || "${EXTENSION_STATE(${EXTEN}@internal-hints)}" = "RINGINUSE"]?Set(TRANSFER_OPTIONS=${TRANSFER_OPTIONS}m))
    same => n,return
[endpoint]
device_state_busy_at = 3
[internal-users-custom]
exten => _X!,1,Progress()
same => n,NoOp(${EXTEN})
same => n,NoOp(${DEVICE_STATE(PJSIP/${EXTEN})})
same => n,ExecIf($["${DEVICE_STATE(PJSIP/${EXTEN})}" = "INUSE" || "${DEVICE_STATE(PJSIP/${EXTEN})}" = "RINGINUSE"]?Background(nomer&zanjat))
same => n,ExecIf($["${DEVICE_STATE(PJSIP/${EXTEN})}" = "INUSE" || "${DEVICE_STATE(PJSIP/${EXTEN})}" = "RINGINUSE"]?Set(TRANSFER_OPTIONS=${TRANSFER_OPTIONS}m(callwaiting)))
same => n,return
System file customization menu
modules.conf file
Code for modules.conf
extensions.conf file
System file customization

Troubleshooting sound problems

Introduction

In the development of MikoPBX, we strive to make features as simple as possible so that even a beginner can quickly start using the system.

However, some issues can significantly complicate life for an unprepared user. One of these issues is poor call quality, such as one-way audio. In this article, I'll outline an approach to analyzing audio problems.

Codecs

This is likely the first thing to check. MikoPBX allows you to connect a wide variety of SIP / IAX devices (endpoints), such as:

  • Hardware SIP phone

  • Analog phone (via a SIP gateway)

  • Provider account, where the "endpoint" could be either physical hardware or an application (such as Asterisk)

Devices attempt to "negotiate" a session by exchanging information about supported codecs (media formats), such as gsm / ulaw / alaw, etc.

If the devices cannot find a common codec, the call will likely drop, and the logs will show an error indicating that no compatible codec was found.

NAT

Incorrectly configured network settings are the most common problem.

Typical Example

At a company, there may be several local subnets:

  • 172.16.32.0/24 - Office

  • 172.16.33.0/24 - VPN

  • 172.16.34.0/24 - Other

There is an external IP address 109.61.231.230. Employees need to connect to the PBX from the following subnets:

  • Office

  • VPN

  • Directly from the internet (LTE) for mobile employees

For external employees to connect, you will need:

  • A public, static IP address - purchased from the internet service provider.

In the firewall, all local subnets must be specified. Be sure to check the box "This is a local subnet or VPN...". If this box is not checked, the PBX will treat the subnet as external, and SIP messages will use the external PBX address instead of the internal one, causing audio issues.

In PBX versions 2021.4.1+, you can specify a STUN server, which helps correctly determine the external address. From my experience, this is useful for webRTC clients:

Symptoms of incorrect configuration:

  • One-way audio

  • No audio in both directions

  • Inability to make calls

  • Calls not completing

SIP ALG

"SIP ALG" is a Network Address Translation (NAT) helper feature found in most modern routers.

When the router receives a SIP packet with an INVITE, it modifies the IP address in the packet, which can cause communication problems.

If you're not sure how to configure it properly, disable SIP ALG on your router.

Other Issues

There are several problems that can be harder to detect at first glance. In practice, I have encountered the following:

  • Disk failure for storing data - This can cause improper PBX operation, leading to poor call quality.

  • Unreliable internet connection - A damaged network cable (surprisingly common) or overloaded network with torrent downloads, etc.

  • Hardware issues

Here's an example of network traffic analysis for a problematic call:

In the image, you can see "red-yellow dots". These represent "dropped packets" that will not be played back to the client. In this case, increasing the Jitter Buffer value to 800 stabilized the audio and eliminated stuttering.

Although the client "received" all the packets, due to significant delays, they were not played back. This specific problem was related to the use of the Proxmox virtualization system and was resolved by switching the client to a physical server.

Conclusion

  • When experiencing call quality issues, check the NAT settings.

  • Ensure that all devices support the selected codecs.

  • Capture traffic logs and send them to your provider for analysis.

Allow additional dialing of the internal number in the queue

Such a need may arise in many cases, For example, when a client is tired of waiting on the line, you can offer him to leave a voice message, connect with an internal number known to the client.

  1. Go to System → System file custmization.

  1. Open the file "queues.conf" for editing

  1. In the black window, find the queue section that you need to configure

  1. Select the "Add to End of File" mode. Add a similar section with the prefix (+) :

[QUEUE-16C8964EE3372C20812A4286183C2BC7](+)
context=internal

In this example, we have described the internal context, the dialing of all internal numbers is allowed. You can specify the context of the IVR menu, in the format ivr<InternalNumberIVR>

Black and white lists

  1. Go to System → System file custmization.

  1. Open the extensions.conf configuration file for editing.

  1. Set the "Add to end of file" mode and paste the following code:

The whitelist of numbers sometimes needs to be described for specific providers:

  • PROVIDER-ID - the value that you can find in the address bar at the time of provider configuration

In MikoPBX, codecs are configured in the "General Settings" - "Audio/Video Codecs" section (). The most common codec in Russia is alaw. For working with webRTC, you should enable the opus codec.

In the network interface settings, specify the external PBX address ().

Map the external SIP and RTP ports on the router () to the corresponding PBX ports (one-to-one). For example, if the PBX uses SIP port 5060 and RTP ports from 10000 to 20000, these ports should be opened on the router as well.

and the PBX firewall.

Stun server address
Example of network traffic analysis
System file customization section
queues.conf
Queue section
Code for queues
see wiki
Enable
configure
see wiki
see wiki
[add-trim-prefix-clid-custom]
exten => _X!,1,NoOp(...)
    ; Blacklist of numbers. The call will be completed.. 
    same => n,ExecIf($["${CALLERID(num)}" == "491771789427"]?Hangup())
    same => n,ExecIf($["${CALLERID(num)}" == "4915735987904"]?Hangup())
    same => n,ExecIf($["${CALLERID(num)}" == "4915735996685"]?Hangup())
    same => n,return
[Provider-ID-incoming-custom]
exten => _X!,1,NoOp(...)
    ; Whitelist of numbers. 
    same => n,ExecIf($["${CALLERID(num)}" == "491771789427"]?return)
    same => n,ExecIf($["${CALLERID(num)}" == "4915735996685"]?return)
    same => n,ExecIf($["${CALLERID(num)}" == "4915735987904"]?return)
    same => n,Hangup()
System file customization menu
extensions.conf
Code for extensions.conf
Provider ID

Output of information about the did number

Problem statement

MikoPBX can determine the phone number to which the call came from the client. For example, company employees, when receiving an incoming call from a client, need to understand which number the client called. This information should be displayed when a call is received from a client and displayed on the phone. The number the customer called is called the did number. Further in the instructions, we will consider how to display information about the did number on the screen of your phone.

Display of the DID number during an external incoming call

  1. Go to Call Routing → Telephony Providers. Open the provider's account for editing. Copy in the address bar the ID of the provider through which subscribers call you to the company. Please note that in our example, a single provider is used. If you have configured the connection of several providers, then the following steps must be performed for each provider.

In our example, the provider ID takes the form: SIP-1687941868

  1. Go to System -> System File Customization

  1. Open the extensions.conf configuration file for editing.

  1. Set the "Add to end of file" mode. In the black window, add the following code snippet:

[SIP-1687941868-incoming-custom]
exten => _.!,1,NoOp(from_did)
    same => n,ExecIf($[ "${FROM_DID}x" != "x" ]?Set(CALLERID(name)=${FROM_DID}))
    same => n,return

In the above code snippet, you need to make the correct context name.

Format of the created context:

[PROVIDER-ID-incoming-custom]
  • PROVIDER-ID is the value that you saved in the first step of this instruction. In our example, this is SIP-1687941868.

Adding the name of the line to the did number

In addition to the did number, you can output the name of the provider / line through which the call passed. To do this, follow these steps:

  1. Go to Call Routing → Telephony Providers. Open the provider's account for editing. In the Advanced Options field, specify a variable with the name of the provider.

[endpoint]
set_var=MIKO_LINE_NAME=PT
  1. Go to System -> System file customization

  1. Open the extensions.conf configuration file for editing.

  1. Set the "Add to end of file" mode. In the black window, add the following code snippet:

[SIP-1687941868-incoming-custom]
exten => _.!,1,NoOp(from_did)
    same => n,ExecIf($[ "${FROM_DID}x" != "x"  && "${MIKO_LINE_NAME}x" != "x" ]?Set(CALLERID(name)=${MIKO_LINE_NAME} ${FROM_DID}))
    same => n,return	

In the above code snippet, you need to make the correct context name.

Format of the created context:

[PROVIDER-ID-incoming-custom]
  • PROVIDER-ID is the value that you saved in the first step of this instruction. In our example, this is SIP-1687941868.

Provider ID
System file customization section
extensions.conf file
Code for extensions.conf
Advanced Options
System file customization section
extensions.conf
Code for extensions.conf

Setting individual non-working hours for a provider account

Formulation of the problem

In MikoPBX, in the Call Routing → Night and Holiday section, rules for routing calls outside working hours are configured. These rules apply to all calls, regardless of which company number the client called. It is necessary to set individual non-working hours for the Zadarma provider. Working hours for this provider: from 9.00 to 18.00 Moscow time.

Solution

Method 1

  1. The program code of the created application:

Otherwise, the call will be routed to the employee with extension 201.

  1. Set up inbound routing rules for the created provider. Go to the Routing → Incoming routing section. We direct all incoming calls to the created application

Method 2

  1. Find and copy the provider ID. To do this, go to the configuration of the required provider. In our example, this is SIP-1687941868

  1. Go to System -> System file customization

  1. Open the configuration file extensions.conf for editing.

  1. Set the "Add to end of file" mode. In the black window, add the following code snippet:

[SIP-1687941868-incoming-custom]
exten => _.!,1,NoOp(check time)
    same => n,ExecIfTime(00:00-09:00,mon-fri,*,*?Macro(playback-exit,/offload/asterisk/sounds/other/out_work_times))
    same => n,ExecIfTime(18:00-23:59,mon-fri,*,*?Macro(playback-exit,/offload/asterisk/sounds/other/out_work_times))
    same => n,return

In the above code snippet, you need to make the correct context name.

Format of the created context:

[PROVIDER-ID-incoming-custom]
  • PROVIDER-ID is the value that you saved in the second step of this instruction. In our example, this is SIP-1687941868.

Working hours are from 9.00 to 18.00, therefore it is necessary to set two intervals for non-working hours: 00:00-09:00 and 18:00-23:59.

ExecIfTime command

Let's analyze the ExecIfTime command in more detail. This command executes the specified Asterisk application if the current time matches the specified time specification. In our case, the command plays a sound file located in the /offload/asterisk/sounds/other/out_work_times directory in MikoPBX.

Command syntax:

ExecIfTime(times,weekdays,mdays,months?appname[(appargs)])
  • times - Time ranges in 24-hour format

  • weekdays - Days of the week (mon, tue, wed, thu, fri, sat, sun)

  • mdays - Days of the month (1-31)

  • months - Months (Jan, Feb, Mar, apr, etc.)

  • appname[(appargs)] - Asterisk command specifying the call parameters

In our example, the time range, the range of days of the week are indicated. Instead of specifying days months and months, * are entered. This symbol means "for all other cases".

ExecIfTime(00:00-08:00,mon-fri,*,*?Macro(playback-exit,/offload/asterisk/sounds/other/out_work_times))

Go to Modules → Dialplan Applications. Create a new application (Asterisk dialplan) following the . Application parameters take the form:

Parameters of the created dialplan
The program code of the application being created

The ExecIfTime command executes the specified Asterisk application if the current time matches the specified time specification. If we receive a call from 9:00 to 18:00 on any weekday (Monday to Friday), we redirect the call (command) to 2003. 2003 is the IVR menu number.

Settings in the IVR menu
Incoming route settings
Provider ID
System file customization section
Configuration file "extensions.conf"
Code for extensions.conf
instructions
Goto

An example of the implementation of a typical route of incoming calls

Formulation of the problem

The client calls the company, a welcome message (voice greeting) sounds.

During the playback of the voice greeting, the client can dial any internal number, for example, the extension number of an employee or the extension number of a department.

After playing the voice greeting, the client can enter numbers from the phone:

  • 1 - in this case, the call will be sent to the sales department. The sales department is a call queue consisting of two queue agents (two employees). When calling the sales department, the call must be received on the phones of employees at the same time. If none of the employees answered the customer's call within 25 seconds, the call should be sent to the employees' mobile numbers.

  • 2 - the call will be sent to the technical support department. The Technical Support Department is a call queue consisting of three queue agents (three employees). The call must be received by any available employee (queue agent). If the client waits more than 30 seconds for his call to be answered, the call must be transferred to the secretary. If the client has not entered anything / incorrectly dialed the number, then a repeated voice notification occurs and the client can enter the number again. As soon as all attempts to enter the correct number for the client are completed, the call is forwarded to the secretary.

Solution

Call queues

For our example, you need to create three call queues:

  1. Sales Department (mobile numbers of employees)

  2. Sales Department (internal employee numbers)

  3. Technical Support Department

  1. Go to the Telephony → Call queue. Click on the "Add a new call queue" button.

  1. Creating a call queue for the sales department (for employees' mobile numbers).

  1. Creating a call queue for the sales department (for internal employee numbers).

  1. We indicate that if none of the employees answered the customer's call within 25 seconds, the call should be sent to the employees' mobile numbers.

  1. Creating a call queue for the technical support department.

IVR Menu

  1. Go to Telephony → IVR menu. Click on the "Add new IVR menu" button.

  1. Specify the IVR settings according to our description.

Incoming route

  1. At the last step, we create an incoming call route for our provider. In the Call Routing → Incoming routing add a new rule.

  1. Fill in the data according to the template:

Instructions on call queues are available at the .

You must first create internal accounts for employees according to the indicating their mobile numbers.

Creating a new queue
Queue for the sales department(mobile)
Queue for the sales department
Scenario in case of failure
Queue for Technical Support department

Instructions for the IVR menu are available at the .

Creating a new IVR menu
IVR Menu

Instructions for incoming routes are available at the .

Section "Incoming routes"
New incoming call handling rule
link
instructions
link
link