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 →