Changes

Jump to navigation Jump to search
2,037 bytes added ,  14:31, 10 June 2021
== Introduction ==
[https://freeswitch.com/ FreeSWITCH] is a voice service that can be used with [http://opensimulator.org/wiki/Main_Page Opensimulator]. Until recently it has been a little-used option; however, with the announcement that Vivox support for opensimulator is coming to an end, it is one of the alternative options. This page is not complete, the compilation works, and the plugin states it's active in the console. Additionally in the viewer in the voice preferences voice can be tested successfully. However, neither local nor IM voice chat buttons are enabled.
=== Compile And Install on Ubuntu 20.04 Server ===
The packages listed are a combination of those found so far after starting from three different images of ubuntu 20.04 server including a direct download
==== Ubuntu Packages Required ====
* build-essential
* git
* unzip
* autoconf
* cmake
* libx11-dev - required to compile Fltk
* libfreetype-dev - required to compile Fltk
* install libssl-dev - required to compile Sofia
* uuid - required to compile Libks
* uuid-dev - required to compile Libks
* libedit-dev
* libopus-dev
* libsndfile-dev
  sudo apt install build-essential autoconf cmake libtool pkg-config libcurl4-openssl-dev python-pycurl python3-pycurl libtiff-dev libaudiofile-dev fftw-dev sqlite3 libsqlite3-dev libpcre3-dev speex libspeex-dev libspeexdsp-dev libldns-dev nasm libavformat-dev libswscale-dev liblua5.3-dev libpq-dev libx11-dev libfreetype-dev libssl-dev uuid uuid-dev git unzip libedit-dev libopus-dev libsndfile-dev ==== [https://github.com/fltk/fltk Fltk] ====
Required by Spandsp
<syntaxhighlight lang="Bash" line>
git clone https://github.com/fltk/fltk.git
cd fltk
./configure
make
sudo make install
</syntaxhighlight>
git clone https://github.com/fltk/fltk.git cd fltk cmake . make sudo make install ==== [https://github.com/freeswitch/spandsp Spandsp] ====<syntaxhighlight lang="Bash" line> git clone https://github.com/freeswitch/spandsp cd spandsp ./bootstrap.sh ./configure make -j sudo make install</syntaxhighlight>
=== [https://github.com/freeswitch/sofia-sip sofia-sip] ===
<syntaxhighlight lang="Bash" line>
git clone https://github.com/freeswitch/sofia-sip
cd sofia-sip
sh autogen.sh (if building from darcs)
./configure
make
make install
</syntaxhighlight>
git clone https://github.com/freeswitch/sofia-sip cd sofia-sip sh autogen.sh (if building from darcs) ./configure make sudo make install ==== [https://github.com/signalwire/signalwire-clibks.git Signalwirelibks] ====
<syntaxhighlight lang="Bash" line>
git clone https://github.com/signalwire/signalwire-clibks.gitcd signalwire-clibks
cmake .
make
sudo make install
</syntaxhighlight>
 
=== [https://github.com/signalwire/signalwire-c.git Signalwire] ===
 
git clone https://github.com/signalwire/signalwire-c.git
cd signalwire-c
cmake .
make
sudo make install
=== Free Switch ===
First download, extract and enter the folder.
<syntaxhighlight lang="Bash" line> sudo wget https://files.freeswitch.org/freeswitch-releases/freeswitch-1.10.6.-release.zip unzip freeswitch-1.10.6.-release.zip cd freeswitch-1.10.6.-release</syntaxhighlight>
Copy lua5 files to where they should be, but are missing from the release files.
<syntaxhighlight lang="Bash" line> mkdir src/mod/languages/mod_lua cp /usr/include/lua5.3/*.h src/mod/languages/mod_lua/</syntaxhighlight>
add a symbolic link so its found
<syntaxhighlight lang="Bash" line> sudo ln -s /usr/lib/x86_64-linux-gnu/liblua5.3.so /usr/lib/x86_64-linux-gnu/liblua.so</syntaxhighlight>
compile
<syntaxhighlight lang="Bash" line> ./configure make sudo make install</syntaxhighlight>
Compile the sounds
<syntaxhighlight lang="Bash" line> sudo make all cd-sounds-install cd-moh-install</syntaxhighlight>
Create Symbolic links for ease of use
<syntaxhighlight lang="Bash" line>
sudo ln -s /usr/local/freeswitch/bin/freeswitch /usr/bin/
sudo ln -s /usr/local/freeswitch/bin/fs_cli /usr/bin
</syntaxhighlight>
sudo ln -s /usr/local/freeswitch/bin/freeswitch /usr/bin/ sudo ln -s /usr/local/freeswitch/bin/fs_cli /usr/bin ==== Configure FreeSWITCH ====Once you've compiled and installed Freeswitch, you will need to activate mod_siren and mod_xml_curl in /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml, since it's disabled by default on a fresh install. This bit needs doing as root  su root nano /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml uncomment the lines...  <load module="mod_xml_curl"/>and  <load module="mod_siren"/> save and exit then su back to your normal user ====Create a user with limited rights to run freeswitch====<syntaxhighlight lang="Bash" line> cd /usr/local sudo groupadd freeswitch sudo adduser --disabled-password --quiet --system --home /usr/local/freeswitch --gecos "FreeSWITCH Voice Platform" --ingroup freeswitch freeswitch sudo chown -R freeswitch:freeswitch /usr/local/freeswitch/ sudo chmod -R ug=rwX,o= /usr/local/freeswitch/ sudo chmod -R u=rwx,g=rx /usr/local/freeswitch/bin/< ==== Create a systemd service file to start automatically==== sudo nano /etc/systemd/system/freeswitch.service added the following contents and save  [Unit] Description=freeswitch Wants=network-online.target Requires=syslog.socket network.target local-fs.target After=syslog.socket network.target network-online.target local-fs.target [Service] Type=forking Environment="DAEMON_OPTS=-nonat" EnvironmentFile=-/etc/default/freeswitch ExecStartPre=/bin/chown -R freeswitch:freeswitch /usr/local/freeswitch ExecStart=/usr/bin/syntaxhighlight>freeswitch -u freeswitch -g freeswitch -ncwait $DAEMON_OPTS TimeoutSec=45s Restart=always RestartSec=90 StartLimitInterval=0 StartLimitBurst=6 User=root Group=daemon LimitCORE=infinity LimitNOFILE=100000 LimitNPROC=60000 LimitSTACK=250000 LimitRTPRIO=infinity LimitRTTIME=infinity IOSchedulingClass=realtime IOSchedulingPriority=2 CPUSchedulingPolicy=rr CPUSchedulingPriority=89 UMask=0007 NoNewPrivileges=false [Install] WantedBy=multi-user.target start the service sudo systemctl start freeswitch.service check its working with sudo systemctl status freeswitch.service enable the service so it starts each time at boot sudo systemctl enable freeswitch.service == Configure Opensimulator ==Grid ModeIn grid mode, [FreeSwitchVoice] in OpenSim.ini and [FreeswitchService] in Robust.ini or Robust.HG.ini need to be configured. Configurations details are shown in both OpenSim.ini.example, Robust.ini.example and Robust.HG.ini.example. Here is an example configuration for OpenSim.ini. opensim.ini
Create a systemd service file to start automatically<syntaxhighlight lang="INI" line> [UnitFreeSwitchVoice]Description=freeswitchWants Enabled =network-online.targettrueRequires LocalServiceModule =syslogOpenSim.socket networkServices.target local-fsConnectors.targetdll:RemoteFreeswitchConnectorAfter FreeswitchServiceURL =syslog.socket network.target network-online.target local-fs.target"${Const|BaseUrl}:${Const|FreeSwitchPort}/fsapi"
[Service]
Type=forking
Environment="DAEMON_OPTS=-nonat"
EnvironmentFile=-/etc/default/freeswitch
ExecStartPre=/bin/chown -R freeswitch:freeswitch /usr/local/freeswitch
ExecStart=/usr/bin/freeswitch -u freeswitch -g freeswitch -ncwait $DAEMON_OPTS
TimeoutSec=45s
Restart=always
RestartSec=90
StartLimitInterval=0
StartLimitBurst=6
User=rootGroup=daemonLimitCORE=infinityLimitNOFILE=100000LimitNPROC=60000LimitSTACK=250000LimitRTPRIO=infinityLimitRTTIME=infinityIOSchedulingClass=realtimeIOSchedulingPriority=2CPUSchedulingPolicy=rrCPUSchedulingPriority=89UMask=0007NoNewPrivileges=falseAdd for Robust.ini/Robust.HG.ini
[InstallFreeswitchService]WantedBy LocalServiceModule =multi-userOpenSim.targetServices.FreeswitchService.dll:FreeswitchService</syntaxhighlight> ServerAddress = "${Const|FreeswitchURL}"

Navigation menu