Installation

Minimum requirements

Requirement Minimum Recommended
Disk space 10GB 20GB
CPU 2.4Ghz CPU - Dual Core Depends on use
RAM 1GB 4GB
Base System CentOS 7, EL 8 (RHEL 8, Rocky Linux 8, AlmaLinux 8), Ubuntu server 22.04.
MySQL 8 or later
PHP 8 or later
Web Browsers Chrome, Edge, Firefox; after 2016.

Pandora ITSM is an application that needs a MySQL database to function. Supports MySQL or Percona DB. You need a version of PHP 8.x or later. Because it is a completely WEB application, it can be installed on a server and accessed from any workstation with a modern browser that supports HTML5 such as Google Chrome®, Mozilla Firefox®, Microsoft Edge® or Apple Safari®, with Minimum working resolution 1280 by 720 pixels.

It can be installed in a shared database, although depending on the use that is going to be given to it, performance may be affected by the capacity of said database, especially if data with a lot of history needs to be kept, for example tickets from several years.

Cloud Installation

From any operating system supported by PITSM and connected to the Internet (AWS®, Google Cloud®, Azure®, DigitalOcean®, a VPS provider or virtual or physical machines) an automatic installation of Pandora ITSM can be carried out with as Just run the following command as root (super user):

For EL 8 (RHEL 8, Rocky Linux 8, AlmaLinux 8):

curl -SsL https://pfms.me/deploy-pandora-itsm-el8 | bash

Although the above run does a complete installation of the environment, it is possible to define different switches through environment variables to customize the installation. By default the name of the database, the username (and its password) to be used by Pandora ITSM and the password of the root user of the database is pandoraitsm. To set different values use the env command for the following variables: DBNAME, DBUSER, DBPASS and DBROOTPASS, respectively.

For Ubuntu server 22.04:

curl -SsL https://pfms.me/deploy-pandora-itsm-ubuntu | bash

Although the above run does a complete installation of the environment, it is possible to define different switches through environment variables to customize the installation. By default the name of the database and the username to be used by Pandora ITSM is pandoraitsm; the password of that user and the password of the database user root is P4ndor4.itsm. To set different values use the env command for the following variables: DBNAME, DBUSER, DBPASS and DBROOTPASS, respectively.

Once installed, follow the on-screen instructions (“Connecting for the first time to Integria IMS”) and log in for the first time to the administration console.

Installing Pandora ITSM on Ubuntu Server 22.04

Prerequisites

  • Ubuntu server 22.04 with root user rights.
  • Internet connection.
  • 2 GB of RAM and 10 GB of free disk space.
  • Define variables:
  1. export DEBIAN_FRONTEND=noninteractive.
  2. export NEEDRESTART_SUSPEND=1

Basic tools

apt update
apt install -y net-tools \
    vim \
    curl \
    sudo \
    wget \
    software-properties-common \
    apt-transport-https \
    ca-certificates \
    gnupg \
    lsb-release \
    gawk \
    sed \
    grep

Apache and PHP 8.1

add-apt-repository ppa:ondrej/php -y
 
apt update
apt install -y php8.1-fpm \
php8.1-common \
libapache2-mod-fcgid \
php8.1-cli \
apache2
 
a2enmod proxy_fcgi setenvif
a2enconf php8.1-fpm
 
systemctl restart php8.1-fpm
systemctl restart apache2

Pandora ITSM Web Console Dependencies

apt install -y ldap-utils \
    postfix \
    wget \
    libzstd1 \
    gir1.2-atk-1.0 \
    libavahi-common-data \
    cairo-perf-utils \
    libfribidi-bin \
    php8.1-curl \
    php8.1-fileinfo \
    php8.1-gd  \
    php8.1-gettext  \
    php8.1-imap  \
    php8.1-ldap \
    php8.1-mbstring \
    php8.1-mcrypt \
    php8.1-mysqli \
    php8.1-zip  \
    whois \
    cron

Disable AppArmor and UFW

systemctl stop ufw.service
systemctl disable ufw
systemctl stop apparmor
systemctl disable apparmor

MySQL Installation

curl -O https://repo.percona.com/apt/percona-release_latest.generic_all.deb
apt install -y gnupg2 lsb-release ./percona-release_latest.generic_all.deb
percona-release setup ps80
apt install -y percona-server-server percona-xtrabackup-80
systemctl start mysql
 
