====== Installation ====== {{indexmenu_n>1}} ===== 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 (“[[#first_time_connection_to_pandora_itsm|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 cat > /etc/apache2/conf-enabled/pandoraitsm_security.conf << EO_CONFIG_F Options Indexes FollowSymLinks AllowOverride All Require all granted 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 EOF_INDEX systemctl restart apache2 systemctl restart php8.1-fpm === Kernel optimization === cat >> /etc/sysctl.conf < sysctl --system === Logrotate and Cron === cat > /etc/logrotate.d/pandora_itsm <> /etc/crontab Once the installation has been completed [[#first_time_connection_to_pandora_itsm|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 cat > /etc/httpd/conf.d/PandoraITSM.conf << EO_CONFIG_F Options Indexes FollowSymLinks AllowOverride All Require all granted 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 EOF_INDEX systemctl restart httpd systemctl restart php-fpm ==== Kernel Optimization ==== cat >> /etc/sysctl.conf < sysctl --system ==== Cron and Logrotate ==== cat > /etc/logrotate.d/pandora_itsm < 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 [[#first_time_connection_to_pandora_itsm|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): {{ :wiki:pitsm-01_pandora_itsm_installing-login_screen.png }} 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: {{ :wiki:pitsm-01_pandora_itsm_installing-reset_all_data.png }} This option **will delete all data, both demo data and data added later**. [[:en:documentation:start|Return to Pandora FMS documentation index]]