Ubuntu

Install i-doit CMDB Asset Management on Ubuntu 26.04/24.04

Spreadsheets stop working as an IT inventory somewhere around the third rack. i-doit is the tool most teams reach for at that point: an open source CMDB and IT documentation system that tracks servers, VMs, racks, licenses, cabling, and the relationships between them, following ITIL practice. The Open edition is free, self-hosted, and runs on a plain LAMP stack.

Original content from computingforgeeks.com - post 18836

This guide covers everything needed to install i-doit on Ubuntu: Apache with PHP-FPM, a tuned MariaDB, Let’s Encrypt HTTPS, the web setup wizard, and the console installer for anyone scripting the deployment. If you are still comparing tools, we have separate guides for Snipe-IT, GLPI, and the Ralph CMDB. The stack, the setup wizard, and the console install were run end to end in August 2026 on Ubuntu 24.04 (PHP 8.3, MariaDB 10.11) and again on Ubuntu 26.04 (PHP 8.5, MariaDB 11.8), against i-doit Open 38; our lab sat on a private LAN, so its certificate came through the DNS-01 path described below.

What i-doit expects from the host

The current i-doit release is strict about its stack, and the two Ubuntu LTS releases land on different sides of that line. This matters before you type a single command:

ComponentSupported by i-doitUbuntu 24.04 shipsUbuntu 26.04 ships
PHP8.2 (deprecated), 8.3, 8.4 (recommended)8.3 (supported)8.5 (above the supported range)
MariaDB10.6, 10.11 (recommended), 11.4, 11.810.11 (recommended)11.8 (supported)
Web serverApache 2.4Apache 2.4Apache 2.4

Ubuntu 24.04 is the clean match, and it is the release this guide leads with. Ubuntu 26.04 works, but its PHP is newer than what i-doit officially supports, and the installer says so out loud. The Ubuntu 26.04 section further down covers the exact differences we hit. The full matrix lives in the official i-doit system requirements.

On hardware, the vendor minimum is 2 vCPUs, 2 GB RAM, and 10 GB disk for roughly 10,000 objects and 10 concurrent users, with 8 GB RAM and 50 GB disk as the reference configuration. RAM is the real driver: MariaDB’s InnoDB buffer pool should hold your working set, so a large CMDB with heavy reporting wants the reference spec or better. Our test VM ran 2 vCPUs and 4 GB RAM, which is a floor for following along, not a production recommendation.

Install Apache, PHP, and MariaDB

One apt line covers the whole stack. i-doit’s own install documentation moved from mod_php to PHP-FPM behind Apache’s fcgid module, so that is what we install here. On Ubuntu 24.04:

sudo apt update
sudo apt install -y apache2 libapache2-mod-fcgid mariadb-server mariadb-client \
  memcached unzip moreutils php-bcmath php-cli php-common php-curl php-fpm \
  php-gd php-imagick php-ldap php-mbstring php-memcached php-mysql \
  php-opcache php-pgsql php-soap php-xml php-zip

On Ubuntu 26.04, drop php-opcache from that line. The meta package no longer exists there because OPcache is compiled into the base PHP packages, and apt aborts the whole install if you keep it. Everything else is identical.

Confirm the PHP and MariaDB versions apt resolved:

php -v | head -1
mariadb --version

On 24.04 you get the combination i-doit recommends:

PHP 8.3.6 (cli) (built: Jul 16 2026 18:30:41) (NTS)
mariadb  Ver 15.1 Distrib 10.11.14-MariaDB, for debian-linux-gnu (x86_64)

Configure PHP for i-doit

i-doit needs a handful of PHP settings raised above their defaults, mainly upload sizes, execution time, and max_input_vars, which the setup wizard checks explicitly. Ubuntu’s PHP packaging has a clean mechanism for this: drop a file in mods-available and enable it for every SAPI at once. Create the file:

sudo vim /etc/php/8.3/mods-available/i-doit.ini

Paste the following, adjusting date.timezone to your own zone:

allow_url_fopen = Yes
file_uploads = On
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
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

On 26.04 the path is /etc/php/8.5/mods-available/i-doit.ini, same content. Enable the config together with the memcached module, then restart PHP-FPM:

sudo phpenmod i-doit memcached
sudo systemctl restart php8.3-fpm

The FPM unit is versioned (php8.5-fpm on 26.04), which catches people out because the CLI binary and the socket symlink are not. We use the versionless /run/php/php-fpm.sock in the Apache config later precisely so the vhost survives a PHP upgrade.