mysql -uroot
 
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'P4ndor4.itsm';
 
INSTALL COMPONENT 'file://component_validate_password';
 
CREATE DATABASE pandoraitsm;
 
CREATE USER  'pandoraitsm'@'%' IDENTIFIED BY 'P4ndor4.itsm';
 
ALTER USER 'pandoraitsm'@'%' IDENTIFIED WITH mysql_native_password BY 'P4ndor4.itsm';
 
GRANT ALL PRIVILEGES ON pandoraitsm.* TO 'pandoraitsm'@'%';
 
exit;
cat > /etc/mysql/my.cnf << EOF_DB
[mysqld]
datadir=/var/lib/mysql
user=mysql
character-set-server=utf8mb4
skip-character-set-client-handshake
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Mysql optimizations for Pandora ITSM
# Please check the documentation in https://pandorafms.com/itsm/ for better results
 
max_allowed_packet = 64M
innodb_buffer_pool_size = $(grep -i total /proc/meminfo | head -1 | awk '{printf "%.2f \n", $(NF-1)*0.4/1024}' | sed "s/\\..*$/M/g")
innodb_lock_wait_timeout = 90
innodb_file_per_table
innodb_flush_log_at_trx_commit = 0
innodb_flush_method = O_DIRECT
innodb_log_file_size = 64M
innodb_log_buffer_size = 16M
innodb_io_capacity = 300
thread_cache_size = 8
thread_stack    = 256K
max_connections = 100
 
key_buffer_size=4M
read_buffer_size=128K
read_rnd_buffer_size=128K
sort_buffer_size=128K
join_buffer_size=4M
 
skip-log-bin
 
sql_mode=""
 
log-error=/var/log/mysql/error.log
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
 
EOF_DB
systemctl restart mysql

Pandora ITSM Installation

curl -LSs --output \
IntegriaIMS_enterprise-latest.noarch.tar.gz \
"https://firefly.artica.es/KkGqio0L4jV0nfnThj6774eg1rZJQd1Y/IntegriaIMS_enterprise-latest.tar.gz"

Pandora ITSM Web Console Installation

tar xvzf IntegriaIMS_enterprise-latest.noarch.tar.gz
 
cp -Ra integria_enterprise /var/www/html/integria
 
rm -f /var/www/html/integria/*.spec

PM2

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >> /etc/apt/sources.list.d/nodesource.list
sudo apt-get update
sudo apt-get install nodejs -y
 
cd /var/www/html/integria/extras/chat_server
npm install pm2@latest -g
npm update
pm2 start server.js
pm2 save
pm2 startup
cat > /var/www/html/integria/extras/chat_server/config/config.js << EO_CONFIG_TMP
// If this file is modified, check the chat_set_default_values() function.
module.exports = {
  PORT: process.env.PORT || 5000,
  DBPORT: process.env.DBPORT || 3306,
  DBHOST: process.env.DBHOST || "127.0.0.1",
  DBDATABASE: process.env.DBDATABASE || "pandoraitsm",
  DBUSER: process.env.DBUSER || "pandoraitsm",
  DBPASS: process.env.DBPASS || "P4ndor4.itsm",
  DBLOGGIN: process.env.DBLOGGIN || console.log,
  HASH: process.env.HASH || "ef541cdc541a065d52c9a375223594219e3899343db4ef6d89eb664288528b18"
};
 
EO_CONFIG_TMP

SSL configuration

cat > /etc/apache2/conf-available/ssl-params.conf << EOF_PARAM
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
 
    SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
 
    SSLHonorCipherOrder On
 
 
    Header always set X-Frame-Options DENY
 
    Header always set X-Content-Type-Options nosniff
 
    # Requires Apache >= 2.4
 
    SSLCompression off
 
    SSLUseStapling on
 
    SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
 
 
    # Requires Apache >= 2.4.11
 
    SSLSessionTickets Off
EOF_PARAM
a2enmod ssl
a2enmod headers
a2enconf ssl-params
a2ensite default-ssl
a2enconf ssl-params
apache2ctl configtest
 
systemctl restart apache2
systemctl enable mysql --now
systemctl enable apache2 --now
systemctl enable php8.1-fpm --now

Structure and data in MySQL

mysql -upandoraitsm -pP4ndor4.itsm
 
use pandoraitsm;
 
source /var/www/html/integria/integria_db.sql;
 
source /var/www/html/integria/integria_dbdata.sql;
 
exit;

PHP and Apache2 configuration

cat > /var/www/html/integria/include/config.php << EO_CONFIG_F
<?php
\$config["dbtype"] = "mysql";
\$config["dbname"]="pandoraitsm";
\$config["dbuser"]="pandoraitsm";
\$config["dbpass"]="P4ndor4.itsm";
\$config["dbhost"]="127.0.0.1";
\$config["homedir"]="/var/www/html/integria";
\$config["homeurl"]="/integria";        
error_reporting(0); 
\$ownDir = dirname(__FILE__) . '/';
include (\$ownDir . "config_process.php");
EO_CONFIG_F
cat > /etc/apache2/conf-enabled/pandoraitsm_security.conf << EO_CONFIG_F
<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
EO_CONFIG_F
chmod 600 /var/www/html/integria/include/config.php
 
chown -R www-data:www-data /var/www/html/integria
 
mv /var/www/html/integria/install.php /var/www/html/integria/install.done
sed -i -e "s/php_flag engine off//g" /var/www/html/integria/images/.htaccess
 
sed -i -e "s/php_flag engine off//g" /var/www/html/integria/attachment/.htaccess
 
ln -s /etc/php/8.1/fpm/php.ini /etc/
 
sed --follow-symlinks -i -e "s/^max_input_time.*/max_input_time = -1/g" /etc/php.ini
 
