Install Rudder server with an external database

Rudder uses a PostgreSQL database to store its reports.

People having a dedicated database server or having a report database becoming too big can set up an external database instead of letting Rudder manage one on the Rudder server itself.

Install a new server with a separate database

Install PostgreSQL server

If you have to install the PostgreSQL service on a separate server, we provide here a simplified PostgreSQL documentation.

If your organization has a database administrator, just ask them to create a new database with an associated user and permissions.

If in doubt, please always refer to the officiel PostgreSQL documentation https://www.postgresql.org/docs/

As much as possible, install your distribution PostgreSQL package on the target SQL host. Check that you have the minimum required PostgreSQL version and install it.

Rudder requires PostgreSQL 13 or higher.

On a RHEL-like system

$ yum install postgresql-server
$ postgresql-setup --initdb
$ systemctl start postgresql

On a Debian-like system

$ apt-get install postgresql

On a SLES system

$ zypper install postgresql-server

On RHEL, you must also initialize the database :

$ postgresql-setup --initdb
$ systemctl start postgresql

Then, you need to create the rudder user with a secure password, and then the rudder database

$ su postgres -c "psql -q -c \"CREATE USER rudder WITH PASSWORD '${PASSWORD}'\""

$ su postgres -c "psql -q -c 'CREATE DATABASE rudder WITH OWNER = rudder'"

Make sure to give access to this user from the outside by editing pg_hba.conf.

On debian like it is /etc/postgresql/<your version>/main/pg_hba.conf, on redhat like it is /var/lib/pgsql/data/pg_hba.conf.

In any case, it can be found with the command : su postgres -c "psql -t -P format=unaligned -c 'show hba_file';"

# this line must be adapted to you installation and put into pg_hba.conf
# host  <database>         <user>          <rudder server IP>/32       md5
host    rudder             rudder          196.168.0.1/32           md5

Make sure your postgresql server listens on a public interface. In postgresql.conf.

On debian like it is /etc/postgresql/<your version>/main/postgresql.conf, on redhat like it is /var/lib/pgsql/data/postgresql.conf.

In any case, it should be in the same directory as pg_hba.conf.

listen_addresses = '*'

Finally restart PostgreSQL service:

systemctl restart postgresql

Install rudder-external-db

On Rudder host, first install the rudder-external-db package, before installing any rudder package:

On a RHEL-like system

$ yum install rudder-external-db

On a Debian-like system

$ apt-get install rudder-external-db

On a SLES system

$ zypper install rudder-external-db

You need to complete the configuration file /opt/rudder/etc/external-db.conf:

# Host where rudder server must connect to access the database
DB_HOST="postgresql.example.com"

# Database user and password, to create them ask your database administrator or use the following command
#    su postgres -c "psql -q -c \"CREATE USER ${DB_USER} WITH PASSWORD '${DB_PASSWORD}'\""
DB_USER="rudder"
DB_PASSWORD="xxx"

# Postgresql database name, to create it ask your database administrator or use the following command
#    su postgres -c "psql -q -c \"CREATE DATABASE ${DB_NAME} WITH OWNER = ${DB_USER}\""
DB_NAME="rudder"

And check that you can connect to the database server

psql -U rudder -h $DB_HOST

Install Rudder

Finally, follow the regular Rudder server installation process depending on your system: Debian/Ubuntu | RHEL/CentOS/AlmaLinux/Rocky | SLES | Amazon Linux


← on SLES on Debian/Ubuntu →