Tune MariaDB and set a root password

i-doit is database-heavy, and the vendor ships a recommended InnoDB profile. Create a dedicated config so it overrides the distro defaults cleanly:

sudo vim /etc/mysql/mariadb.conf.d/99-i-doit.cnf

Add the tuning block. The buffer pool line is the one worth thinking about: 1G is safe on a 4 GB host, and the vendor’s own examples scale it to 5-6G on an 8 GB host and 20-25G on 32 GB:

[mysqld]
innodb_buffer_pool_size = 1G
innodb_log_file_size = 512M
innodb_sort_buffer_size = 64M
sort_buffer_size = 262144
join_buffer_size = 262144
max_allowed_packet = 128M
max_heap_table_size = 32M
tmp_table_size = 32M
max_connections = 200
innodb_file_per_table = 1
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
innodb_stats_on_metadata = 0
sql-mode = ""

Restart MariaDB and check it came back clean:

sudo systemctl restart mariadb
systemctl is-active mariadb

Now the step the old LAMP tutorials skip. Ubuntu’s MariaDB authenticates root through unix_socket, with no password at all. That works fine on the shell, but the i-doit setup wizard connects over TCP as the database root user, and a socket-only root cannot log in that way. Give root a real password before you open the wizard:

sudo mariadb -e "ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('StrongDBPass2026'); FLUSH PRIVILEGES;"

Pick your own password, obviously. Verify password login works before moving on:

mariadb -u root -p -e "SELECT VERSION();"

The version string confirms authentication now works over a normal client connection:

VERSION()
10.11.14-MariaDB-0ubuntu0.24.04.1

Download and extract i-doit

The Open edition is distributed through SourceForge, linked from i-doit.org. SourceForge exposes the newest release through its JSON API, so the download can detect the current version at runtime instead of hardcoding one:

