This guide will walk you through the steps to install i-doit Professional IT documentation and CMDB system on Ubuntu 22.04|20.04|18.04. i-doit offers you a professional IT-documentation solution based on ITIL guidelines. With this tool, you can easily document entire IT systems and their changes, define emergency plans, display vital information and ensure stable and efficient operation of IT networks.
Its technical IT-documentation enables you to create a detailed overview of the entire IT-infrastructure for all kinds of assets from the spatial situation, including graphical rack views, servers, and appliances to complex systems such as clusters, SAN, virtualization or blade/chassis systems.
i-doit system requirements
Below are the Minimum Requirements for installing i-doit Open Source CMDB on Ubuntu22.04|20.04|18.04 system.
- 2 vCPUs
- 2 GB RAM
- 10 GB free disc space
We will do our installation on a dedicated Virtual Machine. On the software end, LAMP Stack is required. This LAMP stack comprises of the following packages.
- Apache Web server 2.4
- MariaDB 10.x or MySQL 5.6, 5.7+
- PHP 5.6 (deprecated), 7.x
- PHP extensions: bcmath, ctype, curl, fileinfo, gd, imagick, json, ldap, mbstring, memcached, mysqli, mysqlnd, pgsql, session, soap, xml, zip
The next steps will cover the complete procedure of installing i-doit Open Source CMDB on Ubuntu 22.04|20.04|18.04.
Step 1: Install Apache and PHP
Install Apache web server and required PHP extensions.
sudo apt update
sudo apt -y install apache2 libapache2-mod-php
sudo apt -y install php-{bcmath,cli,common,curl,gd,json,ldap,mbstring,mysql,pgsql,soap,xml,zip,imagick,memcached}
sudo apt -y install memcached unzip moreutils
Create new PHP configuration file for i-doit.
Ubuntu 22.04:
sudo tee /etc/php/8.1/mods-available/i-doit.ini<<EOF
allow_url_fopen = Yes
file_uploads = On
magic_quotes_gpc = Off
max_execution_time = 300
max_file_uploads = 42
max_input_time = 60
max_input_vars = 10000
memory_limit = 256M
post_max_size = 128M
register_argc_argv = On
register_globals = Off
short_open_tag = On
upload_max_filesize = 128M
display_errors = Off
display_startup_errors = Off
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
log_errors = On
default_charset = "UTF-8"
default_socket_timeout = 60
date.timezone = Africa/Nairobi
session.gc_maxlifetime = 604800
session.cookie_lifetime = 0
mysqli.default_socket = /var/run/mysqld/mysqld.sock
EOF
Ubuntu 20.04:
sudo tee /etc/php/7.4/mods-available/i-doit.ini<<EOF
allow_url_fopen = Yes
file_uploads = On
magic_quotes_gpc = Off
max_execution_time = 300
max_file_uploads = 42
max_input_time = 60
max_input_vars = 10000
memory_limit = 256M
post_max_size = 128M
register_argc_argv = On
register_globals = Off
short_open_tag = On
upload_max_filesize = 128M
display_errors = Off
display_startup_errors = Off
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
log_errors = On
default_charset = "UTF-8"
default_socket_timeout = 60
date.timezone = Africa/Nairobi
session.gc_maxlifetime = 604800
session.cookie_lifetime = 0
mysqli.default_socket = /var/run/mysqld/mysqld.sock
EOF
Ubuntu 18.04:
sudo tee /etc/php/7.2/mods-available/i-doit.ini<<EOF
allow_url_fopen = Yes
file_uploads = On
magic_quotes_gpc = Off
max_execution_time = 300
max_file_uploads = 42
max_input_time = 60
max_input_vars = 10000
memory_limit = 256M
post_max_size = 128M
register_argc_argv = On
register_globals = Off
short_open_tag = On
upload_max_filesize = 128M
display_errors = Off
display_startup_errors = Off
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
log_errors = On
default_charset = "UTF-8"
default_socket_timeout = 60
date.timezone = Africa/Nairobi
session.gc_maxlifetime = 604800
session.cookie_lifetime = 0
mysqli.default_socket = /var/run/mysqld/mysqld.sock
EOF
The value (in seconds) of session.gc_maxlifetime
should be the same or greater than the Session Timeout
in the system settings of i-doit.
The date.timezone
parameter should be adjusted to the local time zone (see List of supported time zones).
Afterwards, the required PHP modules are activated and the Apache web server is restarted:
sudo phpenmod i-doit
sudo phpenmod memcached
sudo systemctl restart apache2.service
Step 2: Install MariaDB Database Server
A database server is an essential dependency. Use our guide below to install and configure MariaDB on Ubuntu22.04|20.04|18.04.
sudo apt install unzip mariadb-server
Tune your MariaDB server for optimal performance.
sudo tee /etc/mysql/mariadb.conf.d/99-i-doit.cnf<<EOF
[mysqld]
# This is the number 1 setting to look at for any performance optimization
# It is where the data and indexes are cached: having it as large as possible will
# ensure MySQL uses memory and not disks for most read operations.
#
# Typical values are 1G (1-2GB RAM), 5-6G (8GB RAM), 20-25G (32GB RAM), 100-120G (128GB RAM).
innodb_buffer_pool_size = 1G
# Use multiple instances if you have innodb_buffer_pool_size > 10G, 1 every 4GB
innodb_buffer_pool_instances = 1
# Redo log file size, the higher the better.
# MySQL/MariaDB writes two of these log files in a default installation.
innodb_log_file_size = 512M
innodb_sort_buffer_size = 64M
sort_buffer_size = 262144 # default
join_buffer_size = 262144 # default
max_allowed_packet = 128M
max_heap_table_size = 32M
query_cache_min_res_unit = 4096
query_cache_type = 1
query_cache_limit = 5M
query_cache_size = 80M
tmp_table_size = 32M
max_connections = 200
innodb_file_per_table = 1
# Disable this (= 0) if you have only one to two CPU cores, change it to 4 for a quad core.
innodb_thread_concurrency = 0
# Disable this (= 0) if you have slow harddisks
innodb_flush_log_at_trx_commit = 1
innodb_flush_method = O_DIRECT
innodb_lru_scan_depth = 2048
table_definition_cache = 1024
table_open_cache = 2048
# Only if your have MySQL 5.6 or higher, do not use with MariaDB!
#table_open_cache_instances = 4
innodb_stats_on_metadata = 0
sql-mode = ""
EOF
When done, restart mariadb service.
sudo systemctl restart mariadb
Confirm the DB service is in a running state:
$ systemctl status mariadb
● mariadb.service - MariaDB 10.6.12 database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2023-08-16 22:31:41 UTC; 4s ago
Docs: man:mariadbd(8)
https://mariadb.com/kb/en/library/systemd/
Process: 27191 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS)
Process: 27192 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Process: 27194 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_PO>
Process: 27305 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Process: 27307 ExecStartPost=/etc/mysql/debian-start (code=exited, status=0/SUCCESS)
Main PID: 27292 (mariadbd)
Status: "Taking your SQL requests now..."
Tasks: 14 (limit: 4523)
Memory: 110.0M
CPU: 598ms
CGroup: /system.slice/mariadb.service
└─27292 /usr/sbin/mariadbd
Aug 16 22:31:40 jammy mariadbd[27292]: 2023-08-16 22:31:40 0 [Warning] 'innodb-thread-concurrency' was removed. It does nothing now and exists only for compatibility with old my.cnf files.
Aug 16 22:31:40 jammy mariadbd[27292]: 2023-08-16 22:31:40 0 [Warning] You need to use --log-bin to make --expire-logs-days or --binlog-expire-logs-seconds work.
Aug 16 22:31:40 jammy mariadbd[27292]: 2023-08-16 22:31:40 0 [Note] InnoDB: Buffer pool(s) load completed at 230816 22:31:40
Aug 16 22:31:40 jammy mariadbd[27292]: 2023-08-16 22:31:40 0 [Note] Server socket created on IP: '127.0.0.1'.
Aug 16 22:31:40 jammy mariadbd[27292]: 2023-08-16 22:31:40 0 [Note] /usr/sbin/mariadbd: ready for connections.
Aug 16 22:31:40 jammy mariadbd[27292]: Version: '10.6.12-MariaDB-0ubuntu0.22.04.1' socket: '/run/mysqld/mysqld.sock' port: 3306 Ubuntu 22.04
Aug 16 22:31:41 jammy systemd[1]: Started MariaDB 10.6.12 database server.
Aug 16 22:31:41 jammy /etc/mysql/debian-start[27309]: Upgrading MySQL tables if necessary.
Aug 16 22:31:41 jammy /etc/mysql/debian-start[27320]: Checking for insecure root accounts.
Aug 16 22:31:41 jammy /etc/mysql/debian-start[27324]: Triggering myisam-recover for all MyISAM tables and aria-recover for all Aria tables
Step 3: Download i-doit on Ubuntu
We need to download and extract the open source version of i-doit.
export LATEST="25"
wget https://liquidtelecom.dl.sourceforge.net/project/i-doit/i-doit/${LATEST}/idoit-open-${LATEST}.zip
sudo unzip idoit-open-$LATEST.zip -d /var/www/html/i-doit
Set permissions for the created directory to apache user.
cd /var/www/html/i-doit
sudo chown www-data:www-data -R .
sudo find . -type d -name \* -exec chmod 775 {} \;
sudo find . -type f -exec chmod 664 {} \;
sudo chmod 774 controller *.sh setup/*.sh
Create Apache configuration file for i-doit.
$ sudo vim /etc/apache2/sites-available/i-doit.conf
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName idoit.example.com
DirectoryIndex index.php
DocumentRoot /var/www/html/
<Directory /var/www/html/>
AllowOverride All
Require all granted
</Directory>
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Enable site and rewrite module.
sudo chown www-data:www-data -R /var/www/html/
sudo chmod 755 /var/log/apache2
sudo chmod -R 664 /var/log/apache2/*
sudo a2ensite i-doit
sudo a2enmod rewrite
sudo systemctl restart apache2.service
Step 4: Run i-doit Setup on Ubuntu
We are close to the end of our setup. Launch the Web GUI setup by opening server URL, example, http://idoit.example.com/i-doit/.
All system checks should show a pass.
Directory Configuration
Here the paths are requested where the installation files or user specific files are going to be stored. You can accept the suggested options.
Database Configuration
Important credentials and settings need to be entered for the database connection. At least two databases and one special user are created for i-doit.
- Connection settings
Host
: Generally the host itself, solocalhost
or 127.0.0.1Port
: Generally the default port of MySQL/MariaDB, so3306
Username
: User name of the database system user, usuallyroot
Password
: Password of the user
- MySQL user settings
Username
: User name of the i-doit databases owner, usuallyidoit
Password
: Password of the user
- Database settings
System Database Name
: Name of the system database, usuallyidoit_system
Mandator Database Name
: Name of the database for the first tenant, usuallyidoit_data
Mandator title
: Title of the tenant, usually the name of the organization that is focused onStart value for object/configuration item IDs
: Normally1
Framework Configuration
There are separate credentials in i-doit to access the i-doit Admin Center
. They can be specified here and we recommend using this option.
Config Check
In this step, all prior steps are reviewed and checked to see if the setup can take place.
Installation
The installation of i-doit on the system is carried out in this step.
Login as user admin and password admin set.
You now have i-doit Open Source CMDB installed on Ubuntu22.04|20.04|18.04.
Further steps
Refer to i-doit Documentation for advanced configurations and usage.
Similar guides:
- Install Ralph CMDB / Asset Management system on Ubuntu
- How to Install GLPI on Ubuntu
- How to Install OCS Inventory Server on Ubuntu