ITFlow runs on most “standard” Linux web servers. For the core functionality, you just need Apache, a database (MariaDB is highly recommended over MySQL) and PHP.
There's also a script that automates this process for you and uses Let's Encrypt certificates. The script also takes care of setting up cron.
This guide assumes you want to install ITFlow to the default /var/www/html/ directory, adjust this as required if you're using vhosts.
Update apt
sudo apt updateInstall Apache
sudo apt install apache2 -yInstall MariaDB
sudo apt install mariadb-server -yNOTE: We highly recommend MariaDB over MySQL. They are very similar but some pages do not load properly when using MySQL.
Install PHP
sudo apt install php php-intl php-mysqli php-curl php-gd php-mbstring php-zip libapache2-mod-php -yInstall Git & whois
sudo apt install git whois -yHarden your Linux installation
As a starting point:
sudo mysql_secure_installationsudo ufw allow ssh & sudo ufw allow “Apache Full” & sudo ufw enableEnable PHP (hint: hit tab after typing php to get a suggested version number)
sudo a2enmod php8.3Adjust PHP File Upload Limits
sudo nano /etc/php/{PHP VERSION}/apache2/php.ini - Adjust:upload_max_filesize = 500Mpost_max_size = 500Mmax_execution_time = 300Enable SSL
sudo a2enmod sslAdd public/private TLS keys. You could also use LetsEncrypt, but setting this up is beyond the scope of this guide.
/etc/ssl/certs/public.pem/etc/ssl/private/private.keyAdjust Apache's default SSL config to reflect the location of your keys:
sudo nano /etc/apache2/sites-available/default-ssl.conf - Adjust:SSLCertificateFile /etc/ssl/certs/public.pemSSLCertificateKeyFile /etc/ssl/private/private.keyCheck Apache config
sudo apachectl configtestEnable the 00-default site
sudo a2ensite default-sslReload Apache Service to apply the changes
sudo systemctl reload apache2Test: HTTP & HTTPS
Configure Apache to redirect HTTP to HTTPS
sudo nano /etc/apache2/sites-enabled/000-default.confRedirect permanent / https://itflow.yourdomain.com/ (or similar) under the VirtualHost for port 80Log in to the database
sudo mysql -u rootCreate a new database for ITFlow
MariaDB> CREATE DATABASE itflow;MariaDB> FLUSH PRIVILEGES;Setup a user for the ITFlow app
MariaDB> CREATE USER 'itflow'@'localhost' IDENTIFIED BY 'supersecurepassword';MariaDB> GRANT ALL PRIVILEGES on itflow.* to 'itflow'@'localhost';exitClone ITFlow to the Apache web directory
cd /var/www/htmlrm index.htmlgit clone https://github.com/itflow-org/itflow.git .Set the web folder to be owned by Apache's www-data user
sudo chown -R www-data:www-data /var/www/htmlRun through the initial setup by navigating to your web server using HTTPS
Once complete, tidy up the webserver permissions (The Apache/www-data user needs access to edit files as it self-updates using Git)
sudo chmod -R 775 /var/www/htmlsudo chmod 640 /var/www/html/config.phpDone!
Whilst it is technically possible to install ITFlow on Windows, we do not recommend this and cannot offer support for it. Many PHP functions simply do not work properly on Windows.