UVDesk is an open-source helpdesk system written in PHP and uses a MySQL database. UVDesk has a simple UI that makes it easy for agents to search through the queue of tickets and filter them by keywords, assigned agents, creation date, priority, and other factors.

Agents can track tickets with a system that includes an activity feed, ticket filters, “star” on closed tickets, and categories.

UV Desk has many features to handle customer support, including user verification for new accounts, email validation for all users of the helpdesk software, alerts when customers create tickets through the contact form, spam detection in the contact form submission page, validation of ticket content to make sure it’s not too long or too short.

UVdesk is designed to help companies provide fast email, phone, and chat support; maintain a knowledge base of common issues; issue self-service tickets; deliver targeted promotions based on user behavior; and create detailed reports on agent productivity.

The service also provides the option to offer third-party integration, including FedEx Ship Manager integration with tracking updates via email or SMS text message. UVdesk can be used over an organization’s private servers or hosted by UVdesk. It has multi-channel customer service support (phones, e-mail, Web chat). It provides reporting tools that show which customers are calling most, how long they are in the queue before speaking to someone, and how quickly an agent responds to the customer.

This guide will walk you through the installation process of UV Desk on a Debian 10 VPS. This guide also shows you how to install Apache as a web server and php-fpm as a PHP processor.

Prerequisites

To follow this tutorial, you will need the following:

  • A Debian 10 VPS
  • Root access to your server
  • An SSH client such as PuTTy
  • System Requirements: A minimum 4GB of RAM, 20 GB of Disk Space.

Connect To Your Debian 10 VPS

First, you must connect to your Debian 10 VPS using an SSH client. Once logged in, you should update your system with the following command.

sudo apt update && sudo apt upgrade -y

Once the system has been updated, run the command below to install the required dependencies.

sudo apt install git unzip curl nano -y

Installing the Apache Web server

Apache is a widely used web server and by default ships with Debian 10. To install Apache, run the following command. libapache2-mod-fcgid is a required dependency for PHP-FPM.

sudo apt install apache2 libapache2-mod-fcgid -y

Next, run the commands below to enable the Apache modules.

sudo a2enmod actions
sudo a2enmod fcgid
sudo a2enmod alias
sudo a2enmod proxy_fcgi

The Apache modules explained:

  • a2enmod manages the apache modules. the fcgid module is required for Apache2 to communicate with PHP-FPM, which can process dynamic pages.
  • alias allows users to unify multiple websites into a single URL.
  • proxy_fcgi enables apache’s mod_proxy module and the fastcgi protocol that talk together and enable you to run backend FastCGI processes.

Finally, restart Apache for the changes to take effect.

sudo systemctl restart apache2

Creating a Database for UVdesk

This guide will use MariaDB as our database, which can be installed through apt. MariaDB is a cross-platform SQL database management system created as a branch of MySQL.

sudo apt install mariadb-server mariadb-client -y

MariaDB-server is the actual daemon that runs MariaDB, while mariadb-client is the command-line client that you can use to connect to a MariaDB server.

Once MariaDB has been installed, please run the following command to secure it.

mysql_secure_installation

You will be asked to provide a root password for MariaDB. Press Enter .

You will be asked to enter the current password for root (enter for none). Press Enter.

Next, you will be prompted to set a new root password. Enter a strong password and press Enter.

You will be asked to confirm the new root password. Re-enter the password and press Enter.

Type Y and press Enter for the rest of the questions.

Sample output:

<img alt="Secure MariaDB" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/04/echo/word-image-19860-1.png" data-ez decoding="async" ezimgfmt="rs rscb10 src ng ngcb10 srcset" height="635" src="data:image/svg xml,” width=”600″>

Installing PHP-FPM

PHP-FPM (FastCGI Process Manager) is a module for PHP that allows you to run PHP applications with the FastCGI protocol. PHP-FPM makes controlling the number of processes and threads easy when running PHP scripts.

