Installation
Minimum requirements
Requirement | Minimum | Recommended |
---|---|---|
Disk space | 10GB | 20GB |
CPU | 2.4Ghz CPU - Dual Core | Depends on use |
RAM | 1GB | 4GB |
Base System | 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:
export DEBIAN_FRONTEND=noninteractive
.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.