Install OCS-NG Inventory on Fedora 30/Fedora 29

|
Last Updated:
|
|

In this guide, we are going to learn how to install OCS-NG Inventory on Fedora 30/Fedora 29. OCS (Open Computer and Software) Inventory Next Generation is an opensource tool that is used to inventory IT assets. It is deployed in a agent-server architecture where an an OCS NG agent is installed on an asset to be inventory to collect the information about that asset. In cases where an agent cannot be installed like in routers, switches, SNMP can be used to collect asset information.

Install OCS-NG Inventory on Fedora 30/Fedora 29

In this guide, we are going to install OCS-NG Inventory on Fedora 30/Fedora 29 by building it from the source code. Hence, ensure that your system meets the following prerequisites before you can proceed to install OCS inventory.

Prerequisites

OCS-NG Inventory runs over a LAMP/LEMP Stack. It also requires a number of perl Libraries and PHP extensions. Check the whole list of the required Libraries and modules on prerequisites page.

Update your system packages

dnf update

In order to install all the required libraries and modules for OCS Inventory, run the commands below;

Install Apache Web server

dnf install httpd -y

Install MariaDB Database Server

dnf install mariadb mariadb-server -y

Install PHP and Required Extensions

Well, the available PHP version on Fedora 30/Fedora 29 is PHP 7.3. In this guide, we are going to run OCS Inventory with PHP 7.2. Why do we use PHP 7.2? With PHP 7.3, OCS inventory gave me blank dashboards and stuck on Processing… hence the reason why we reverted to using PHP 7.2. If you know how to fix this issue, kindly drop it on the comments section below.

To install PHP 7.2 on Fedora 30/29, you need to install the Remi repositories.

Fedora 30

dnf install http://rpms.remirepo.net/fedora/remi-release-30.rpm -y

Fedora 29

dnf install http://rpms.remirepo.net/fedora/remi-release-29.rpm -y

Next, install PHP and the required PHP modules from Remi repositories.

dnf --enablerepo=remi install php72 php72-{php-domxml,php-gd,php-imap,php-ldap,php-mbstring,php-mysqlnd,php-opcache,php-pdo,php-pear,php-pecl-apcu,php-pecl-zip,php-soap,php-xmlrpc,php-gd,php-xml,php-zip,php-fpm,php-bcmath,php-intl}

Install Perl and Build Tools

Run the command below to install Perl, perl modules and the required build tools.

dnf install -y make gcc perl-Archive-Zip perl-Compress-Zlib perl-DBD-MySQL perl-DBI perl-Mojolicious perl-Net-IP perl-Plack perl-SOAP-Lite perl-Switch perl-XML-Entities perl-XML-Simple perl-Apache-DBI perl-Digest-SHA1 perl-Apache2-SOAP

Allow Apache on FirewallD

firewall-cmd --permanent --add-service=http
firewall-cmd --reload

Start and Enable Apache, MariaDB and PHP-FPM services.

systemctl start httpd mariadb php72-php-fpm
systemctl enable httpd mariadb php72-php-fpm

To perform initial database security, run the MySQL secure script.

mysql_secure_installation

Create OCS Database and Database User

Login to MariaDB and create OCS database. ocsweb is the default database used by the OCS inventory.

mysql -u root -p
create database ocsweb;

Create OCS database user and grant all the privileges on OCS database. ocs is the default database user used by OCS inventory. The default password is ocs.

grant all on ocsweb.* to ocs@localhost identified by 'P@SSWoRD';

Reload the privileges tables and quit database connection.

flush privileges;
quit

You can check the ocsdb-import.log for any OCS data import issues.

Download OCS-NG Inventory Server Archive

Navigate to OCS downloads page and download OCS Server. You can simply run the command below to grab OCS 2.6.

wget https://github.com/OCSInventory-NG/OCSInventory-ocsreports/releases/download/2.6/OCSNG_UNIX_SERVER_2.6.tar.gz

Once the download is donem extract the archive.

tar xzf OCSNG_UNIX_SERVER_2.6.tar.gz

Install OCS Inventory

Navigate to OCS Server source directory and execute the command below to run the installation.

cd OCSNG_UNIX_SERVER_2.6/
sh setup.sh

Once the installer run, follow through the prompts to install OCS-NG inventory accordingly. Press ENTER to accept the defaults.

+----------------------------------------------------------+
|                                                          |
|  Welcome to OCS Inventory NG Management server setup !   |
|                                                          |
+----------------------------------------------------------+