sudo apt install -y php php-pear
sudo apt install -y php-{cli,fpm,pdo,json,common,mysql,zip,gd,mbstring,curl}
sudo apt install -y php-{xml,bcmath,imap,intl,mailparse}

Once you have installed PHP-FPM, please run the following command to check its status.

sudo systemctl status php*-fpm.service

You should see something similar to this. The important thing to note here is that the process is active and running.

<img alt="Install PHP" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/04/echo/word-image-19860-2.png" data-ez decoding="async" ezimgfmt="rs rscb10 src ng ngcb10 srcset" height="217" loading="lazy" src="data:image/svg xml,” width=”622″>

Now, we need to edit the php.ini file to configure PHP-FPM. First, open the php.ini file with the command below.

sudo nano /etc/php/*/fpm/php.ini

You will see a lot of settings in this file. Scroll down up to the time zone setting, which you can find under [Date] .

We need to set the date.timezone directive here with your chosen time zone. You can do that by simply copying the code below and pasting it in line 13 of this file (as shown below).

date.timezone = USA/Eastern

Next, you will need to set the memory_limit directive. This directive sets the maximum amount of memory that a script can consume. We recommend setting this value to 512M (or even 1024MB if your server has enough memory).

memory_limit = 512M

Sample output:

Before:

<img data-ezsrc="https://kirelos.com/wp-content/uploads/2023/04/echo/word-image-19860-3.png" data-ez decoding="async" ezimgfmt="rs rscb10 src ng ngcb10 srcset" height="85" loading="lazy" src="data:image/svg xml,” width=”634″>

<img data-ezsrc="https://kirelos.com/wp-content/uploads/2023/04/echo/word-image-19860-4.png" data-ez decoding="async" ezimgfmt="rs rscb10 src ng ngcb10 srcset" height="64" loading="lazy" src="data:image/svg xml,” width=”605″>

After:

<img data-ezsrc="https://kirelos.com/wp-content/uploads/2023/04/echo/word-image-19860-5.png" data-ez decoding="async" ezimgfmt="rs rscb10 src ng ngcb10 srcset" height="75" loading="lazy" src="data:image/svg xml,” width=”583″>

<img data-ezsrc="https://kirelos.com/wp-content/uploads/2023/04/echo/word-image-19860-6.png" data-ez decoding="async" ezimgfmt="rs rscb10 src ng ngcb10 srcset" height="62" loading="lazy" src="data:image/svg xml,” width=”617″>

Once you’re done, save and close the file. Now we need to restart PHP-FPM to load our new settings.

sudo systemctl restart php*-fpm.service

Installing PHP Composer

PHP Composer is a dependency manager for PHP that allows you to install and manage your project’s dependencies.

UVdesk requires PHP Composer to work. You can find out what PHP Composer is and how it works here.

First, run the command below to download the Composer installer.

curl -sS https://getcomposer.org/installer -o composer-setup.php

curl -sS (this downloads the installer using “curl”) https://getcomposer.org/installer (this downloads the latest installer from getcomposer.org) -o (the output is redirected to a file called composer-setup.php) composer-setup.php (the Composer installer is named composer-setup.php)

Once the installer is downloaded, run the following command to install Composer.

sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

sudo php (this runs php as root) composer-setup.php (specifies that the input file is the installer, composer-setup.php) –install-dir=/usr/local/bin (the install location can be anywhere; we’ve chosen /usr/local/bin) –filename=composer (the output of this command is composer, the Composer executable)

Now that Composer is installed, run the composer -V command to make sure it’s working correctly.

composer -V

You should see output something like this. If you do not see a version number, then Composer is probably not installed correctly and needs to be reinstalled from the installer.

<img alt="Install Composer" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/04/echo/word-image-19860-7.png" data-ez decoding="async" ezimgfmt="rs rscb10 src ng ngcb10 srcset" height="97" loading="lazy" src="data:image/svg xml,” width=”586″>

Installing UVdesk Software

Now that our application server is configured, we can install UVdesk on it. First, you should always create a directory for your project. This directory will store all the files for your project, including the UVdesk installation file.

sudo mkdir /var/www/udvesk
cd /var/www/udvesk

Next, run the command below to set the permissions for your project directory. This will ensure that you have the write permissions in this directory.

sudo chown $USER:$USER /var/www/udvesk -R
sudo chown

USER:

USER:USER sets the ownership of the project directory to your username /var/www/udvesk -R recursively sets the permissions for the project directory and all its subdirectories

Next, run the command below for an up-to-date list of available packages.

composer clear-cache

Now that we have a complete list of all the available Composer packages run the command to install UVdesk.

composer create-project uvdesk/community-skeleton helpdesk-project

composer create-project uvdesk/community-skeleton helpdesk-project installs the latest version of the UVdesk community skeleton. Once this installation is complete, you will get the Project Setup Complete as shown below.

<img alt="Install UVDesk using Composer" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/04/echo/word-image-19860-8.png" data-ez decoding="async" ezimgfmt="rs rscb10 src ng ngcb10 srcset" height="386" loading="lazy" src="data:image/svg xml,” width=”639″>

Creating a Virtual Host

To use UVdesk on your domain, you will need to create a virtual host. A virtual host allows you to run multiple websites (or applications) on a single server. For more information, see this documentation.

First, run the command below to protect your server’s default virtual host file. We will create a bak file if we ever need to restore it. Bak is the default extension for a backup file.

sudo mv 000-default.conf 000-default.conf.bak

Now, run the command below to create a new virtual host file that uses your server’s default port 80 and listens to all addresses on your server. Replace my_domain with your domain name in all the code you

sudo mv 000-default.conf 000-default.conf.bak

Next, create the new virtual host file with your favorite text editor. We will use the nano editor for this example.

sudo nano /etc/apache2/sites-enabled/uvdesk.conf

Copy and paste the following code into the file. Be sure to replace my-domain with your domain name.

Listen 8080
ServerName my-domain.com
ServerAlias www.my-domain.com
DocumentRoot /var/www/udvesk/helpdesk-project/public

Options -Indexes  FollowSymLinks  MultiViews
AllowOverride All
Require all granted



# 2.4.10  can proxy to unix socket
SetHandler "proxy:unix:/var/run/php/php7.4-fpm.sock|fcgi://localhost"


ErrorLog /var/log/apache2/uvdesk-error.log
CustomLog /var/log/apache2/uvdesk-access.log combined

What you should know about the above code block:

Listen 8080: This line tells Apache to listen on port 8080 for requests. Change this line to reflect the new port number if you need to use a different port.

ServerName my-domain.com: This line tells Apache which domain name to use when responding to requests.

ServerAlias www.my-domain.com: This line tells Apache to also respond to requests for the www.my-domain.com domain name.

DocumentRoot /var/www/udvesk/helpdesk-project/public: This line tells Apache where to find the helpdesk-project directory we created earlier.

Save and exit nano by pressing CTRL X, Y, and ENTER.

Now that you have created the virtual host file, run the command below to set the correct permissions.

sudo chown -R www-data:www-data /var/www/udvesk

Next, run the sudo chmod -R 755 /var/www/udvesk command below to set the correct permissions. This will ensure that the Apache process can read and write to the helpdesk-project directory.

sudo chmod -R 755 /var/www/udvesk

Finally, by running the command below, reload Apache for the changes to take effect.

sudo systemctl reload apache2

Access the UVdesk Web UI

Now that we have set up our virtual host, we can access the Web UI by going to http://my-domain.com:8080 in a browser. The first time you go to UVdesk, you will be asked to configure your server and database connections.

Click Let’s start and follow the on-screen instructions to complete the setup.

<img alt="Install UVDesk" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/04/echo/word-image-19860-9.png" data-ez decoding="async" ezimgfmt="rs rscb10 src ng ngcb10 srcset" height="751" loading="lazy" src="data:image/svg xml,” width=”1884″>

Conclusion

Congratulations, you have successfully set up UVdesk on your Debian server. You are now ready to manage your helpdesk from a web browser.

For more information on using UVdesk, please refer to its official documentation page.