sed --follow-symlinks -i -e "s/^max_execution_time.*/max_execution_time = 0/g" /etc/php.ini
 
sed --follow-symlinks -i -e "s/^upload_max_filesize.*/upload_max_filesize = 800M/g" /etc/php.ini
 
sed --follow-symlinks -i -e "s/^memory_limit.*/memory_limit = 800M/g" /etc/php.ini
 
sed --follow-symlinks -i -e "s/.*post_max_size =.*/post_max_size = 800M/" /etc/php.ini
 
sed --follow-symlinks -i -e "s/^disable_functions/;disable_functions/" /etc/php.ini
 
echo 'TimeOut 900' > /etc/apache2/conf-enabled/timeout.conf
 
echo 'ProxyTimeout 300' >> /etc/apache2/conf-enabled/timeout.conf
cat > /var/www/html/index.html << EOF_INDEX
<meta HTTP-EQUIV="REFRESH" content="0; url=/integria/">
EOF_INDEX
systemctl restart apache2
systemctl restart php8.1-fpm

Kernel optimization

cat >> /etc/sysctl.conf <<EO_KO
# Pandora ITSM Optimization
 
# default=5
net.ipv4.tcp_syn_retries = 3
 
# default=5
net.ipv4.tcp_synack_retries = 3
 
# default=1024
net.ipv4.tcp_max_syn_backlog = 65536
 
# default=124928
net.core.wmem_max = 8388608
 
# default=131071
net.core.rmem_max = 8388608
 
# default = 128
net.core.somaxconn = 1024
 
# default = 20480
net.core.optmem_max = 81920
 
EO_KO
sysctl --system

Logrotate and Cron

cat > /etc/logrotate.d/pandora_itsm <<EO_LRA
/var/www/html/integria/integria.log
/var/www/html/integria/pandora_itsm.log  {
        weekly
        missingokas
        size 100000
        rotate 3
        maxage 15
        compress
        notifempty
        create 644 apache root
}
EO_LRA
 
 
chmod 0644 /etc/logrotate.d/pandora_itsm
 
 
echo "*/5 * * * * php /var/www/html/integria/include/integria_cron.php" >> /etc/crontab

Once the installation has been completed make the first connection to Pandora ITSM.

Pandora ITSM installation on EL 8

Prerequisites

  • EL 8 Operating System (RHEL 8, Rocky Linux 8, Alma Linux 8).
  • User with root permissions.
  • Internet connection.
  • 2 GB of RAM and 10 GB of free disk space.

Repository configuration

dnf install -y \
	tar \
	dnf-utils \
	epel-release \
	http://rpms.remirepo.net/enterprise/remi-release-8.rpm \
	https://repo.percona.com/yum/percona-release-latest.noarch.rpm
 
dnf module reset -y php
 
dnf module install -y php:remi-8.2