Trying to determine which OS or Linux distribution you use
+----------------------------------------------------------+
| Checking for Apache web server binaries !				|
+----------------------------------------------------------+

CAUTION: If upgrading Communication server from OCS Inventory NG 1.0 RC2 and
previous, please remove any Apache configuration for Communication Server!

Do you wish to continue ([y]/n)?y
Assuming Communication server 1.0 RC2 or previous is not installed
on this computer.

Starting OCS Inventory NG Management server setup from folder /root/OCSNG_UNIX_SERVER_2.6
Storing log in file /root/OCSNG_UNIX_SERVER_2.6/ocs_server_setup.log

+----------------------------------------------------------+
| Checking for database server properties...			  |
+----------------------------------------------------------+

Your MySQL client seems to be part of MySQL version 10.3.
Your computer seems to be running MySQL 4.1 or higher, good ;-)

Which host is running database server [localhost] ?
OK, database server is running on host localhost ;-)

On which port is running database server [3306] ?
OK, database server is running on port 3306 ;-)


+----------------------------------------------------------+
| Checking for Apache web server daemon...				|
+----------------------------------------------------------+

Where is Apache daemon binary [/usr/sbin/httpd] ?
OK, using Apache daemon /usr/sbin/httpd ;-)


+----------------------------------------------------------+
| Checking for Apache main configuration file...		  |
+----------------------------------------------------------+

Where is Apache main configuration file [/etc/httpd/conf/httpd.conf] ?
OK, using Apache main configuration file /etc/httpd/conf/httpd.conf ;-)


+----------------------------------------------------------+
| Checking for Apache user account...					 |
+----------------------------------------------------------+

Which user account is running Apache web server [apache] ?
OK, Apache is running under user account apache ;-)


+----------------------------------------------------------+
| Checking for Apache group...							|
+----------------------------------------------------------+

Which user group is running Apache web server [apache] ?
OK, Apache is running under users group apache ;-)


+----------------------------------------------------------+
| Checking for Apache Include configuration directory...   |
+----------------------------------------------------------+

Setup found Apache Include configuration directory in
/etc/httpd/conf.d.
Setup will put OCS Inventory NG Apache configuration in this directory.
Where is Apache Include configuration directory [/etc/httpd/conf.d] ?
OK, Apache Include configuration directory /etc/httpd/conf.d found ;-)


+----------------------------------------------------------+
| Checking for PERL Interpreter...						|
+----------------------------------------------------------+

Found PERL interpreter at </usr/bin/perl> ;-)
Where is PERL interpreter binary [/usr/bin/perl] ?
OK, using PERL interpreter /usr/bin/perl ;-)


Do you wish to setup Communication server on this computer ([y]/n)?y


+----------------------------------------------------------+
|             Checking for Make utility...                 |
+----------------------------------------------------------+

OK, Make utility found at </usr/bin/make> ;-)

+----------------------------------------------------------+
|        Checking for Apache mod_perl version...           |
+----------------------------------------------------------+

Checking for Apache mod_perl version 1.99_22 or higher
Found that mod_perl version 1.99_22 or higher is available.
OK, Apache is using mod_perl version 1.99_22 or higher ;-)

+----------------------------------------------------------+
|    Checking for Communication server log directory...    |
+----------------------------------------------------------+

Communication server can create detailed logs. This logs can be enabled
by setting integer value of LOGLEVEL to 1 in Administration console
menu Configuration.
Where to put Communication server log directory [/var/log/ocsinventory-server] ?
OK, Communication server will put logs into directory /var/log/ocsinventory-server ;-)

+----------------------------------------------------------------------------+
|    Checking for Communication server plugins configuration directory...    |
+----------------------------------------------------------------------------+

Communication server need a directory for plugins configuration files. 
Where to put Communication server plugins configuration files [/etc/ocsinventory-server/plugins] ?
OK, Communication server will put plugins configuration files into directory /etc/ocsinventory-server/plugins ;-)

+-------------------------------------------------------------------+
|   Checking for Communication server plugins perl directory...     |
+-------------------------------------------------------------------+

Communication server need a directory for plugins Perl modules files.
Where to put Communication server plugins Perl modules files [/etc/ocsinventory-server/perl] ?
OK, Communication server will put plugins Perl modules files into directory /etc/ocsinventory-server/perl ;-)


+----------------------------------------------------------+
| Checking for required Perl Modules...					|
+----------------------------------------------------------+

