About
Debian 8 "Jessie" is the reference platform for
FreeSWITCH™ as of version 1.6 and is STRONGLY recommended for all applications due to its stability and broad support for the system libraries needed by FreeSWITCH.
2016.02.14 — Please note this important change that went into Master today. As of today, we are no longer using system versions of libyuv and libvpx due to major conflicts with system versions of these libraries. These are now built static into the freeswitch core. Also note, mod_vpx no longer exists, it is automatically loaded as part of the core and you will no longer have mod_vpx.so
nor have to load it manually. I'll have more details coming, but let me know if you have any questions.
Please note for anyone doing cross compiling, this probably means a bit more work for you, I'll be working on fixing that this week.
- Mike Jerris
Installing from Debian packages
latest release branch:
apt-get update && apt-get install -y curl curl https://files.freeswitch.org/repo/deb/debian/freeswitch_archive_g0.pub | apt-key add - echo "deb http://files.freeswitch.org/repo/deb/freeswitch-1.6/ jessie main" > /etc/apt/sources.list.d/freeswitch.list # you may want to populate /etc/freeswitch at this point. # if /etc/freeswitch does not exist, the standard vanilla configuration is deployed apt-get update && apt-get install -y freeswitch-meta-all
master branch (eg: "git"):
WARNING not suitable for production
apt-get update && apt-get install -y curl curl https://files.freeswitch.org/repo/deb/debian/freeswitch_archive_g0.pub | apt-key add - echo "deb http://files.freeswitch.org/repo/deb/debian-unstable/ jessie main" > /etc/apt/sources.list.d/freeswitch.list # you may want to populate /etc/freeswitch at this point. # if /etc/freeswitch does not exist, the standard vanilla configuration is deployed apt-get update && apt-get install -y freeswitch-meta-all
Building Debian packages from master branch
WARNING not suitable for production
The master branch depends on video libraries which are not available as packages in Debian distribution, but are available from FreeSWITCH repository. Thus, you will need internet access to the FreeSWITCH DEB repository.
echo "deb http://files.freeswitch.org/repo/deb/debian-unstable/ jessie main" > /etc/apt/sources.list.d/freeswitch.list apt-get update && apt-get install -y git curl screen # we need some prepackaged libraries for video support from this repo curl https://files.freeswitch.org/repo/deb/debian/freeswitch_archive_g0.pub | apt-key add - # get the latest master. Use the -b flag to get a specific branch mkdir /usr/src/freeswitch-debs git clone https://freeswitch.org/stash/scm/fs/freeswitch.git /usr/src/freeswitch-debs/freeswitch cd /usr/src/freeswitch-debs # here it's good to run screen with logging, so that you can detach from the shell prompt screen -L cd freeswitch ./debian/util.sh build-all -aamd64 -cjessie # here you can detach by Ctrl-a Ctrl-d and see the log files in /usr/src/freeswitch-debs/log/ folder. # The build may last about an hour, depending on your CPU speed. # If the build is successful, you will have a bunch of .deb files in /usr/src/freeswitch-debs
Building from source
Compiling latest release branch:
apt-get update && apt-get install -y curl curl https://files.freeswitch.org/repo/deb/debian/freeswitch_archive_g0.pub | apt-key add - echo "deb http://files.freeswitch.org/repo/deb/freeswitch-1.6/ jessie main" > /etc/apt/sources.list.d/freeswitch.list apt-get update apt-get install -y --force-yes freeswitch-video-deps-most # because we're in a branch that will go through many rebases it's # better to set this one, or you'll get CONFLICTS when pulling (update) git config --global pull.rebase true # then let's get the source. Use the -b flag to get a specific branch cd /usr/src/ git clone https://freeswitch.org/stash/scm/fs/freeswitch.git -bv1.6 freeswitch.git cd freeswitch.git ./bootstrap.sh -j ./configure make make install
Compiling latest master (eg: "git")
WARNING
not suitable for production
apt-get update && apt-get install -y curl curl https://files.freeswitch.org/repo/deb/debian/freeswitch_archive_g0.pub | apt-key add - echo "deb http://files.freeswitch.org/repo/deb/freeswitch-1.6/ jessie main" > /etc/apt/sources.list.d/freeswitch.list echo "deb http://files.freeswitch.org/repo/deb/debian-unstable/ jessie main" >> /etc/apt/sources.list.d/freeswitch.list apt-get update apt-get install -y --force-yes freeswitch-video-deps-most # Because we're in a branch that will go through many rebases, it's # better to set this one, or you'll get CONFLICTS when pulling (update). git config --global pull.rebase true # Then let's get the source. Use the -b flag to get a specific branch cd /usr/src/ git clone https://freeswitch.org/stash/scm/fs/freeswitch.git freeswitch.git cd freeswitch.git ./bootstrap.sh -j ./configure make make install
Not suitable for production
# Install some tools and dependencies: apt-get install autoconf automake devscripts g++ gawk gettext git-core libcurl4-openssl-dev libdb-dev libedit-dev libgdbm-dev 'libjpeg-dev|libjpeg62-turbo-dev' libldns-dev libncurses5-dev libopus-dev libopus-ocaml libpcre3-dev libperl-dev libpq-dev libsndfile-dev libspeex-dev libspeexdsp-dev libsqlite3-dev libssl-dev libtiff5-dev 'libtool-bin|libtool' make python-dev pkg-config yasm cd /usr/src # To build from master source code: git clone https://freeswitch.org/stash/scm/fs/freeswitch.git cd /usr/src/freeswitch # The -j argument spawns multiple threads to speed the build process ./bootstrap.sh -j # if you want to add or remove modules from the build, edit modules.conf vi modules.conf # add a module by removing '#' comment character at the beginning of the line # remove a module by adding the '#' comment character at the beginning of the line # containing the name of the module to be skipped ./configure --enable-core-pgsql-support make && make install # Install audio files: make cd-sounds-install cd-moh-install # Future updates: cd /usr/local/freeswitch make current
See all FreeSWITCH commits here: https://freeswitch.org/stash/projects/FS/repos/freeswitch/commits
Starting FreeSWITCH
cd /usr/local/freeswitch/ ./bin/freeswitch -ncwait -nonat ./bin/fs_cli
Note that when installed from packages (as in "latest release branch") the binaries are located in "/usr/bin/freeswitch" (It should also be possible to just use "freeswitch" - double check with "which").
Script install freeswitch demo with verto_communicator
WARNING not suitable for production
#!/bin/sh # Simple script to setup a webrtc enabled lab with freeswitch, nginx, letsencrypt certificates and verto_communicator. # launch it on a freshly installed debian 8 server. DO NOT USE IN PRODUCTION, it's for PoC purposes. # Author: "Tristan Mahe" <gled@remote-shell.net> # License: WTFPL DOMAIN="webrtc.remote-shell.net" IP="52.9.216.91" apt-get update && apt-get install -y curl git curl https://files.freeswitch.org/repo/deb/debian/freeswitch_archive_g0.pub | apt-key add - git clone https://freeswitch.org/stash/scm/fs/freeswitch.git /usr/src/freeswitch.git echo "deb http://files.freeswitch.org/repo/deb/freeswitch-1.6/ jessie main" > /etc/apt/sources.list.d/freeswitch.list echo "deb http://ftp.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/debian-backports.list apt-get update && apt-get install -y freeswitch-meta-all nginx-extras freeswitch-mod-verto freeswitch-mod-rtc apt-get install letsencrypt -t jessie-backports letsencrypt certonly -a webroot --webroot-path=/var/www/html $DOMAIN cat /etc/letsencrypt/live/$DOMAIN/fullchain.pem /etc/letsencrypt/live/$DOMAIN/privkey.pem > /etc/freeswitch/tls/wss.pem cp -f /usr/src/freeswitch.git/html5/verto/video_demo/dp/dp.xml /etc/freeswitch/dialplan/default/0000_dp.xml perl -i -pe 's/# listen/listen/g' /etc/nginx/sites-enabled/default perl -i -pe 's/# include snippets\/snakeoil.conf/include snippets\/letsencrypt.conf/g' /etc/nginx/sites-enabled/default perl -i -pe 's/<!-- <param name="ext-rtp-ip" value=""\/> -->/<param name="ext-rtp-ip" value="$IP"\/>/g' /etc/freeswitch/autoload_configs/verto.conf.xml echo "ssl_certificate /etc/letsencrypt/live/$DOMAIN/fullchain.pem;" >> /etc/nginx/snippets/letsencrypt.conf echo "ssl_certificate_key /etc/letsencrypt/live/$DOMAIN/privkey.pem;" >> /etc/nginx/snippets/letsencrypt.conf cd /usr/src/freeswitch.git/html5/verto/verto_communicator/ ./debian8-install.sh ln -s /usr/src/freeswitch.git/html5/verto/verto_communicator/dist /var/www/html/vc service nginx restart service freeswitch restart