Introduction
qdPM is a free and open-source web application for project management. It is designed for small teams working on multiple projects and allows easy management of tasks and roles. qdPM is fully configurable and features a customer-facing ticket system that is integrated into task management. This guide will help you through the complete installation and configuration of qdPM 9.1 on a Debian 10 system running Nginx.
Prerequisites
- A fresh Debian 10 instance.
- Root access to your server
- Optionally, a domain name with an A record pointing to your IP address (required for HTTPS setup.)
NOTE: pm.example.com
should be replaced with your public IP address or domain name.
Installation
Step 1: Installing PHP, Nginx and MariaDB.
qdPM requires a web server with PHP processing and a MySQL database. We will install and setup Nginx, PHP-FPM, and MariaDB to fulfill those requirements.
Update your system and software:
apt update
apt upgrade -y
Install Nginx, PHP, MariaDB, and other required packages:
apt install -y nginx php-fpm php-mysql php-xml mariadb-server unzip wget
And make sure the Nginx, PHP-FPM and MariaDB services are enabled and running:
systemctl enable --now nginx.service mariadb.service php7.3-fpm.service
Step 2: Database Setup.
We’ll create a database and a corresponding user dedicated to qdPM. But first, secure your MySQL installation with the following script:
mysql_secure_installation
During the process, answer questions as shown below:
Enter current password for root (enter for none): Press :key_enter:
Set root password? [Y/n]: y
New password: <your-secure-password>
Re-enter new password: <your-secure-password>
Remove anonymous users? [Y/n]: y
Disallow root login remotely? [Y/n]: y
Remove test database and access to it? [Y/n]: y
Reload privilege tables now? [Y/n]: y
Now let’s setup the database and user:
mysql -u root -p
Enter the MariaDB root password you set earlier to log in. In the MySQL cli, use the following commands to create a database and user:
CREATE DATABASE qdpm_db default charset utf8;
CREATE USER 'qdpm_user'@'localhost' IDENTIFIED BY 'StrongPasswordHere';
GRANT ALL PRIVILEGES ON qdpm_db.* TO 'qdpm_user'@'localhost';
EXIT;
Step 3: Download qdPM.
Use the following command to download qdPM 9.1:
wget https://netix.dl.sourceforge.net/project/qdpm/qdPM_9.1.zip
Unzip to the webroot:
unzip -d /var/www/html/qdpm qdPM_9.1.zip
rm qdPM_9.1.zip
And give ownership of the qdpm directory to the Nginx process owner:
chown -R www-data:www-data /var/www/html/qdpm/
Step 4: Nginx configuration.
We’ll now configure Nginx. Create a server block file in /etc/nginx/sites-available/
with a text editor of your choice. For example:
nano /etc/nginx/sites-available/qdpm80.conf
Add the following lines (while replacing pm.example.com
with your own domain name or IP address).
server {
listen 80;
listen [::]:80;
server_name pm.example.com;
root /var/www/html/qdpm;
index index.php;
location / {
try_files $uri /index.php$is_args$args;
}
location ~* \.php$ {
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
error_log /var/log/nginx/qdpm_error.log;
access_log /var/log/nginx/qdpm_access.log;
}
We now need to enable it by creating a symbolic link in the ‘sites-enabled’ directory, and reload the Nginx service to apply the new configuration:
ln -s /etc/nginx/sites-available/qdpm80.conf /etc/nginx/sites-enabled/
systemctl reload nginx.service
Your qdPM instance should be accessible at http://pm.example.com/
. Proceed to step 5 if you want to configure HTTPS, or skip to step 6 to finalize the installation process.
Step 5a: HTTPS configuration (Optional but highly recommended).
Please note that this step will not work with an IP address, a domain name is required. Start by installing certbot, a tool for obtaining an SSL certificate for your domain name from Let’s Encrypt:
apt install -y certbot
certbot certonly --webroot --agree-tos -m youremail@domain.tld -d pm.example.com
You’ll be prompted to input the webroot location for your domain, enter /var/www/html/qdpm
. Certbot will verify ownership of your domain and will issue an SSL certificate which will be used to setup HTTPS. Next, create another server block file:
nano /etc/nginx/sites-available/qdpm443.conf
And add these lines:
server {
listen 443;
listen [::]:443;
server_name pm.example.com;
root /var/www/html/qdpm;
index index.php;
ssl on;
ssl_certificate /etc/letsencrypt/live/pm.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/pm.example.com/privkey.pem;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~* \.php$ {
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
error_log /var/log/nginx/qdpm_error.log;
access_log /var/log/nginx/qdpm_access.log;
}
Enable this configuration file and reload the Nginx service:
ln -s /etc/nginx/sites-available/qdpm443.conf /etc/nginx/sites-enabled/
systemctl reload nginx.service
Step 5b: HTTP to HTTPS redirection (optional)
If you’d like to redirect all incoming HTTP traffic to HTTPS, open /etc/nginx/sites-available/qdpm80.conf
in a text editor and add the following line after the server_name
directive:
return 301 https://pm.example.com$request_uri;
And reload the Nginx service once again:
systemctl reload nginx.service
Step 6: Web Installer
Navigate to http://pm.example.com/
or https://pm.example.com/
. You should get see the message Environment checked. No errors found. You can install qdPM.
. Click Database Config
and fill in the form as follows:
- Database host:
localhost
- Database port: Leave blank.
- Database name:
qdpm_db
- DB username:
qdpm_user
- DB password: Enter the password you chose during user creation in step 2.
Now click “Install Database” and enter your email and password to create the default administrator account.
Finally, wait for the web installer to finish and login via SSH and remove the install
directory:
rm /var/www/html/qdpm/install/ -rf
Your qdPM installation is now complete.