Installation of extra dependencies

dnf install -y wget \
	vim \
	sudo \
	curl

Percona database installation

dnf module disable -y mysql
 
percona-release setup ps80 -y
 
dnf install -y percona-server-server

Installation of Web Console dependencies

dnf install -y httpd \
    php \
    php-cli \
    php-common \
    php-curl \
    php-fileinfo \
    php-gd \
    php-gettext \
    php-imap \
    php-intl \
    php-ldap \
    php-mbstring \
    php-mcrypt \
    php-mysqli \
    php-zip

Operating system and database settings

setenforce 0
 
sed -i -e "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
 
systemctl disable firewalld --now
cat > /etc/my.cnf << EO_CONFIG_TMP
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
EO_CONFIG_TMP

Complex passwords should always be used, in this example below simple passwords are used.

systemctl start mysqld
 
export MYSQL_PWD=$(grep "temporary password" /var/log/mysqld.log | rev | cut -d' ' -f1 | rev)
 
mysql -uroot -p$MYSQL_PWD
 
SET PASSWORD FOR 'root'@'localhost' = 'Pandor4!';
 
UNINSTALL COMPONENT 'file://component_validate_password';
 
SET PASSWORD FOR 'root'@'localhost' = 'pandoraitsm';
 
CREATE DATABASE pandoraitsm;
 
CREATE USER  'pandoraitsm'@'%' IDENTIFIED BY 'pandoraitsm';
 
ALTER USER 'pandoraitsm'@'%' IDENTIFIED WITH mysql_native_password BY 'pandoraitsm';
 
GRANT ALL PRIVILEGES ON pandoraitsm.* TO 'pandoraitsm'@'%';
 
exit;
POOL_SIZE=$(grep -i total /proc/meminfo | head -1 | awk '{printf "%.2f \n", $(NF-1)*0.4/1024}' | sed "s/\\..*$/M/g")
 
cat > /etc/my.cnf << EO_CONFIG_F
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
character-set-server=utf8
skip-character-set-client-handshake
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Mysql optimizations for Pandora ITSM database
 
max_allowed_packet = 64M
innodb_buffer_pool_size = $POOL_SIZE
innodb_lock_wait_timeout = 90
innodb_file_per_table
innodb_flush_log_at_trx_commit = 0
innodb_flush_method = O_DIRECT
innodb_log_file_size = 64M
innodb_log_buffer_size = 16M
innodb_io_capacity = 100
thread_cache_size = 8
thread_stack    = 256K
max_connections = 100
 
key_buffer_size=4M
read_buffer_size=128K
read_rnd_buffer_size=128K
sort_buffer_size=128K
join_buffer_size=4M
 
query_cache_type = 1
query_cache_size = 64M
query_cache_min_res_unit = 2k
query_cache_limit = 256K
 
sql_mode=""
 
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
 
EO_CONFIG_F
sed -i -e "/query_cache.*/ s/^#*/#/g" /etc/my.cnf
 
systemctl restart mysqld
 
systemctl enable mysqld --now

Installation of Pandora ITSM and Node

curl -L --output \
	IntegriaIMS_enterprise-latest.noarch.rpm \
	"http://firefly.artica.es/KkGqio0L4jV0nfnThj6774eg1rZJQd1Y/IntegriaIMS_enterprise-latest.noarch.rpm"
 
dnf install -y ./IntegriaIMS_enterprise*.rpm
curl -fsSL https://rpm.nodesource.com/setup_20.x | bash -
 
dnf install -y nodejs
 
cd /var/www/html/integria/extras/chat_server
 
npm install pm2@latest -g
 
npm update
 
pm2 start server.js
 
pm2 save
 
pm2 startup
cat > /var/www/html/integria/extras/chat_server/config/config.js << EO_CONFIG_TMP
// If this file is modified, check the chat_set_default_values() function.
module.exports = {
  PORT: process.env.PORT || 5000,
  DBPORT: process.env.DBPORT || 3306,
  DBHOST: process.env.DBHOST || "127.0.0.1",
  DBDATABASE: process.env.DBDATABASE || "pandoraitsm",
  DBUSER: process.env.DBUSER || "pandoraitsm",
  DBPASS: process.env.DBPASS || "pandoraitsm",
  DBLOGGIN: process.env.DBLOGGIN || console.log,
  HASH: process.env.HASH || "ef541cdc541a065d52c9a375223594219e3899343db4ef6d89eb664288528b18"
};
 
