#author("2025-04-04T12:34:47+00:00","default:iseki","iseki") #author("2025-04-04T12:34:54+00:00","default:iseki","iseki") * FreeSwitch - https://github.com/signalwire/freeswitch ** Install *** dnf **** CRB - crb リポジトリの有効にしておかないと,devel の一部が dnf でインストールできない. dnf config-manager --set-enabled crb **** install dnf install MariaDB-devel dnf install speex dnf install speex-devel dnf install ldns dnf install ldns-devel dnf install libedit-devel dnf install yasm dnf install libavformat-free dnf install libavformat-free-devel dnf install libswscale-free dnf install libswscale-free-devel dnf install lua-devel dnf install opus-devel dnf install libpq-devel dnf install libsndfile dnf install libsndfile-devel *** Library **** spandsp - https://github.com/freeswitch/spandsp <pre> git clone https://github.com/freeswitch/spandsp.git cd spandsp ./bootstrap.sh ./configure make make install ldconfig </pre> **** sofia-sip - https://github.com/freeswitch/sofia-sip <pre> git clone https://github.com/freeswitch/sofia-sip.git cd sofia-sip/ ./bootstrap.sh ./configure make make install ldconfig </pre> **** speexdsp - https://github.com/xiph/speexdsp <pre> git clone https://github.com/xiph/speexdsp.git cd speexdsp/ ./autogen.sh ./configure make make install ldconfig </pre> **** libks - https://github.com/signalwire/libks - 要: libuuid-devel <pre> yum install libuuid-devel git clone https://github.com/signalwire/libks.git cd libks/ mkdir build cd build/ cmake --install-prefix /usr/local .. make make install ldconfig </pre> **** signalwire-c - https://github.com/signalwire/signalwire-c <pre> git clone https://github.com/signalwire/signalwire-c.git cd signalwire-c/ mkdir build cd build/ cmake --install-prefix /usr/local .. make make install ldconfig </pre> - make install でエラーが出るが,たぶん開発環境には関係ないので無視. <pre> CMake Error at cmake_install.cmake:117 (file): file INSTALL cannot find "/usr/local/src/signalwire-c/build/copyright": No such file or directory. </pre> *** freeswitch <pre> git clone https://github.com/signalwire/freeswitch.git cd freeswitch ./bootstrap.sh ./configure --prefix=/usr/local make </pre> * OLD ** FreeSwitch [#w37f7f89] *** 起動,停止 [#yabbfca1] - /usr/local/freeswitch/bin/freeswitch -nc - /usr/local/freeswitch/bin/freeswitch -stop *** Memo [#q7971b66] - UDP: 3478, 3479, 5060, 5062, 12000-17000 *** Download [#ca52e7e7] - http://files.freeswitch.org/releases/freeswitch/ *** 1.6.9 [#x57bdca1] **** modules.conf [#ued4b66b] #applications/mod_fsv #codecs/mod_opus #formats/mod_sndfile codecs/mod_siren xml_int/mod_xml_curl **** コンパイル&インストール [#vd5b9d6f] # export PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/lib/pkgconfig # ./configure --disable-libvpx --disable-libyuv lua の処理 (後述参照) # vi modules.conf # make # make install *** 1.10.6 [#g32648dd] **** 必要なライブラリ [#p958a0c5] - [[spandsp3]] devel - [[sofia-sip]] - yum install sqlite-devel - yum install speex-devel - yum install ldns-devel **** 結局 コンパイラが avx2をサポートしていないとのことで,コンパイルできず. [#jf232aca] disabling avx512: not supported by compiler *** 1.6.5 [#n4ab88cf] - CentOS だと 「色々パッケージが無い(または古い)」 と怒られる - 最低 sqlite3, libldns はコンパイルして追加. **** modules.conf [#ued4b66b] #applications/mod_fsv #codecs/mod_opus #codecs/mod_vpx #formats/mod_sndfile codecs/mod_siren xml_int/mod_xml_curl **** コンパイル&インストール [#t0a3d41f] # export PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/lib/pkgconfig # ./configure lua の処理 # vi modules.conf # make # make install *** lua の処理 [#pd87fd78] **** liblua.a, %%liblua.so%% [#ieeb67e0] - 別途コンパイルする # cd src/mod/languages/mod_lua/lua # make linux # cp liblua.a /usr/local/lib # chmod o+r /usr/local/lib/liblua.a # cd .. # ln -s lus/*.h . - %%vi Makefile (これは必要ないかも)%% 必要なし CFLAGS= -O2 -Wall -DLUA_COMPAT_ALL $(SYSCFLAGS) $(MYCFLAGS) -fPIC .... liblua.so: $(BASE_O) $(CC) -shared -o $@ $(BASE_O) **** libg7221 [#h9ec1f53] - G.722.1用モジュール - mod_siren で必要 # git clone https://freeswitch.org/stash/scm/sd/libg7221.git # cd libg7221 # ./autogen.sh # ./configure # make # make install *** Config [#if8dcdec] **** conf/vars.xml [#ad7d45a1] diff vars.xml.orig vars.xml 258c258,259 < <X-PRE-PROCESS cmd="set" data="global_codec_prefs=OPUS,G722,PCMU,PCMA,VP8"/> --- > <!--<X-PRE-PROCESS cmd="set" data="global_codec_prefs=OPUS,G722,PCMU,PCMA,VP8"/>--> > <X-PRE-PROCESS cmd="set" data="global_codec_prefs=G7221@32000h,G7221@16000h,G722,PCMU,PCMA,GSM"/> **** conf/autoload_configs/xml_curl.conf.xml. [#see0c37b] # diff xml_curl.conf.xml.orig xml_curl.conf.xml 3c3,14 < <binding name="example"> --- > <binding name="EDU_directory"> > <param name="gateway-url" value="http://opensim.tuis.ac.jp:8004/fsapi/freeswitch-config" bindings="directory"/> > <param name="gateway-credentials" value="freeswitch:password"/> > <param name="disable-100-continue" value="true"/> > </binding> > <binding name="EDU_dialplan"> > <param name="gateway-url" value="http://opensim.tuis.ac.jp:8004/fsapi/freeswitch-config" bindings="dialplan"/> > <param name="gateway-credentials" value="freeswitch:password"/> > <param name="disable-100-continue" value="true"/> > </binding> > > <!--<binding name="example">--> 47c58 < </binding> --- > <!--</binding>--> **** conf/autoload_configs/modules.conf.xml [#ofab9f0e] diff modules.conf.xml.orig modules.conf.xml 18c18 < <!-- <load module="mod_xml_curl"/> --> --- > <load module="mod_xml_curl"/> 66c66 < <load module="mod_fsv"/> --- > <!-- <load module="mod_fsv"/> --> 95c95 < <load module="mod_vpx"/> --- > <!--<load module="mod_vpx"/>--> 1.6.9 の場合は無し 97c97 < <!--<load module="mod_siren"/>--> --- > <load module="mod_siren"/> 99c99 < <load module="mod_opus"/> --- > <!--<load module="mod_opus"/>--> 102c102 < <load module="mod_sndfile"/> --- > <!--<load module="mod_sndfile"/>--> **** conf/autoload_configs/conference.conf.xml.orig [#a6eae4da] diff conference.conf.xml.orig conference.conf.xml 72c72 < <param name="muted-sound" value="conference/conf-muted.wav"/> --- > <!--<param name="muted-sound" value="conference/conf-muted.wav"/>--> 74c74 < <param name="unmuted-sound" value="conference/conf-unmuted.wav"/> --- > <!--<param name="unmuted-sound" value="conference/conf-unmuted.wav"/>--> 76c76 < <param name="alone-sound" value="conference/conf-alone.wav"/> --- > <!--<param name="alone-sound" value="conference/conf-alone.wav"/>--> 80c80 < <param name="moh-sound" value="$${hold_music}"/> --- > <!--<param name="moh-sound" value="$${hold_music}"/>--> 82c82 < <param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/> --- > <!--<param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/>--> 84c84 < <param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/> --- > <!--<param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/>--> 86c86 < <param name="kicked-sound" value="conference/conf-kicked.wav"/> --- > <!--<param name="kicked-sound" value="conference/conf-kicked.wav"/>--> 88c88 < <param name="locked-sound" value="conference/conf-locked.wav"/> --- > <!--<param name="locked-sound" value="conference/conf-locked.wav"/>--> 90c90 < <param name="is-locked-sound" value="conference/conf-is-locked.wav"/> --- > <!--<param name="is-locked-sound" value="conference/conf-is-locked.wav"/>--> 92c92 < <param name="is-unlocked-sound" value="conference/conf-is-unlocked.wav"/> --- > <!--<param name="is-unlocked-sound" value="conference/conf-is-unlocked.wav"/>--> 94c94 < <param name="pin-sound" value="conference/conf-pin.wav"/> --- > <!--<param name="pin-sound" value="conference/conf-pin.wav"/>--> 96c96 < <param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/> --- > <!--<param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/>--> **** conf/autoload_configs/switch.conf.xml [#r7593da9] - RTP Port Range diff switch.conf.xml.orig switch.conf.xml 146a147,148 > <param name="rtp-start-port" value="6000"/> > <param name="rtp-end-port" value="6999"/> **** IPv6 を無効化 [#x3968412] # cd conf/sip_profiles/ # mkdir Invalid # mv *ipv6* Invalid/