Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Scripts] Introduce FSGET - a simple way to install FreeSWITCH. #2667

Merged
merged 1 commit into from
Dec 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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) [<b>Recommended</b>]
* [Using FSGET](/scripts/packaging) [<b>Recommended</b>]
* [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)

Expand Down
40 changes: 40 additions & 0 deletions scripts/packaging/README.md
Original file line number Diff line number Diff line change
@@ -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 <PAT or API token> [release|prerelease] [install]
```

Notice that `fsget` accepts arguments:
- `<PAT or FSA token>` (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!
95 changes: 95 additions & 0 deletions scripts/packaging/fsget.sh
Original file line number Diff line number Diff line change
@@ -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
Loading