Skip to content

Instantly share code, notes, and snippets.

@razametal
Last active March 12, 2025 06:29
Show Gist options
  • Select an option

  • Save razametal/18785923be942af78ef8a0984903d5dd to your computer and use it in GitHub Desktop.

Select an option

Save razametal/18785923be942af78ef8a0984903d5dd to your computer and use it in GitHub Desktop.
Asterisk 22 FreePBX en Debian 12 Bookworm
# Asterisk 22 / FreePBX 17 en Debian 12 Bookworm
apt -y install build-essential git curl wget libnewt-dev libssl-dev libncurses5-dev subversion libsqlite3-dev libjansson-dev libxml2-dev uuid-dev default-libmysqlclient-dev htop sngrep lame ffmpeg mpg123 vim expect pkg-config libedit-dev cmake
apt -y install linux-headers-`uname -r` openssh-server apache2 mariadb-server mariadb-client bison flex php8.2 php8.2-curl php8.2-cli php8.2-common php8.2-mysql php8.2-gd php8.2-mbstring php8.2-intl php8.2-xml php-pear curl sox sqlite3 automake libtool autoconf unixodbc-dev uuid libasound2-dev libogg-dev libvorbis-dev libicu-dev libcurl4-openssl-dev odbc-mariadb libical-dev libneon27-dev libsrtp2-dev libspandsp-dev sudo libtool-bin python-dev-is-python3 unixodbc wget software-properties-common nodejs npm ipset iptables fail2ban php-soap libncurses-dev libblocksruntime-dev xmlstarlet libopusfile-dev libopus-dev
cd /usr/src
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-22-current.tar.gz
tar xvf asterisk-22-current.tar.gz
cd asterisk-22.*/
contrib/scripts/get_mp3_source.sh
contrib/scripts/install_prereq install
git clone https://github.com/traud/asterisk-opus
cp --verbose ./asterisk-opus*/include/asterisk/* ./include/asterisk
cp --verbose ./asterisk-opus*/codecs/* ./codecs
cp --verbose ./asterisk-opus*/res/* ./res
cp --verbose ./asterisk-opus*/formats/* ./formats
patch -p1 <./asterisk-opus*/asterisk.patch
patch -p1 <./asterisk-opus*/enable_native_plc.patch
./bootstrap.sh
./configure --libdir=/usr/lib64 --with-pjproject-bundled --with-jansson-bundled --with-opus
make menuselect.makeopts
menuselect/menuselect --enable format_mp3 menuselect.makeopts
make
make install
make config
ldconfig
groupadd asterisk
useradd -r -d /var/lib/asterisk -g asterisk asterisk
usermod -aG audio,dialout,users asterisk
chown -R asterisk:asterisk /etc/asterisk
chown -R asterisk:asterisk /var/{lib,log,spool}/asterisk
chown -R asterisk:asterisk /usr/lib64/asterisk
sed -i 's|#AST_USER|AST_USER|' /etc/default/asterisk
sed -i 's|#AST_GROUP|AST_GROUP|' /etc/default/asterisk
echo "/usr/lib64" >> /etc/ld.so.conf.d/x86_64-linux-gnu.conf
ldconfig
sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php/8.2/apache2/php.ini
sed -i 's/\(^memory_limit = \).*/\1256M/' /etc/php/8.2/apache2/php.ini
sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/apache2/apache2.conf
sed -i 's/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf
a2enmod rewrite
a2enmod ssl
a2ensite default-ssl.conf
systemctl restart apache2
rm /var/www/html/index.html
cat <<EOF > /etc/odbcinst.ini
[MySQL]
Description = ODBC for MySQL (MariaDB)
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmaodbc.so
FileUsage = 1
EOF
cat <<EOF > /etc/odbc.ini
[MySQL-asteriskcdrdb]
Description = MySQL connection to 'asteriskcdrdb' database
Driver = MySQL
Server = localhost
Database = asteriskcdrdb
Port = 3306
Socket = /var/run/mysqld/mysqld.sock
Option = 3
EOF
cd /usr/src
wget http://deb.freepbx.org/freepbx17-dev/pool/main/f/ffmpeg/ffmpeg_5.1.6-12.sng12_amd64.deb
apt -y --allow-downgrades install /usr/src/ffmpeg_5.1.6-12.sng12_amd64.deb
cd /usr/src
wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-17.0-latest-EDGE.tgz
tar zxvf freepbx-17.0-latest-EDGE.tgz
cd /usr/src/freepbx/
touch /etc/asterisk/{modules,cdr}.conf
./start_asterisk start
./install -n
sed -i 's|;runuser|runuser|' /etc/asterisk/asterisk.conf
sed -i 's|;rungroup|rungroup|' /etc/asterisk/asterisk.conf
fwconsole ma disablerepo commercial
fwconsole ma install callrecording core dashboard customappsreg infoservices logfiles pm2 soundlang sipsettings voicemail
fwconsole ma downloadinstall soundlang timeconditions queues ivr ringgroups iaxsettings api printextensions cdr music bulkhandler
fwconsole reload
asterisk -rx "core restart now"
cat <<EOF > /etc/systemd/system/freepbx.service
[Unit]
Description=FreePBX VoIP Server
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 daemon-reload
systemctl enable freepbx
cd /usr/src
git clone https://github.com/BelledonneCommunications/bcg729
cd bcg729
cmake . -DCMAKE_INSTALL_PREFIX=/usr
make
make install
cd /usrc/src
git clone https://github.com/arkadijs/asterisk-g72x.git
cd asterisk-g72x
./autogen.sh
./configure --with-asterisk160 --with-bcg729 --with-asterisk-includes=/usr/src/asterisk-22.2.0/include/ --prefix=/usr --libdir=/usr/lib64
make
make install
asterisk -rx "module load codec_g729.so"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment