(Last Updated On: February 4, 2019)

OCS – Open Computers and Software Inventory Next Generation is an assets management and deployment solution. It is designed to help you manage your IT assets in a simpler and organized manner.

Related: How to Install GLPI on Ubuntu 18.04 LTS

OCS Inventory NG asks its agents to know the software and hardware composition of every computer or server.  It can also discover network’s elements which can’t receive an agent using IP discovery. It then uses SNMP to complete the data retrieved from the IP Discover scan. This is useful for devices like printers, scanner, routers e.t.c.

Installing OCS Inventory Server on Ubuntu 18.04

Below are the software requirements for installing  OCS Inventory Server on Ubuntu 18.04:

  • MySQL Server – version 4.1 or higher
  • Perl
  • Apache Web server
  • Apache Mod_perl
  • PHP with ZIP support enabled.
  • Apache Mod_php
  • Perl module XML::Simple
  • Perl module Compress::Zlib
  • Perl module DBI
  • Perl module DBD::Mysql
  • Perl module Apache::DBI
  • Perl module Net::IP
  • Perl module Archive::Zip
  • Perl module Apache2:SOAP
  • Perl module SOAP::Lite
  • Perl module XML::Entities

So let’s begin by installing these dependencies.

Step 1: Install MySQL Server, make and gcc

Instead of installing MySQL server, I prefer to install MariaDB. For installation of MariaDB on Ubuntu 18.04, refer to our guide how to Install MariaDB 10.3 on Ubuntu 18.04 and CentOS 7.

To install make and gcc, run:

sudo apt-get update
sudo apt-get install make cmake gcc make

Step 2: Install Apache Web server

To install Apache and required modules on Ubuntu 18.04, run the following commands:

sudo apt -y install libapache2-mod-perl2 libapache-dbi-perl libapache-db-perl libapache2-mod-php 

Step 3: Install PHP and php-zip module

We also need to install php and php-zip module. On Ubuntu 18.04, the default version of PHP is 7.2.

sudo apt -y install php php-zip php-pclzip php-gd php-soap php-curl php-json

Step 4: Install Perl and all required modules

Perl and all its modules can be installed by running the commands below:

sudo apt -y install perl libxml-simple-perl libcompress-zlib-perl libdbi-perl libdbd-mysql-perl libnet-ip-perl libsoap-lite-perl libio-compress-perl libapache-dbi-perl  libapache2-mod-perl2 libapache2-mod-perl2-dev

sudo perl -MCPAN -e 'install Apache2::SOAP'
sudo perl -MCPAN -e 'install XML::Entities'
sudo perl -MCPAN -e 'install Net::IP'
sudo perl -MCPAN -e 'install Apache::DBI'
sudo perl -MCPAN -e 'install Mojolicious'
sudo perl -MCPAN -e 'install Switch'
sudo perl -MCPAN -e 'install Plack::Handler'
sudo perl -MCPAN -e 'install Archive::Zip'

Step 5: Create OCS Inventory database

Login to your MariaDB database as root user and create a database for OCS:

$ mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 19258
Server version: 10.3.7-MariaDB-1:10.3.7+maria~bionic-log mariadb.org binary distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE ocs;
Query OK, 1 row affected (0.001 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON ocs.* TO ocs_user IDENTIFIED BY "strongpassword";
Query OK, 0 rows affected (0.000 sec)
Query OK, 0 rows affected (0.001 sec)

Step 6: Install OCS Inventory Server

Clone the project from Github:

~# git clone https://github.com/OCSInventory-NG/OCSInventory-Server.git
Cloning into 'OCSInventory-Server'…
remote: Enumerating objects: 7473, done.
remote: Total 7473 (delta 0), reused 0 (delta 0), pack-reused 7473
Receiving objects: 100% (7473/7473), 52.59 MiB | 1.23 MiB/s, done.
Resolving deltas: 100% (5309/5309), done.

Change to clone directory.

# cd OCSInventory-Server/
# git clone https://github.com/OCSInventory-NG/OCSInventory-ocsreports.git ocsreports
Cloning into 'ocsreports'…
remote: Enumerating objects: 29, done.
remote: Counting objects: 100% (29/29), done.
remote: Compressing objects: 100% (20/20), done.
remote: Total 28646 (delta 9), reused 22 (delta 9), pack-reused 28617
Receiving objects: 100% (28646/28646), 81.96 MiB | 1.06 MiB/s, done.
Resolving deltas: 100% (18118/18118), done.

Edit setup.sh script to change MySQL credentials:


If you’re using a remote database server, change DB_SERVER_HOST to it. Feel free to modify other changes to your liking and start the installation process my running the script.

# ./setup.sh
| |
| 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

Which host is running database server [localhost] ? <Enter>
On which port is running database server [3306] ?

Agree to all options to complete setup. Ensure all Perl checks are successful.

| 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 … |

If the installation was successful, you should get a message:

| 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/apache2/conf-available/ocsinventory-reports.conf
| OK, Administration server installation finished 😉 |
| |
| Please, review /etc/apache2/conf-available/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/OCSInventory-Server/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 !
Enjoy OCS Inventory NG 😉

Step 7: Configure  OCS Inventory server

When OCS is installed, it generates Apache configuration file for you. You need to enable this by creating alias:

sudo ln -s /etc/apache2/conf-available/ocsinventory-reports.conf /etc/apache2/conf-enabled/ocsinventory-reports.conf
sudo ln -s /etc/apache2/conf-available/z-ocsinventory-server.conf /etc/apache2/conf-enabled/z-ocsinventory-server.conf

If you need REST API, also add:

sudo ln -s /etc/apache2/conf-available/zz-ocsinventory-restapi.conf /etc/apache2/conf-enabled/zz-ocsinventory-restapi.conf

Restart the Apache server

sudo chown -R www-data:www-data /var/lib/ocsinventory-reports
sudo systemctl restart apache2

Edit /usr/share/ocsinventory-reports/ocsreports/dbconfig.inc.php and add the name and password for the user created for MySQL. If you had modified setup.sh with correct credentials, they will appear.

Open the following URL in your browser, check the information and click Send


Provide database credentials as created earlier and click Send.

Click the “Clikc here to enter OCS-NG GUI” link to get dashboard.

Confirm the “Perform the update” message.

For security reasons, move the following to some web-inaccessible location

sudo mv /usr/share/ocsinventory-reports/ocsreports/install.php \

To make administrative TAGs updateable by the client edit /etc/apache2/conf.d/z-ocsinventory-server.conf and alter the following directive from 0 to 1


Step 8: Accessing Web interface

After a successful installation, access Web dashboard.


The default login credentials are:

Username: admin
Password: admin

Change admin password by navigating to settings > My account > Password. 

Provide the new password and click on the OK button. From here you can explore OCS Inventory and start feeding data to it.