Checking for DBI PERL module...
Found that PERL module DBI is available.
Checking for Apache::DBI PERL module...
Found that PERL module Apache::DBI is available.
Checking for DBD::mysql PERL module...
Found that PERL module DBD::mysql is available.
Checking for Compress::Zlib PERL module...
Found that PERL module Compress::Zlib is available.
Checking for XML::Simple PERL module...
Found that PERL module XML::Simple is available.
Checking for Net::IP PERL module...
Found that PERL module Net::IP is available.
Checking for SOAP::Lite Perl module...
Found that PERL module SOAP::Lite is available.
Checking for Archive::Zip Perl module...
Found that PERL module Archive::Zip is available.

+----------------------------------------------------------+
|         Checking for optional Perl Modules...            |
+----------------------------------------------------------+

Checking for Apache2::SOAP PERL module...
Found that PERL module SOAP::Apache2 is available.
Checking for XML::Entities PERL module...
Found that PERL module XML::Entities is available.


Do you wish to setup Rest API server on this computer ([y]/n)?y

+----------------------------------------------------------+
| Checking for REST API Dependencies ...              		 |
+----------------------------------------------------------+

Found that PERL module Mojolicious::Lite is available.
Found that PERL module Switch is available.
Found that PERL module Plack::Handler is available.

+----------------------------------------------------------+
| Configuring REST API Server files ...               		 |
+----------------------------------------------------------+

Where do you want the API code to be store [/usr/lib64/perl5/vendor_perl] ?
Copying files to /usr/lib64/perl5/vendor_perl

+----------------------------------------------------------+
| Configuring REST API Server configuration files ...  		 |
+----------------------------------------------------------+


+----------------------------------------------------------+
|                 OK, looks good ;-)                       |
|                                                          |
|     Configuring Communication server Perl modules...     |
+----------------------------------------------------------+

Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for Apache::Ocsinventory
Writing MYMETA.yml and MYMETA.json

+----------------------------------------------------------+
|                 OK, looks good ;-)                       |
|                                                          |
|      Preparing Communication server Perl modules...      |
+----------------------------------------------------------+


+----------------------------------------------------------+
|                 OK, prepare finshed ;-)                  |
|                                                          |
|     Installing Communication server Perl modules...      |
+----------------------------------------------------------+


+----------------------------------------------------------+
| OK, Communication server Perl modules install finished;-)|
|                                                          |
|     Creating Communication server log directory...       |
+----------------------------------------------------------+

Creating Communication server log directory /var/log/ocsinventory-server.

Fixing Communication server log directory files permissions.
Configuring logrotate for Communication server.
Removing old communication server logrotate file /etc/logrotate.d/ocsinventory-NG
Writing communication server logrotate to file /etc/logrotate.d/ocsinventory-server


+----------------------------------------------------------------------+
|        OK, Communication server log directory created ;-)            |
|                                                                      |
|   Creating Communication server plugins configuration directory...   |
+----------------------------------------------------------------------+

Creating Communication server plugins configuration directory /etc/ocsinventory-server/plugins.


+----------------------------------------------------------------------+
| OK, Communication server plugins configuration directory created ;-) |
|                                                                      |
|        Creating Communication server plugins Perl directory...       |
+----------------------------------------------------------------------+

Creating Communication server plugins Perl directory /etc/ocsinventory-server/perl.


+----------------------------------------------------------------------+
|     OK, Communication server plugins Perl directory created ;-)      |
|                                                                      |
|               Now configuring Apache web server...                   |
+----------------------------------------------------------------------+

To ensure Apache loads mod_perl before OCS Inventory NG Communication Server,
Setup can name Communication Server Apache configuration file
'z-ocsinventory-server.conf' instead of 'ocsinventory-server.conf'.
Do you allow Setup renaming Communication Server Apache configuration file
to 'z-ocsinventory-server.conf' ([y]/n) ?y
OK, using 'z-ocsinventory-server.conf' as Communication Server Apache configuration file
Removing old communication server configuration to file /etc/httpd/conf.d/ocsinventory.conf
Writing communication server configuration to file /etc/httpd/conf.d/z-ocsinventory-server.conf

+----------------------------------------------------------------------+
|       OK, Communication server setup successfully finished ;-)       |
|                                                                      |
| Please, review /etc/httpd/conf.d/z-ocsinventory-server.conf |
|         to ensure all is good. Then restart Apache daemon.           |
+----------------------------------------------------------------------+


