Hướng dẫn cài đặt tổng đài FreePBX trên Debian 11

Bài viết này chia sẻ hướng dẫn chi tiết các bước cài đặt tổng đài FreePBX 16, Asterisk 18 trên hệ điều hành Debian 11.

Hướng dẫn cài đặt tổng đài FreePBX trên Debian 11

Trong bài viết này mình chia sẻ với anh em hướng dẫn cài đặt tổng đài FreePBX trên Debian. Phiên bản sử dụng trong bài là tổng đài FreePBX 16, Asterisk 18Debian 11.

FreePBX là một hệ thống quản lý giao diện đồ họa mã nguồn mở dành cho máy chủ điện thoại IP PBX. Nó giúp người dùng dễ dàng cấu hình và quản lý các hệ thống điện thoại VoIP dựa trên nền tảng Asterisk. FreePBX cung cấp các tính năng như quản lý cuộc gọi, hộp thư thoại, ghi âm cuộc gọi, và nhiều tính năng khác thường thấy trong các hệ thống tổng đài điện thoại hiện đại.

1. Chuẩn bị

Để thực hiện, anh em chuẩn bị cho mình một con máy ảo hoặc VPS chạy hệ điều hành Debian 11.

Bạn nào mới bắt đầu thì có thể đăng kí một tài khoản trên DigitalOcean. Hiện tại có chương trình khuyến mãi tặng $200 dùng trong 60 ngày cho khách mới lần đầu đăng kí.

Cấu hình tối thiểu máy ảo hoặc VPS như sau:

  • OS: Debian 11 (v11 (Bullseye), x64 minimal install)
  • RAM: 1-2GB
  • HDD: 10-20GB

2. Các bước cài đặt

Sau khi SSH truy cập vào server, anh em làm theo các bước bên dưới.

2.1 Chỉnh ngày giờ và cập nhật hệ thống

Đầu tiên cần chỉnh ngày giờ và cập nhật hệ thống cho đúng với timezone hiện tại.

ln -sf /usr/share/zoneinfo/Asia/Ho_Chi_Minh /etc/localtime
apt update && apt -y upgrade && apt install lsb-release

2.2 Cài đặt các gói service cần thiết

Các gói ban đầu khá quan trọng cho việc cài đặt tổng đài, nên anh em cần cài đúng và đủ để tránh lỗi trong quá trình cài FreePBX ở bước cuối cùng.

Cài đặt PHP

Đây là gói PHP sử dụng. Phiên bản sử dụng là PHP 7.4.

apt -y install curl apt-transport-https ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list
apt update && apt -y install php7.4 php7.4-curl php7.4-cli php7.4-mysql php7.4-mbstring php7.4-gd php7.4-xml

Cài đặt các gói phụ thuộc hệ thống

Đây là các gói cần thiết và phụ thuộc ban đầu nên cần được cài sau khi cài PHP.

apt -y install locales sngrep build-essential aptitude openssh-server apache2 mariadb-server mariadb-client bison doxygen flex php-pear curl sox libncurses5-dev libssl-dev libmariadb-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool-bin autoconf git subversion uuid uuid-dev libiksemel-dev tftpd postfix mailutils nano ntp libspandsp-dev libcurl4-openssl-dev libical-dev libneon27-dev libasound2-dev libogg-dev libvorbis-dev libicu-dev libsrtp*-dev unixodbc unixodbc-dev python-dev xinetd e2fsprogs dbus sudo xmlstarlet lame ffmpeg dirmngr linux-headers* gnupg2

Cài đặt Node.js

FreePBX sử dụng server backend là Node.js. (Phiên bản Node.js 12.x)

curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
apt -y install nodejs

Cài đặt ODBC

Gói driver để hỗ trợ kết nối giữa Asterisk và database MySQL.

cd /usr/src
wget https://downloads.mariadb.com/Connectors/odbc/connector-odbc-2.0.19/mariadb-connector-odbc-2.0.19-ga-debian-x86_64.tar.gz
tar -zxvf mariadb-connector-odbc-2.0.19*.tar.gz
cp lib/libmaodbc.so /usr/lib/x86_64-linux-gnu/odbc/