IDOIT_VER=$(curl -s https://sourceforge.net/projects/i-doit/best_release.json | grep -oE "i-doit/[0-9]+/" | head -1 | tr -d "a-z/-")
echo "${IDOIT_VER}"

The echo prints a bare release number:

38

Download the archive and unpack it into the web root:

curl -sL -o idoit-open-${IDOIT_VER}.zip "https://sourceforge.net/projects/i-doit/files/i-doit/${IDOIT_VER}/idoit-open-${IDOIT_VER}.zip/download"
sudo mkdir -p /var/www/html/i-doit
sudo unzip -q idoit-open-${IDOIT_VER}.zip -d /var/www/html/i-doit

Error: “End-of-central-directory signature not found”

This unzip error means the file you downloaded is not a zip archive but SourceForge’s mirror-selection HTML page. It happens when the download command does not follow redirects, and plain wget on the raw project URL produced exactly this during our testing. The fix is the URL form ending in /download together with curl -L, as shown above. A quick file idoit-open-38.zip should report “Zip archive data” before you extract.

Hand the tree to the web server user and set the permissions the vendor documents:

cd /var/www/html/i-doit
sudo chown -R www-data:www-data .
sudo find . -type d -exec chmod 775 {} \;
sudo find . -type f -exec chmod 664 {} \;
sudo chmod 774 console.php *.sh setup/*.sh

Create the Apache virtual host

The vhost points at the i-doit directory, allows the shipped .htaccess rewrite rules, and hands PHP files to FPM over the versionless socket:

sudo vim /etc/apache2/sites-available/i-doit.conf

Use your real domain in place of the example:

<VirtualHost *:80>
    ServerName idoit.example.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/i-doit

    <Directory /var/www/html/i-doit>
        AllowOverride All
        Require all granted
    </Directory>

    <FilesMatch "\.php$">
        SetHandler "proxy:unix:/run/php/php-fpm.sock|fcgi://localhost"
    </FilesMatch>

    ErrorLog ${APACHE_LOG_DIR}/i-doit_error.log
    CustomLog ${APACHE_LOG_DIR}/i-doit_access.log combined
</VirtualHost>

Swap the default site for this one, enable the modules FPM and the rewrite rules need, and restart:

sudo a2dissite 000-default
sudo a2ensite i-doit
sudo a2enmod rewrite proxy_fcgi setenvif
sudo apache2ctl configtest
sudo systemctl restart apache2

If UFW is active on the host, open the web ports as well with sudo ufw allow 80,443/tcp. This stack is the same one our LAMP setup guide builds in more depth, if you want the background on any piece of it.

Add HTTPS with Let’s Encrypt

A CMDB holds your infrastructure’s crown jewels, so it does not run over plain HTTP. With an A record pointing at the server and port 80 reachable, any DNS provider works for the standard HTTP-01 challenge:

sudo apt install -y certbot python3-certbot-apache
sudo certbot certonly --apache -d idoit.example.com --non-interactive --agree-tos -m [email protected]

Then replace the vhost with an SSL pair: the 443 site serving i-doit, and the port 80 site reduced to a redirect. Edit the same file:

sudo vim /etc/apache2/sites-available/i-doit.conf

This is the exact configuration our test instance served the wizard and every screenshot below through:

<VirtualHost *:443>
    ServerName idoit.example.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/i-doit

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/idoit.example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/idoit.example.com/privkey.pem

    <Directory /var/www/html/i-doit>
        AllowOverride All
        Require all granted
    </Directory>

    <FilesMatch "\.php$">
        SetHandler "proxy:unix:/run/php/php-fpm.sock|fcgi://localhost"
    </FilesMatch>

    ErrorLog ${APACHE_LOG_DIR}/i-doit_error.log
    CustomLog ${APACHE_LOG_DIR}/i-doit_access.log combined
</VirtualHost>
<VirtualHost *:80>
    ServerName idoit.example.com
    Redirect permanent / https://idoit.example.com/
</VirtualHost>

Enable SSL and reload:

sudo a2enmod ssl
sudo apache2ctl configtest
sudo systemctl restart apache2

Renewal is automatic through the systemd timer certbot installs; sudo certbot renew --dry-run confirms it.

Server on a private network? Use the DNS-01 challenge

HTTP-01 requires Let’s Encrypt to reach port 80 from the internet. For a CMDB on an internal LAN (which is where ours ran, and honestly where most belong), issue the certificate through DNS instead. Install your DNS provider’s certbot plugin, e.g. python3-certbot-dns-cloudflare, python3-certbot-dns-route53, python3-certbot-dns-digitalocean, or the RFC2136 plugin for self-hosted BIND, then run certbot certonly --dns-<provider> with an API credentials file. The validation happens through a DNS TXT record, so the server never needs an inbound port. The rest of the vhost setup is identical.

Run the i-doit setup wizard

Open https://idoit.example.com/ and the installer takes over. The first page is a system check that validates PHP, every required extension, the ini settings from earlier, and mod_rewrite. With the config above, everything shows OK. You will see one orange note on Ubuntu 24.04: i-doit prefers PHP 8.4 and says so, but 8.3 is fully supported and the check passes.

i-doit setup wizard system check on Ubuntu

Step 2 asks where uploaded files and object images should live; the suggested paths inside the install directory are fine. Step 3 is the database configuration, and it is the page where the root password from earlier gets used:

i-doit setup database configuration on Ubuntu

The wizard uses the root connection once, to create two databases and a dedicated idoit database user that the application runs as afterwards:

FieldWhat to enter
Host / Port127.0.0.1 and 3306, the defaults
Username (root) / Passwordroot and the password you set with ALTER USER
MySQL user settingsidoit plus a new password; the wizard creates this user
System Database Nameidoit_system, framework-internal data
Mandator Database Nameidoit_data, your actual CMDB objects
Mandator titleYour organization name, shown in the top bar

Step 4 sets credentials for the Admin Center, a separate maintenance interface for tenants, licenses, and updates. Set a password here rather than leaving it blank. Step 5 re-checks everything, and step 6 performs the installation. Each task should report OK:

i-doit installation complete on Ubuntu

The final task spells out the initial credentials: username admin, password admin. Click Next and the login screen confirms the installed release in its corner:

i-doit 38 OPEN login page over HTTPS

First login and your first objects

Log in as admin/admin and change that password immediately in the user menu; every scanner on the internet knows i-doit’s default. The landing dashboard shows a news feed, your recent changes, and the full object-type tree down the left side. To document a machine, go to Infrastructure, pick the Server object type, hit New, give it a title, and Save. We added three this way (web01, db01, k8s-node01) and they show up in the tree counts and the last-changed widget right away:

i-doit CMDB dashboard with server objects

Every object gets an overview page plus dozens of attribute categories: CPU, drives, host addresses, contracts, backup assignments, cabling. This per-object depth is what separates a CMDB from an asset spreadsheet, and it pairs naturally with a dedicated IPAM like NetBox for the network side:

i-doit server object overview page

A quick terminal pass confirms the whole stack is healthy, and the console utility reports the installed release:

i-doit 38 stack versions on Ubuntu 24.04 terminal

What changes on Ubuntu 26.04

We ran the identical procedure on Ubuntu 26.04 to map the differences. There are three, and only one requires a decision.

Error: “Package ‘php-opcache’ has no installation candidate”

Ubuntu 26.04 dropped the php-opcache meta package because OPcache now ships inside the base PHP packages. Remove it from the apt install line and continue; php -m still lists Zend OPcache afterwards, so nothing is actually missing.

PHP 8.5 is newer than i-doit officially supports

Ubuntu 26.04 ships PHP 8.5, above the current i-doit maximum of 8.4.99. The setup’s system check flags it in plain words: “You are about to install i-doit with a PHP version that is currently not officially supported.” It warns rather than blocks. We completed a full installation on PHP 8.5.4 and the application ran normally in our testing, but an unsupported interpreter is a risk you carry into every future i-doit update. For a production CMDB, either run it on Ubuntu 24.04’s PHP 8.3 or wait until the requirements page lists 8.5.

The third difference is cosmetic by comparison: 26.04 pairs MariaDB 11.8 with the newer PHP, and 11.8 is on i-doit’s supported list, so the database side needs no changes at all. Same tuning file, same root password step, with only the FPM unit name (php8.5-fpm) and ini path (/etc/php/8.5/) shifting.

Install from the terminal instead of the wizard

Automating the deployment, or working on a box with no browser handy? i-doit ships a console installer that does everything the wizard does. It runs as the web server user and takes the same values as flags:

cd /var/www/html/i-doit
sudo -u www-data php console.php install -u root -p StrongDBPass2026 \
  --host localhost -d idoit_system -U idoit -P IdoitDBPass2026 \
  --admin-password AdminCenter2026 -n

That installs the framework and system database. A tenant (the mandator holding your actual CMDB data) is a second command:

sudo -u www-data php console.php tenant-create -u root -p StrongDBPass2026 \
  -U idoit -P IdoitDBPass2026 -d idoit_data -t "Your Company" \
  --login-user admin --login-password admin -n

Each task echoes its status as it goes, ending with the users being written:

Check tenant exist with Your Company and DB idoit_data: does not exist   OK
Add tenant Your Company: added with id 1                                 OK
Adding persons                                                           OK
Inserting persons to database: Users successfully added!                 OK

This is the path we used for the Ubuntu 26.04 test install, and the resulting instance served the login page identically to the wizard-built one.

Before it goes into production

A CMDB earns trust slowly and loses it in one bad restore, so close these gaps before the team starts entering real data:

  • Replace the admin/admin login on day one, and set distinct passwords for the Admin Center and the idoit database user.
  • Set up the i-doit cron jobs for housekeeping tasks like report caching and notifications.
  • Back up both databases (idoit_system and idoit_data) plus /var/www/html/i-doit on a schedule, and test a restore once before you need it.
  • Keep the instance off the public internet where possible; the DNS-01 certificate path above exists exactly for that layout.

From here the work is data modeling, not system administration: define your object types, agree on naming, and start documenting the infrastructure one rack at a time.

Keep reading

Upgrade Ubuntu 24.04 to Ubuntu 26.04 LTS (Step by Step) Ubuntu Upgrade Ubuntu 24.04 to Ubuntu 26.04 LTS (Step by Step) UFW Firewall Commands with Examples on Ubuntu 24.04 / 22.04 Security UFW Firewall Commands with Examples on Ubuntu 24.04 / 22.04 Backup and Restore Linux Systems with Timeshift Debian Backup and Restore Linux Systems with Timeshift Install Arcane on Ubuntu 26.04 / 24.04: Complete Docker UI Guide Containers Install Arcane on Ubuntu 26.04 / 24.04: Complete Docker UI Guide Install NVIDIA Drivers and CUDA Toolkit on Ubuntu 26.04 / 24.04 Ubuntu Install NVIDIA Drivers and CUDA Toolkit on Ubuntu 26.04 / 24.04 Monitor Linux Server using Prometheus and Grafana in 5 minutes Prometheus Monitor Linux Server using Prometheus and Grafana in 5 minutes

Leave a Comment

Press ESC to close