Do you wish to setup Administration Server (Web Administration Console)
on this computer ([y]/n)?y

+----------------------------------------------------------+
|    Checking for Administration Server directories...     |
+----------------------------------------------------------+

CAUTION: Setup now install files in accordance with Filesystem Hierarchy
Standard. So, no file is installed under Apache root document directory
(Refer to Apache configuration files to locate it).
If you're upgrading from OCS Inventory NG Server 1.01 and previous, YOU
MUST REMOVE (or move) directories 'ocsreports' and 'download' from Apache
root document directory.
If you choose to move directory, YOU MUST MOVE 'download' directory to
Administration Server writable/cache directory (by default
/var/lib/ocsinventory-reports), especially if you use deployment feature.

Do you wish to continue ([y]/n)?y
Assuming directories 'ocsreports' and 'download' removed from
Apache root document directory.

Where to copy Administration Server static files for PHP Web Console
[/usr/share/ocsinventory-reports] ?
OK, using directory /usr/share/ocsinventory-reports to install static files ;-)

Where to create writable/cache directories for deployment packages,
administration console logs, IPDiscover and SNMP [/var/lib/ocsinventory-reports] ?
OK, writable/cache directory is /var/lib/ocsinventory-reports ;-)


+----------------------------------------------------------+
|         Checking for required Perl Modules...            |
+----------------------------------------------------------+

Checking for DBI PERL module...
Found that PERL module DBI is available.
Checking for DBD::mysql PERL module...
Found that PERL module DBD::mysql is available.
Checking for XML::Simple PERL module...
Found that PERL module XML::Simple is available.
Checking for Net::IP PERL module...
Found that PERL module Net::IP is available.

+----------------------------------------------------------+
|      Installing files for Administration server...       |
+----------------------------------------------------------+

Creating PHP directory /usr/share/ocsinventory-reports/ocsreports.
Copying PHP files to /usr/share/ocsinventory-reports/ocsreports.
Fixing permissions on directory /usr/share/ocsinventory-reports/ocsreports.
Creating database configuration file /usr/share/ocsinventory-reports/ocsreports/dbconfig.inc.php.
Creating IPDiscover directory /var/lib/ocsinventory-reports/ipd.
Fixing permissions on directory /var/lib/ocsinventory-reports/ipd.
Creating packages directory /var/lib/ocsinventory-reports/download.
Fixing permissions on directory /var/lib/ocsinventory-reports/download.
Creating snmp mibs directory /var/lib/ocsinventory-reports/snmp.
Fixing permissions on directory /var/lib/ocsinventory-reports/snmp.
Creating Administration server log files directory /var/lib/ocsinventory-reports/logs.
Fixing permissions on directory /var/lib/ocsinventory-reports/logs.
Creating Administration server scripts log files directory /var/lib/ocsinventory-reports/scripts.
Fixing permissions on directory /var/lib/ocsinventory-reports/scripts.
Configuring IPDISCOVER-UTIL Perl script.
Installing IPDISCOVER-UTIL Perl script.
Fixing permissions on IPDISCOVER-UTIL Perl script.
Writing Administration server configuration to file /etc/httpd/conf.d/ocsinventory-reports.conf

+----------------------------------------------------------------------+
|        OK, Administration server installation finished ;-)           |
|                                                                      |
| Please, review /etc/httpd/conf.d/ocsinventory-reports.conf
|          to ensure all is good and restart Apache daemon.            |
|                                                                      |
| Then, point your browser to http://server//ocsreports
|        to configure database server and create/update schema.        |
+----------------------------------------------------------------------+


Setup has created a log file /root/OCSNG_UNIX_SERVER_2.6/ocs_server_setup.log. Please, save this file.
If you encounter error while running OCS Inventory NG Management server,
we can ask you to show us its content !

DON'T FORGET TO RESTART APACHE DAEMON !

Enjoy OCS Inventory NG ;-)

Once the installation is done, you can check the installation log file for any issues. The log file is available under;

$HOME/OCSNG_UNIX_SERVER_2.6/ocs_server_setup.log

Configure OCS Web Server

Next, you need to configure database connection settings on the OCS web server configuration files.

