Install ViciDial From Scratch on AlmaLinux 9 (Asterisk 18 Build Guide)

vicidial scratch installation almalinux - custom-vd-install-featured.png

Building ViciDial from source rather than a prebuilt ISO gives you control over the exact Asterisk
version, kernel, and package set — useful when you’re deploying onto an existing hardened server or a
cloud image rather than dedicated call-center hardware.

This guide builds Asterisk 18 and the ViciDial/astguiclient stack from scratch on a minimal AlmaLinux 9
install.

Step 1: Prepare the Base OS

Start from a minimal AlmaLinux 9 install. Update packages and install the build toolchain: dnf -y update && dnf -y install wget git perl gcc make ncurses-devel. Set a proper hostname and disable the firewall/SELinux enforcing mode during the build (re-enable and configure them properly once the stack is running).

AlmaLinux 9 base packages installed before Asterisk build
Preparing the base OS

Step 2: Download and Compile Asterisk 18

Download the Asterisk 18 source tarball to /usr/src, extract it, and run ./configure followed by make menuselect to confirm codec and module selection (make sure app_meetme/conferencing and SIP/PJSIP channel drivers are selected). Then make && make install && make samples.

Compiling Asterisk 18 from source on AlmaLinux 9
Compiling Asterisk 18

Step 3: Install MariaDB and the astguiclient Stack

Install and enable MariaDB: dnf -y install mariadb-server && systemctl enable --now mariadb. Download the astguiclient source (the package that provides ViciDial’s Perl backend and web files), extract it, and run perl install.pl choosing the full/standard install so it sets up the database schema and web root.

Installing MariaDB and astguiclient ViciDial installer
Installing MariaDB and astguiclient

Step 4: Configure Apache/PHP and the Cron User

The installer sets up the ViciDial web files under your web server’s document root and creates the MySQL cron database user the backend scripts rely on. Confirm PHP is installed and the web server can reach MySQL — most first-boot issues trace back to a missing PHP module or a wrong DB password in astguiclient.conf.

ViciDial web files and cron database user configuration
Configuring the web and cron layer

Step 5: Start Services and Verify

Start Asterisk and confirm it’s running: systemctl status asterisk and asterisk -rx "core show version". Confirm the database schema loaded by querying system_settings in the asterisk database. Then log into the ViciDial admin web UI to confirm the full stack is reachable end to end.

Verifying Asterisk and ViciDial services after fresh install
Starting and verifying services

Post-install hardening

  • Re-enable SELinux (or configure proper policies) and the firewall before going to production
  • Change all default MySQL passwords set during the astguiclient installer
  • Restrict Asterisk’s SIP/RTP ports and admin web UI to trusted networks only
  • Set up scheduled backups — see our MySQL table repair guide for recovery steps if a table ever corrupts

Related tutorials

Image credits: All illustrations are original terminal/config mockups created for
Gnome IT Solutions — not screenshots from any third-party site. Tutorial text © Gnome IT Solutions.