diff --git a/README.md b/README.md index 728486f891..e8412857d6 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,8 @@ The main index for documentation is available at: Step by step tutorials to install FreeSWITCH from packages: - * [Debian](https://freeswitch.org/confluence/display/FREESWITCH/Debian) [Recommended] + * [Using FSGET](/scripts/packaging) [Recommended] + * [Debian](https://freeswitch.org/confluence/display/FREESWITCH/Debian) * [Raspberry Pi](https://freeswitch.org/confluence/display/FREESWITCH/Raspberry+Pi) * [CentOS 7](https://freeswitch.org/confluence/display/FREESWITCH/CentOS+7+and+RHEL+7) diff --git a/scripts/packaging/README.md b/scripts/packaging/README.md new file mode 100644 index 0000000000..88059328c7 --- /dev/null +++ b/scripts/packaging/README.md @@ -0,0 +1,40 @@ +# Installing FreeSWITCH using FSGET + +## Prerequisites + +### Dependencies +Make sure you have `cURL` binary installed or use any other downloader. +To install curl type +``` +apt update && apt install -y curl +``` + +### Authentication required + +A `SignalWire Personal Access Token` (PAT) or an `API Token` (for enterprise customers) is required to access FreeSWITCH install packages. + +[HOWTO Create a SignalWire Personal Access Token](https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/Installation/how-to-create-a-personal-access-token/how-to-create-a-personal-access-token) + +[Upgrade to FreeSWITCH Advantage](https://signalwire.com/products/freeswitch-enterprise) + +## Configuring FreeSWITCH Debian repository +``` +curl -sSL https://freeswitch.org/fsget | bash -s [release|prerelease] [install] +``` + +Notice that `fsget` accepts arguments: +- `` (Required) +- `[release|prerelease]` (Optional) - `release` by default, `prerelease` is what you see in the `master` branch +- `[install]` (Optional) - If missing it will not install FreeSWITCH automatically after configuring the repository + +`FreeSWITCH Community` or `FreeSWITCH Enterprise` version is installed based on the token provided. + +Enterprise customers may install `FreeSWITCH Community` versions by using a `SignalWire Personal Access Token` instead of an `API Token`. +## Installing FreeSWITCH +If not installed already type + +``` +apt-get install -y freeswitch-meta-all +``` + +Enjoy using FreeSWITCH! \ No newline at end of file diff --git a/scripts/packaging/fsget.sh b/scripts/packaging/fsget.sh new file mode 100755 index 0000000000..bb5e005853 --- /dev/null +++ b/scripts/packaging/fsget.sh @@ -0,0 +1,95 @@ +#!/bin/bash + +TOKEN=$1 +RELEASE=$2 +INSTALL=$3 + +# Source the os-release file (assuming it exists) +. /etc/os-release +echo $ID +echo $VERSION_CODENAME + +if [ "${ID,,}" = "debian" ]; then + ARCH=$(dpkg --print-architecture) + if [[ "${TOKEN}" == pat_* ]]; then + echo "FreeSWITCH Community" + + RPI="" + + if [ "${RELEASE,,}" = "prerelease" ]; then + RELEASE="unstable" + else + RELEASE="release" + fi + + echo $RELEASE + + if [ "${ARCH,,}" = "armhf" ]; then + RPI="rpi/" + fi + + rm -f /etc/apt/sources.list.d/freeswitch.list + apt-get update && apt-get install -y gnupg2 wget software-properties-common apt-transport-https + + wget --http-user=signalwire --http-password=$TOKEN -O /usr/share/keyrings/signalwire-freeswitch-repo.gpg https://freeswitch.signalwire.com/repo/deb/${RPI}debian-release/signalwire-freeswitch-repo.gpg + echo "machine freeswitch.signalwire.com login signalwire password $TOKEN" > /etc/apt/auth.conf + chmod 600 /etc/apt/auth.conf + echo "deb [signed-by=/usr/share/keyrings/signalwire-freeswitch-repo.gpg] https://freeswitch.signalwire.com/repo/deb/${RPI}debian-${RELEASE}/ ${VERSION_CODENAME} main" > /etc/apt/sources.list.d/freeswitch.list + echo "deb-src [signed-by=/usr/share/keyrings/signalwire-freeswitch-repo.gpg] https://freeswitch.signalwire.com/repo/deb/${RPI}debian-${RELEASE}/ ${VERSION_CODENAME} main" >> /etc/apt/sources.list.d/freeswitch.list + + apt-get update + if [ "${INSTALL}" = "install" ]; then + echo "Installing FreeSWITCH Community" + apt-get install -y freeswitch-meta-all + echo "------------------------------------------------------------------" + echo " Done installing FreeSWITCH Community" + echo "------------------------------------------------------------------" + else + echo "------------------------------------------------------------------" + echo " Done configuring FreeSWITCH Debian repository" + echo "------------------------------------------------------------------" + echo "To install FreeSWITCH Community type: apt-get install -y freeswitch-meta-all" + fi + elif [[ "${TOKEN}" == PT* ]]; then + echo "FreeSWITCH Enterprise" + + if [ "${RELEASE,,}" = "prerelease" ]; then + RELEASE="unstable" + else + RELEASE="1.8" + fi + + echo $RELEASE + + if [ "${ARCH,,}" = "armhf" ]; then + RPI="-rpi" + fi + + rm -f /etc/apt/sources.list.d/freeswitch.list + apt-get update && apt-get install -y gnupg2 wget software-properties-common apt-transport-https + + wget --http-user=signalwire --http-password=$TOKEN -O - https://fsa.freeswitch.com/repo/deb/fsa${RPI}/pubkey.gpg | apt-key add - + echo "machine fsa.freeswitch.com login signalwire password $TOKEN" > /etc/apt/auth.conf + chmod 600 /etc/apt/auth.conf + echo "deb https://fsa.freeswitch.com/repo/deb/fsa${RPI}/ ${VERSION_CODENAME} ${RELEASE}" > /etc/apt/sources.list.d/freeswitch.list + echo "deb-src https://fsa.freeswitch.com/repo/deb/fsa${RPI}/ ${VERSION_CODENAME} ${RELEASE}" >> /etc/apt/sources.list.d/freeswitch.list + + apt-get update + if [ "${INSTALL}" = "install" ]; then + echo "Installing FreeSWITCH Enterprise" + apt-get install -y freeswitch-meta-all + echo "------------------------------------------------------------------" + echo " Done installing FreeSWITCH Enterprise" + echo "------------------------------------------------------------------" + else + echo "------------------------------------------------------------------" + echo " Done configuring FreeSWITCH Debian repository" + echo "------------------------------------------------------------------" + echo "To install FreeSWITCH Enterprise type: apt-get install -y freeswitch-meta-all" + fi + else + echo "Unrecognized token type" + fi +else + echo "Unrecognized OS. We support Debian only." +fi \ No newline at end of file