vim /etc/httpd/conf.d/z-ocsinventory-server.conf
...
  # Master Database settings
  # Replace localhost by hostname or ip of MySQL server for WRITE
  PerlSetEnv OCS_DB_HOST localhost
  # Replace 3306 by port where running MySQL server, generally 3306
  PerlSetEnv OCS_DB_PORT 3306
  # Name of database
  PerlSetEnv OCS_DB_NAME ocsweb
  PerlSetEnv OCS_DB_LOCAL ocsweb
  # User allowed to connect to database
  PerlSetEnv OCS_DB_USER ocs
  # Password for user
  PerlSetVar OCS_DB_PWD P@SSWoRD
...
vim /etc/httpd/conf.d/zz-ocsinventory-restapi.conf
...
<Perl>
  $ENV{PLACK_ENV} = 'production';
  $ENV{MOJO_HOME} = '/usr/share/perl5/vendor_perl';
  $ENV{MOJO_MODE} = 'deployment';
  $ENV{OCS_DB_HOST} = 'localhost';
  $ENV{OCS_DB_PORT} = '3306';
  $ENV{OCS_DB_LOCAL} = 'ocsweb';
  $ENV{OCS_DB_USER} = 'ocs';
  $ENV{OCS_DB_PWD} = 'P@SSWoRD';
</Perl>
...

Similarly, open the /usr/share/ocsinventory-reports/ocsreports/dbconfig.inc.php configuration file and update OCS Inventory database password.

vim /usr/share/ocsinventory-reports/ocsreports/dbconfig.inc.php
...
define("DB_NAME", "ocsweb");
define("SERVER_READ", "localhost");
define("SERVER_WRITE", "localhost");
define("COMPTE_BASE", "ocs");
define("PSWD_BASE", "P@SSWoRD");
?>

Set the proper permissions and ownership of OCS Web Server configuration files.

chmod -R 766 /usr/share/ocsinventory-reports
chown -R apache:apache /usr/share/ocsinventory-reports/
chown -R apache:apache /var/lib/ocsinventory-reports/

Configure SELinux to enable OCS-NG to be accessible from Internet.

chcon -R -t httpd_sys_rw_content_t /usr/share/ocsinventory-reports/

Restart Apache, MariaDB and PHP-FPM services.

systemctl restart httpd mariadb.service php72-php-fpm.service

Finalize the OCS inventory setup by navigating to http://server-hostname-or-IP/ocsreports.

Configure OCS Inventory database connections and click Send.

Install OCS Inventory NG on Fedora 30/Fedora 29

If the provided database credentials are okay, the install will be successful.

OCS-NG Inventory Installation

To enter the OCS inventory gui, click Click here to enter OCS-NG GUI. Click Perform the update to update the database.

Update OCS-NG database connection

Before you can login to OCS inventory, backup or remove the OCS-NG installation file from the server.

mv /usr/share/ocsinventory-reports/ocsreports/install.php /usr/share/ocsinventory-reports/ocsreports/install.php.original

Next, click Click here to enter OCS-NG GUI to get to the OCS inventory login interface.

OCS-NG login interface

Use the credentials admin for password and username.

OCS-NG dashboard

Once you login, be sure to rename the password by clicking the Settings gear > My account > Password. 

That is just about it on installing OCS-NG Inventory on Fedora 30/Fedora 29. In our next guides, we will learn how to install OCS-NG inventory agent.

Reference:

OCS-NG Inventory Documentation

Related Tutorials

Install Snipe-IT on Debian 10/Ubuntu 18.04

Install LAMP Stack on Fedora 30

Install LAMP Stack on Fedora 28/29

SUPPORT US VIA A VIRTUAL CUP OF COFFEE

We're passionate about sharing our knowledge and experiences with you through our blog. If you appreciate our efforts, consider buying us a virtual coffee. Your support keeps us motivated and enables us to continually improve, ensuring that we can provide you with the best content possible. Thank you for being a coffee-fueled champion of our work!

Photo of author
koromicha
I am the Co-founder of Kifarunix.com, Linux and the whole FOSS enthusiast, Linux System Admin and a Blue Teamer who loves to share technological tips and hacks with others as a way of sharing knowledge as: "In vain have you acquired knowledge if you have not imparted it to others".

3 thoughts on “Install OCS-NG Inventory on Fedora 30/Fedora 29”

  1. Good installation guide, there were no problems with dependencies etc. Anyway, I’m not sure if the ipdiscover & snmp works. Do you know if there’s some extra configuration needed? I have not been able to get it working with my setup.

    There’s this kind of message in network -> ipdiscover -> all networks -> click inventoried pc count:

    ipdiscover-util.pl can’t be launched, you must set execution rights

    Reply

Leave a Comment