Nội dung
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!