Installation

CGRateS can be installed via packages as well as Go automated source install. We recommend using source installs for advanced users familiar with Go programming and packages for users not willing to be involved in the code building process.

Using packages

Depending on the packaged distribution, the following methods are available:

Debian

There are two main ways of installing the maintained packages:

Aptitude repository

Add the gpg key:

sudo wget -O - https://apt.cgrates.org/apt.cgrates.org.gpg.key | sudo apt-key add -

Add the repository in apt sources list:

echo "deb http://apt.cgrates.org/debian/ v0.10 main" | sudo tee /etc/apt/sources.list.d/cgrates.list

Update & install:

sudo apt-get update
sudo apt-get install cgrates

Once the installation is completed, one should perform the post-install section in order to have the CGRateS properly set and ready to run. After post-install actions are performed, CGRateS will be configured in /etc/cgrates/cgrates.json and enabled in /etc/default/cgrates.

Manual installation of .deb package out of archive server

Run the following commands:

wget http://pkg.cgrates.org/deb/v0.10/cgrates_current_amd64.deb
dpkg -i cgrates_current_amd64.deb

As a side note on http://pkg.cgrates.org/deb/ one can find an entire archive of CGRateS packages.

Redhat/Fedora/CentOS

There are two main ways of installing the maintained packages:

YUM repository

To install CGRateS out of YUM execute the following commands

sudo tee -a /etc/yum.repos.d/cgrates.repo > /dev/null <<EOT
[cgrates]
name=CGRateS
baseurl=http://yum.cgrates.org/yum/v0.10/
enabled=1
gpgcheck=1
gpgkey=https://yum.cgrates.org/yum.cgrates.org.gpg.key
EOT
sudo yum update
sudo yum install cgrates

Once the installation is completed, one should perform the post-install section in order to have the CGRateS properly set and ready to run. After post-install actions are performed, CGRateS will be configured in /etc/cgrates/cgrates.json and enabled in /etc/default/cgrates.

Manual installation of .rpm package out of archive server

Run the following command:

sudo rpm -i http://pkg.cgrates.org/rpm/v0.10/cgrates_current.rpm

As a side note on http://pkg.cgrates.org/rpm/ one can find an entire archive of CGRateS packages.

Using source

For developing CGRateS and switching between its versions, we are using the go mods feature introduced in go 1.13.

Install GO Lang

First we have to setup the GO Lang to our OS. Feel free to download the latest GO binary release from https://golang.org/dl/ In this Tutorial we are going to install Go 1.17.5

sudo rm -rf /usr/local/go
cd /tmp
wget https://go.dev/dl/go1.17.5.linux-amd64.tar.gz
sudo tar -xvf go1.17.5.linux-amd64.tar.gz -C /usr/local/
export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin

Build CGRateS from Source

Configure the project with the following commands:

go get github.com/cgrates/cgrates
cd $HOME/go/src/github.com/cgrates/cgrates
./build.sh

Create Debian / Ubuntu Packages from Source

After compiling the source code you are ready to create the .deb packages for your Debian like OS. First lets install some dependencies:

sudo apt-get install build-essential fakeroot dh-systemd

Finally we are ready to create the system package. Before creation we make sure that we delete the old one first.

cd $HOME/go/src/github.com/cgrates/cgrates/packages
rm -rf $HOME/go/src/github.com/cgrates/*.deb
make deb

After some time and maybe some console warnings, your CGRateS package will be ready.

Install Custom Debian / Ubuntu Package

cd $HOME/go/src/github.com/cgrates
sudo dpkg -i cgrates_*.deb

Generate RPM Packages from Source

Prerequisites
  • Install Golang

  • Git

    sudo apt-get install git
    
  • RPM

    sudo apt-get install rpm
    

Execute the following commands

cd $HOME/go/src/github.com/cgrates/cgrates
export gitLastCommit=$(git rev-parse HEAD)
export rpmTag=$(git log -1 --format=%ci | date +%Y%m%d%H%M%S)+$(git rev-parse --short HEAD)
mkdir -p $HOME/cgr_build/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
wget -P $HOME/cgr_build/SOURCES https://github.com/cgrates/cgrates/archive/$gitLastCommit.tar.gz
cp $HOME/go/src/github.com/cgrates/cgrates/packages/redhat_fedora/cgrates.spec $HOME/cgr_build/SPECS
cd $HOME/cgr_build
rpmbuild -bb --define "_topdir $HOME/cgr_build" SPECS/cgrates.spec

Post-install

Database setup

For its operation CGRateS uses one or more database types, depending on its nature, install and configuration being further necessary.

At present we support the following databases:

Redis

Can be used as DataDB. Optimized for real-time information access. Once installed there should be no special requirements in terms of setup since no schema is necessary.

MySQL

Can be used as StorDB. Optimized for CDR archiving and offline Tariff Plan versioning. Once MySQL is installed, CGRateS database needs to be set-up out of provided scripts. (example for the paths set-up by debian package)

cd /usr/share/cgrates/storage/mysql/
./setup_cgr_db.sh root CGRateS.org localhost
PostgreSQL

Can be used as StorDB. Optimized for CDR archiving and offline Tariff Plan versioning. Once PostgreSQL is installed, CGRateS database needs to be set-up out of provided scripts (example for the paths set-up by debian package).

cd /usr/share/cgrates/storage/postgres/
./setup_cgr_db.sh
MongoDB

Can be used as DataDB as well as StorDB. It is the first database that can be used to store all kinds of data stored from CGRateS from accounts, tariff plans to cdrs and logs. Once MongoDB is installed, CGRateS database needs to be set-up out of provided scripts (example for the paths set-up by debian package)

cd /usr/share/cgrates/storage/mongo/
./setup_cgr_db.sh

Set versions data

Once database setup is completed, we need to write the versions data. To do this, run migrator tool with the parameters specific to your database.

Sample usage for MySQL:

cgr-migrator -stordb_passwd="CGRateS.org" -exec="*set_versions"