cat >> /etc/odbcinst.ini << EOF
[MySQL]
Description = ODBC for MariaDB
Driver = libmaodbc.so
FileUsage = 1
EOF

cat >> /etc/odbc.ini << EOF
[MySQL-asteriskcdrdb]
Description = MariaDB connection to 'asteriskcdrdb' database
driver = MySQL
server = localhost
database = asteriskcdrdb
Port = 3306
Socket = /var/run/mysqld/mysqld.sock
option = 3
EOF

Cài đặt MongoDB (Tùy chọn cho XMPP)

Gói mở rộng nếu anh em sử dụng module XMPP trên tổng đài FreePBX.

wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/5.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
apt update && apt install -y mongodb-org
systemctl enable mongod

2.3 Cài đặt Asterisk

Gói không thể thiếu khi cài đặt tổng đài FreePBX.

cd /usr/src
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-18-current.tar.gz
tar zxvf asterisk-18-current.tar.gz
cd /usr/src/asterisk-18*/
make distclean
cd /usr/src/asterisk-18*/
./contrib/scripts/install_prereq install
./configure --with-jansson-bundled
make menuselect.makeopts
menuselect/menuselect --enable app_macro menuselect.makeopts
adduser asterisk --disabled-password --gecos "Asterisk User"
make && make install && chown -R asterisk. /var/lib/asterisk

2.4 Cài đặt FreePBX

Cuối cùng là cài đặt FreePBX. Anh em cần đảm bảo các gói phía trên không lỗi và tiến hành cài FreePBX.

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

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

cat >> /etc/systemd/system/freepbx.service << EOF
[Unit]
Description=Freepbx
After=mariadb.service
 
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/sbin/fwconsole start -q
ExecStop=/usr/sbin/fwconsole stop -q
 
[Install]
WantedBy=multi-user.target
EOF

systemctl enable freepbx

2.5 Cấu hình và phân quyền truy cập cho Apache

Sau khi cài đặt xong FreePBX cần phân quyền để truy cập cho Web server.

cat >> /etc/apache2/conf-available/allowoverride.conf << EOF 
<Directory /var/www/html>
    AllowOverride All
</Directory>
EOF

a2enconf allowoverride
sed -i 's/\(APACHE_RUN_USER=\)\(.*\)/\1asterisk/g' /etc/apache2/envvars
sed -i 's/\(APACHE_RUN_GROUP=\)\(.*\)/\1asterisk/g' /etc/apache2/envvars
chown asterisk. /run/lock/apache2
mv /var/www/html/index.html /var/www/html/index.html.disable
a2enmod rewrite
systemctl restart apache2
systemctl enable apache2

2.6 Cài đặt logs

Để tránh bị full disk thì chúng ta nên tạo và xoá logs định kì cho hệ thống.

cat >> /etc/logrotate.d/asterisk << EOF
/var/spool/mail/asterisk
/var/log/asterisk/full
/var/log/asterisk/dtmf
/var/log/asterisk/fail2ban
/var/log/asterisk/freepbx.log
/var/log/asterisk/freepbx_security.log 
/var/log/asterisk/freepbx_debug {
        size 50M
        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
}
EOF

2.7 Cài đặt bổ sung khác

Một số cấu hình bổ sung khác cho server như giới hạn memory và file upload.

sed -i 's/memory_limit = .*/memory_limit = 256M/g' /etc/php/7.4/apache2/php.ini
sed -i 's/upload_max_filesize = .*/upload_max_filesize = 20M/g' /etc/php/7.4/apache2/php.ini
systemctl restart apache2
systemctl disable apparmor
systemctl stop apparmor

Sau khi cài đặt xong. Anh em cần khởi động lại server.

Sau đó mở trình duyệt và truy cập: http://yourserverIP

Tiến hành thiết lập một tài khoản đăng nhập và khám phá tổng đài thôi!

3. Tổng kết

Trên đây là toàn bộ quá trình cài đặt tổng đài FreePBX trên Debian. Phiên bản tổng đài FreePBX 16, Asterisk 18 và Debian 11. Chúc các bạn thành công!

Bình luận

Bài viết liên quan