Hướng dẫn xây dựng tổng đài IP dùng mã nguồn mở Asterisk, FreePBX trên Centos8

 

Tiếp theo phần bài viết tìm hiểu về tổng đài IP mã nguồn mở. Hôm nay mình xin giới thiệu bài lab xây dựng tổng đài IP dùng mã nguồn mở Asterisk, FreePBX trên Centos8

1. Chuẩn bị

Máy ảo vps hoặc VMvare,Virtuabox.

Hệ điều hành: Centos 8

Ram: 512MB-1G

HDD: 10-20G hoặc hơn

2. Cài đặt

2.1 Cập nhập hệ thống.

  • Tắt SELinux.
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
ln -sf /usr/share/zoneinfo/Asia/Ho_Chi_Minh /etc/localtime
  • Cập nhập hệ thống đảm bảo các gói update mới nhất.
dnf -y update && dnf -y install dnf-plugins-core epel-release && dnf -y remove sendmail
dnf config-manager --enable PowerTools
dnf -y install yum wget make which rsyslog crontabs automake gcc gcc-c++ ncurses-devel openssl-devel libxml2-devel unixODBC-devel libcurl-devel libogg-devel libvorbis-devel speex-devel freetds-devel net-snmp-devel newt-devel popt-devel libtool-ltdl-devel lua-devel sqlite-devel portaudio-devel neon-devel libical-devel openldap-devel mysql-devel bluez-libs-devel jack-audio-connection-kit-devel gsm-devel libedit-devel libuuid-devel libsrtp-devel git subversion libxslt-devel kernel-devel audiofile-devel gtk2-devel libtiff-devel libtermcap-devel bison tftp-server httpd tzdata mariadb mariadb-server mariadb-connector-odbc fail2ban xmlstarlet ghostscript libtiff-tools patch e2fsprogs mpg123 postfix whois mod_ssl nodejs

#Cài php 5.6

Install repository.

dnf remove php php*
dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

Install PHP v7.3

dnf -y module disable php
dnf -y module enable php:remi-7.3
dnf -y install php php-mysqlnd php-process php-pear php-mbstring php-xml php-gd php-curl

#Cài ODBC

cat >> /etc/odbc.ini << EOF
[MySQL-asteriskcdrdb]
Description = MariaDB connection to 'asteriskcdrdb' database
driver = MySQL
server = localhost
database = asteriskcdrdb
Port = 3306
Socket = /var/lib/mysql/mysql.sock
option = 3
Charset=utf8
  
EOF
sed -i 's/\/lib64\/libmyodbc5.so/\/lib64\/libmaodbc.so/' /etc/odbcinst.ini

# Cài một số gói bổ sung

dnf -y install https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm
dnf -y install ffmpeg
dnf -y install https://forensics.cert.org/cert-forensics-tools-release-el8.rpm
dnf -y install lame sox

Reboot

2.2 Cài đặt Asterisk Freepbx

  •  Cài dahdi

cd /usr/src
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-2.10.2+2.10.2.tar.gz
tar zxvf dahdi-linux-complete-2.10*
cd /usr/src/dahdi-linux-complete-2.10*/
make all && make install && make config
systemctl restart dahdi

  •  Cài Asterisk16

cd /usr/src
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz
tar zxvf asterisk-16-current.tar.gz
cd /usr/src/asterisk-16*/
make distclean
./contrib/scripts/install_prereq install
./configure --libdir=/usr/lib64 --with-jansson-bundled
make menuselect

#Go to Applications and make sure app_macro is checked.

adduser asterisk -s /sbin/nologin -c "Asterisk User"
make && make install && chown -R asterisk. /var/lib/asterisk

3. Cài Freepbx

Khởi động mariadb

systemctl restart mariadb
cd /usr/src
git clone -b release/15.0 --single-branch https://github.com/freepbx/framework.git freepbx
touch /etc/asterisk/modules.conf
cd /usr/src/freepbx
./start_asterisk start
./install -n

Module install

fwconsole ma downloadinstall framework core voicemail sipsettings infoservices \
featurecodeadmin logfiles callrecording cdr dashboard music soundlang recordings conferences
fwconsole chown
fwconsole reload

#Có thể cài qua GUI > Admin > Module Admin.

Chạy lệnh dưới để cài các module

fwconsole ma installall
fwconsole chown
fwconsole reload
Thêm cấu hình để FreePBX tự khởi động khi reboot hệ thống.
cat >> /etc/systemd/system/freepbx.service << EOF
[Unit]
Description=Freepbx
After=mariadb.service
 
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/sbin/fwconsole start
ExecStop=/usr/sbin/fwconsole stop
 
[Install]
WantedBy=multi-user.target
EOF
systemctl enable freepbx
#Thiết lập một số phân quyền cho apache.
sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php.ini
sed -i 's/memory_limit = .*/memory_limit = 256M/g' /etc/php.ini

sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/httpd/conf/httpd.conf
sed -i ':a;N;$!ba;s/AllowOverride None/AllowOverride All/2' /etc/httpd/conf/httpd.conf

sed -i 's/^\(user\|group\).*/\1 = asterisk/' /etc/php-fpm.d/www.conf
sed -i 's/.*listen\.owner =.*/listen.owner = asterisk/' /etc/php-fpm.d/www.conf
sed -i 's/.*listen\.group =.*/listen.group = asterisk/' /etc/php-fpm.d/www.conf
sed -i 's/^listen\.acl_users/;&/' /etc/php-fpm.d/www.conf
#Thiết lập một số service tự khởi động khi reboot lại server.
systemctl enable mariadb
systemctl enable httpd
systemctl enable php-fpm
systemctl enable postfix

Reboot

#Thiết lập xóa file log cho asterisk

nano /etc/logrotate.d/asterisk
/var/spool/mail/asterisk
/var/log/asterisk/full
/var/log/asterisk/dtmf
/var/log/asterisk/fail2ban {
        weekly
        missingok
        rotate 4
        #compress
        notifempty
        sharedscripts
        create 0640 asterisk asterisk
        postrotate
        /usr/sbin/asterisk -rx 'logger reload' > /dev/null 2> /dev/null || true
        endscript
        su root root
}
#Thêm rule port vào firewall để bảo mật.
systemctl enable firewalld
systemctl restart firewalld
firewall-cmd --permanent --zone=public --add-service={http,https}
firewall-cmd --permanent --zone=public --add-port=5060-5061/tcp
firewall-cmd --permanent --zone=public --add-port=5060-5061/udp
firewall-cmd --permanent --zone=public --add-port=10000-20000/udp
firewall-cmd --reload

Như vậy, qua bài viết mình đã hướng dẫn các bạn xây dựng được một tổng đài ip nội bộ dùng cho công ty mà không phải tốn chi phí nhiều dựa trên hạ tầng sẵn có và mã nguồn mở hoàn toàn miễn phí. Chúc các bạn thành công!

 

Bài viết liên quan

Leave a Reply

Your email address will not be published. Required fields are marked *