EO_CONFIG_TMP
systemctl enable mysqld --now
 
systemctl enable httpd --now
 
systemctl enable php-fpm --now

Database population

mysql -upandoraitsm -ppandoraitsm
 
USE pandoraitsm;
 
SOURCE /var/www/html/integria/integria_db.sql
 
SOURCE /var/www/html/integria/integria_dbdata.sql
 
exit;

Console settings

cat > /var/www/html/integria/include/config.php << EO_CONFIG_F
<?php
\$config["dbtype"] = "mysql";
\$config["dbname"]="pandoraitsm";
\$config["dbuser"]="pandoraitsm";
\$config["dbpass"]="pandoraitsm";
\$config["dbhost"]="127.0.0.1";
\$config["homedir"]="/var/www/html/integria";
\$config["homeurl"]="/pandoraitsm";	
error_reporting(0); 
\$ownDir = dirname(__FILE__) . '/';
include (\$ownDir . "config_process.php");
 
EO_CONFIG_F
cat > /etc/httpd/conf.d/PandoraITSM.conf << EO_CONFIG_F
<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
 
EO_CONFIG_F
sed -i -e "s/php_flag engine off//g" /var/www/html/integria/images/.htaccess
 
sed -i -e "s/php_flag engine off//g" /var/www/html/integria/attachment/.htaccess
chmod 600 /var/www/html/integria/include/config.php
 
chown -R apache. /var/www/html/integria
 
mv /var/www/html/integria/install.php /var/www/html/integria/install.done
sed -i -e "s/^max_input_time.*/max_input_time = -1/g" /etc/php.ini
 
sed -i -e "s/^max_execution_time.*/max_execution_time = 0/g" /etc/php.ini
 
sed -i -e "s/^upload_max_filesize.*/upload_max_filesize = 800M/g" /etc/php.ini
 
sed -i -e "s/^memory_limit.*/memory_limit = 800M/g" /etc/php.ini
 
sed -i -e "s/.*post_max_size =.*/post_max_size = 800M/" /etc/php.ini
 
echo 'TimeOut 900' > /etc/httpd/conf.d/timeout.conf
cat > /var/www/html/index.html << EOF_INDEX
<meta HTTP-EQUIV="REFRESH" content="0; url=/integria/">
EOF_INDEX
systemctl restart httpd
 
systemctl restart php-fpm

Kernel Optimization

cat >> /etc/sysctl.conf <<EO_KO
# Integria IMS Optimization
 
# default=5
net.ipv4.tcp_syn_retries = 3
 
# default=5
net.ipv4.tcp_synack_retries = 3
 
# default=1024
net.ipv4.tcp_max_syn_backlog = 65536
 
# default=124928
net.core.wmem_max = 8388608
 
# default=131071
net.core.rmem_max = 8388608
 
# default = 128
net.core.somaxconn = 1024
 
# default = 20480
net.core.optmem_max = 81920
 
EO_KO
sysctl --system

Cron and Logrotate

cat > /etc/logrotate.d/pandora_itsm <<EO_LRA
/var/www/html/integria/integria.log
/var/www/html/integria/pandora_itsm.log  {
        weekly
        missingokas
        size 100000
        rotate 3
        maxage 15
        compress
        notifempty
        create 644 apache root
}
EO_LRA
chmod 0644 /etc/logrotate.d/pandora_itsm
 
echo "*/5 * * * * php /var/www/html/integria/include/integria_cron.php" >> /etc/crontab

Once the installation has been completed make the first connection to Pandora ITSM.

First time connection to Pandora ITSM

A screen will appear to accept the license and then a screen to log in (login screen):

The default user is admin and the password is integria.

The first time you will notice that the newly installed system uses demo data to serve as a guide for the first use. It is recommended that if you are testing Pandora ITSM you first visit the different options to see screens with real data and reports before deleting existing data.

The system incorporates an option: the configuration to restart or reset the data and leave the system practically empty. To do this, use the configuration option (cogwheel icon or menu Setup → Setup → Old data maintenance) and then click on the database data management tab (the recycle symbol). To reset all data, use the Reset all data button in the section with the same name, below:

This option will delete all data, both demo data and data added later.

Return to Pandora FMS documentation index