Возможно кому-нибудь пригодится, старые варианты установки FreeSWITCH, которые я описывал на текущий момент неактуальны.
Версия Raspbian 11 (Debian version: 11 (bullseye), к сожалению на текущий момент не поддерживается, поэтому пришлось устанавливать вручную.
100% установку мне не удалось достигнуть не смогла установиться библиотека SpanDSP, но пока в ней у меня нет необходимости, предназначена она для обработки тональных сигналов и DTMF, работе факса, использовании некоторых кодеков.
Описания установки для Raspbian в сети вообще не нашел, есть описание для Ubuntu, но оно % 70 подошло к малине, остальное пришлось доделывать.
На всякий случай ссылка на описание установки FreeSWITCH 1.10.8 для Ubuntu 18.04 | 20.04
Установка на Ubuntu
Первым делом требуется регистрация и получения токена на signalwire.
Посмотреть и скопировать его можно в личном кабинете вкладке API, возможность просмотра один раз при создании, потом он не показывается, требуется создать по новой (поэтому лучше скопировать и сохранить в каком либо документе).
Если в процессе установки пришлось перегрузить малину, лучше ввести сохраненный токен по новому.
Все действия выполнял из под рута.
sudo -i
TOKEN=Your TOKEN
Обновляем систему и устанавливаем необходимое ПО, зависимости и библиотеки.
apt-get update && apt-get install -yq gnupg2 wget lsb-release
apt install --yes git cmake autoconf automake unzip yasm libcurl4-openssl-dev pkg-config mc
apt install --yes libpcre3-dev libspeexdsp-dev libldns-dev libedit-dev libjpeg9 libjpeg-dev libtiff-dev libopus-dev liblua5.2-0 liblua5.2-dev unixodbc-dev ntpdate libxml2-dev sngrep portaudio19-dev libtiff-dev python3.9-distutils
apt install --yes libsndfile1-dev libavformat-dev libswscale-dev libavresample-dev libpq-dev libpq-dev libpq5
Все компоненты, в т.ч. и FreeSWITCH скачиваем и устанавливаем в директории /usr/local/src/
git clone https://github.com/signalwire/libks.git /usr/local/src/libks
cd /usr/local/src/libks
sudo cmake .
sudo make && sudo make install
Переинициализируем и проверяем установку:
ldconfig && ldconfig -p | grep libks
В ответ должен быть вывод наподобие:
root@pi:/usr/local/src/libks# ldconfig && ldconfig -p | grep libks
libks2.so.2 (libc6,hard-float) => /lib/libks2.so.2
libks2.so (libc6,hard-float) => /lib/libks2.so
libksba.so.8 (libc6,hard-float) => /lib/arm-linux-gnueabihf/libksba.so.8
root@pi:/usr/local/src/libks#
git clone https://github.com/signalwire/signalwire-c.git /usr/local/src/signalwire-c
cd /usr/local/src/signalwire-c
cmake .
make && make install
Проверяем установку
ldconfig && ldconfig -p | grep signalwire
git clone https://github.com/freeswitch/sofia-sip /usr/local/src/sofia-sip
cd /usr/local/src/sofia-sip
./bootstrap.sh
./configure
make && make install
Проверяем:
ldconfig && ldconfig -p | grep signalwire
git clone https://github.com/freeswitch/spandsp /usr/local/src/spandsp
cd /usr/local/src/spandsp
./bootstrap.sh
./configure
make && make install
Проверяем:
ldconfig && ldconfig -p | grep spandsp
Несмотря на вывод ответа и кажущуюся правильность установки впоследствии при сборке FS у меня всё время Возникали ошибки,
Поэтому в дальнейшем я просто исключил при сборке FS этот компонент.
Загружаем FreeSWITCH 1.10.10 release в /usr/local/src директорию, далее распаковываем архив
sudo wget -c https://files.freeswitch.org/releases/freeswitch/freeswitch-1.10.10.-release.tar.gz -P /usr/local/src
cd /usr/local/src
tar -zxvf freeswitch-1.10.10.-release.tar.gz
cd freeswitch-1.10.10.-release
Предварительная настройка перед компиляцией и сборкой FS с исключением модуля Spandsp
./configure --disable-mod_spandsp
После, редактируем файл модулей и закомментируем mod_spandsp (можно и отредактировать включив или отключив друие модули) в файле /usr/local/src/freeswitch-1.10.10.-release/modules.conf
Собираем и устанавливаем как сам FS, так и звуковые файлы.
make
make install
make cd-sounds-install
make cd-moh-install
Далее по стандартной инструкции FS.
Создаем ссылки на файлы:
ln -s /usr/local/freeswitch/conf /etc/freeswitch
ln -s /usr/local/freeswitch/bin/fs_cli /usr/bin/fs_cli
ln -s /usr/local/freeswitch/bin/freeswitch /usr/sbin/freeswitch
Создаем непривилегированного пользователя для запуска сервиса FreeSWITCH
groupadd freeswitch
adduser --quiet --system --home /usr/local/freeswitch --gecos 'FreeSWITCH open source softswitch' --ingroup freeswitch freeswitch --disabled-password
chown -R freeswitch:freeswitch /usr/local/freeswitch/
chmod -R ug=rwX,o= /usr/local/freeswitch/
chmod -R u=rwx,g=rx /usr/local/freeswitch/bin/*
Для работы FreeSWITCH в фоновом режиме как стандартного сервиса создаём в редакторе файл автозапуска:
nano /etc/systemd/system/freeswitch.service
И добавляем следующее содержимое:
[Unit]
Description=FreeSWITCH open source softswitch
Wants=network-online.target Requires=network.target local-fs.target
After=network.target network-online.target local-fs.target
[Service]
; service
Type=forking
PIDFile=/usr/local/freeswitch/run/freeswitch.pid
Environment="DAEMON_OPTS=-nonat"
Environment="USER=freeswitch"
Environment="GROUP=freeswitch"
EnvironmentFile=-/etc/default/freeswitch
ExecStartPre=/bin/chown -R ${USER}:${GROUP} /usr/local/freeswitch
ExecStart=/usr/local/freeswitch/bin/freeswitch -u ${USER} -g ${GROUP} -ncwait ${DAEMON_OPTS}
TimeoutSec=45s
Restart=always
[Install]
WantedBy=multi-user.target
Перегружаем systemctl daemon и запускаем в фоновом режиме, проверяем статус запуска:
systemctl daemon-reload
systemctl start freeswitch
systemctl status freeswitch
Далее можем зайти в командный интерфейс FS CLI
sudo fs_cli
Выход из командной строки CTRL+D
И включаем сервис FreeSWITCH в автозагрузку
systemctl enable freeswitch.service
После этого можем перегрузить наш RaspberryPi.
Минск, Беларусь
На форуме: udvnl