Installing Faveo Helpdesk on Windows Server

Windows

Faveo can run on the Windows Server.

The Installation steps listed above are to be followed to install Faveo on your Windows-IIS Server.

Before we follow the installation steps Notepad++ , Winrar & 7-Zip must be installed.

1. Install IIS Server

To install IIS Server open Server Manager and locate the Manage button on the top right corner click on it and select Add Roles and Features.

  • A wizard will open displaying the overview, click on Next, and under Installation Type select Role-based and Feature-based installation and select Next.

  • Leave the default in Server Selection and click Next.

  • Now under Server Roles search and enable the checkbox for Web Server IIS click on the Add Features window and proceed by clicking Next.

  • In the Features section locate the .NET Framework 3.5 and .NET Framework 4.7 select the packages as shown in the below image:

  • In the Role Services section locate the Application Development select the package CGI and click Next.

  • Click Next thrice to confirm the settings and finally click on Install. It will get the IIS installed on the server. To verify the installation, you can type the following URL in the browser
http://localhost/

2. Install PHP 8.2

  • Click Here to download php 8.2.9 NTS 64bit file. Extract the zip file & “rename it to php8.2. Now move the renamed php8.2 folder to C:\php8.2.

  • Open php8.2 folder, find php.ini-development & rename it to php.ini to make it php configuration file.

  • Open php.ini using Notepad++, add the below lines at the end of this file & save the file:

Required configuration changes for Faveo Helpdesk.

error_log=C:\Windows\temp\PHP82x64_errors.log
upload_tmp_dir="C:\Windows\Temp"
session.save_path="C:\Windows\Temp"
cgi.force_redirect=0
cgi.fix_pathinfo=1
fastcgi.impersonate=1
fastcgi.logging=0
max_execution_time=300
date.timezone=Asia/Kolkata
extension_dir="C:\php8.2\ext\"
upload_max_filesize = 100M
post_max_size = 100M
memory_limit = 256M

Uncomment these extensions.

extension=bz2
extension=curl
extension=fileinfo
extension=gd
extension=imap
extension=ldap
extension=mbstring
extension=mysqli
extension=soap
extension=sockets
extension=sodium
extension=openssl
extension=pdo_mysql

2.a. Update the Environment Variable for PHP Binary

  • Right click on This PC, go to Properties > Advanced System Settings > Environment Variables.

  • Now click on Path > Edit > New & add copied path C:\php8.2\ here and click OK in all 3 tabs.

2.b. Enable cacert.pem File in PHP Configuration File

  • Click Here to download cacaert.pem file. This is required to avoid the “cURL 60 error” which is one of the Probes that Faveo checks.
  • Extract the cacert.pem file and copy it to C:\php8.2 path.
  • Edit the php.ini located in C:\php8.2, Uncomment curl.cainfo and add the location of cacert.pem to it as below:
curl.cainfo = "C:\php8.2\cacert.pem"

3. Create FastCGI Handler Mapping

  • Open Server Manager, locate Tools on the top right corner of the Dashboard, Open Internet Information Services (IIS) Manager.

  • Now in the Left Panel of the IIS Manager select the server then you will find the Handler Mappings it will populate the available options to configure.

  • Open Handler Mappings, Click on Add Module Mapping in the Right Panel, Add Module Mapping window will appear. Add the below values in the respective fields.

  • RequestPath
    *.php
    
  • Module
    FastCgiModule
    
  • Executable (Optional)
    "C:\php8.2\php-cgi.exe"
    
  • Name
    FastCGI
    

By default, IIS configures PHP only to accept GET, POST, and HEAD request types. Since Faveo makes use of other requests types (such as DELETE and PUT), you must manually change the PHP handler to allow them.

  • Click on the Request Restrictions button, then switch to the Verbs tab. Switch the radio button to All Verbs, then click OK to close the window, then OK again to close the other.

Note: You may be prompted with an alert to fix the path to the PHP executable. If so, just put double-quotation marks around the path that already exists in the Executable box and it will save successfully.

  • Open notepad and copy the below lines and save the file under the path C:\inetpub\wwwroot as index.php. Make sure while saving you select all file types otherwise you will end up having the file as index.php.txt
    <?php
    phpinfo();
    ?>
    
  • Now go back to the main server configuration and select Default Document. Open Default Document, Click on Add from the Right Panel, a new window will appear. Add the value index.php and click OK.

  • Now if you visit “http://localhost” in the browser you should be able to see PHP Info page.

Note: If you don’t see the above php page and see the error page like below, you need to install the relevant C++ Redistributable for Visual Studio.

Install Visual Studio (Conditional Step)

  • Execute the installer to perform the required installation.
  • Accept the License Agreement terms and click Install.

  • Click Close to finish the installation.

4. Install MariaDB 10.6/MySQL 8.0

5. Install Ioncube Loader

  • Click Here to download Ioncube Loader zip file, Extract the zip file.

  • Copy the ioncube_loader_win_8.2.dll file from extracted Ioncube folder and paste it in the PHP extension directory C:\php8.2\ext.

  • Add the below line in your php.ini file at the starting to enable Ioncube.

zend_extension = "C:\php8.2\ext\ioncube_loader_win_8.2.dll"

6. Install wkhtmltopdf

Wkhtmltopdf is an open source simple and much effective command-line shell utility that enables user to convert any given HTML (Web Page) to PDF document or an image (jpg, png, etc). It uses WebKit rendering layout engine to convert HTML pages to PDF document without losing the quality of the pages. Its is really very useful and trustworthy solution for creating and storing snapshots of web pages in real-time.

  • Click Here to download 64-bit wkhtmltopdf-0.12.6-1.exe installer file.

  • Run the downloaded wkhtmltopdf-0.12.6-1.exe installer.

  • Click I Agree on the license agreement screen.

  • Specify the installation destination folder or leave it as default location and click Install

  • When installation is complete, click the Close button.

  • Now copy wkhtmltox.dll located at C:\Program Files\wkhtmltopdf\bin and paste it in C:\php8.2\ext

  • Update the Environmet variable for wkhtmltopdf. Refer to section (2.a) for adding Environment Variable

7. Upload Faveo

  • Download the Faveo Helpdesk from https://billing.faveohelpdesk.com and extract the contents inside IIS Root Directory.
    C:\inetpub\wwwroot\
    
  • Right click on wwwroot directory and in the security tab click on edit and add user IUSR. Give full permissions to IIS_IUSRS, IUSR and Users for the wwwroot folder.

Give full permissions (same as above) to the Windows Temp folder as well:

C:\Windows\Temp

8. Configure Faveo in IIS Manager

  • Open IIS Manager and in the left pane, Explore till you find Default Web Site, select it.
  • Then in the right panel, you will see the Basic Settings option click on it, a new window will open as shown below:

  • Set the Physical Path value to:
"%SystemDrive%\inetpub\wwwroot\public"

9. Configure web.config file for IIS

  • Open notepad and copy the below lines and save the file under the path C:\inetpub\wwwroot\public as web.config. Make sure while saving you select all file types.
<?xml version="1.0" encoding="UTF-8"?>

<configuration>

    <system.webServer>

        <rewrite>

            <rules>

                <rule name="Imported Rule 1" stopProcessing="true">

                    <match url="^" ignoreCase="false" />

                    <conditions logicalGrouping="MatchAll">

                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />

                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />

                    </conditions>

                    <action type="Rewrite" url="index.php" />

                </rule>

            </rules>

        </rewrite>

    </system.webServer>

</configuration>
  • Click Here to download URL Rewrite. Click on Install this Extension execute the installer and click Install.
  • URL Rewrite enables Web administrators to create powerful rules to implement URLs that are easier for users to remember and easier for search engines to find.

10. Setting up the Database

Open MariaDB 10.6 Command Line Client from the start menu and enter the password that you set while installing. Run the below commands to create a database and database user for Faveo Helpdesk.

  • Create a database called ‘faveo’.
CREATE DATABASE faveo;
  • Create a user called ‘faveo’ and change the strongpassword with the password of your choice.
CREATE USER 'faveo'@'localhost' IDENTIFIED BY 'strongpassword';
  • Grant access to the faveo user to faveo Database.
GRANT ALL ON faveo.* TO 'faveo'@'localhost';
  • And finally, we apply the changes and exit the database.
FLUSH PRIVILEGES;
exit

11. Setting up Bindings

  • To Open the Faveo on your domain, you must set the binding.

  • Open IIS Manager and in the left panel, Explore till you find Default Web Site, select it.

  • Then in the right panel, you will see the Bindings option click on it, a new window will open select HTTP and edit the hostname to your concerned Domain as shown below:

  • After adding the Bindings we need to edit the host file, which will present be at this location.
C:\Windows\System32\drivers\etc
  • Add the below line by replacing the ‘yourdomain’ with the domain that we used in the above step.
127.0.0.1            yourdomain
  • Now you can open the browser and enter the IP or Domain Name to open Faveo.

Disable WebDav (Optional)

To test the successful configuration perform some delete operations in Faveo if the Delete operation fails then the above steps are not sufficient at this point you may need to remove WebDav:

  • Go to Control Panel > Uninstall Program > Turn Windows features on or off > IIS > World Wide Web Services > Common HTTP feature > WebDAV Publishing.

12. Set Cron & Configure Queue Driver

  • To open Task scheduler press Win+R and type taskschd.msc.
  • On the Right pane of the Task scheduler select Create Basic Task enter a Name for the task and click Next.

  • Under Task Trigger, section select Daily and click Next and leave the default values in Daily section tick the Synchronize across time zones and proceed Next.

  • Now under the Action section select Start a program and click Next.

  • In Start a program copy the below value into the program/script field.
    C:\Windows\System32\cmd.exe
    
  • Add the following highlighted values to the Argument :

  • This is for faveo incoming mail, esacalation, faveo update check.
    /c php "c:\inetpub\wwwroot\artisan" schedule:run
    

  • Finally under the Finish section select the checkbox to open the properties window after finish and click the Finish button.

  • In the properties window, select the Triggers tab, click on Edit and select the checkbox for Repeat task every set values to run every 5 minutes, for a duration of indefinitely and click on OK.

  • Similarly add two more triggers At log on & At startup up, set values to run every 5 minutes, for a duration of indefinitely and click on OK.

Queue Drivers

A queue driver is the handler for managing how to run a queued job, identifying whether the jobs succeeded or failed, and trying the job again if configured to do so. There are different queue lists are available to be used by the system:

  • Sync (Activated by default)
  • Database (this will use the database used by the application to act as a queue)
  • Redis

  • Sync, or synchronous, is the default queue driver which runs a queued job within your existing process. With this driver enabled, you effectively have no queue as the queued job runs immediately. When a small number of incoming and outgoing mail functionalities are operated by the system, this sync method can be used.

  • Database driver stores queued jobs in the database. In Database queue multiple users need to work on a pool of records in a queue to process them. The records in the queue are in an unprocessed state. After the user worked on any record, that record is in completed state and is removed from the queue.
  • Database Queue option lets the emails queue to execute using First in First out (FIFO) method and sends emails to the clients one by one.
  • In Database, Read and Write operations are slow because of storing data in secondary memory.

  • Database Configuring documentation

  • Redis is an open-source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. This will improve system performance and is highly recommended.
  • In Redis, Read and Write operations are extremely fast because of storing data in primary memory.

  • Redis Installation documentation

Note: Database queue driver must be used only in windows server. C Panel or Linux users should not use database as queue driver.

13. Install Meilisearch

MeiliSearch is an open-source search engine developed in Rust that delivers flexible search and indexing capabilities. It adeptly handles typos, supports full-text search, synonyms, and comes packed with various features, making it an ideal choice for elevating search functionalities in Faveo.

Meilisearch installation documentation

14. SSL Installation

Secure Sockets Layer (SSL) is a standard security technology for establishing an encrypted link between a server and a client. Let’s Encrypt is a free, automated, and open certificate authority.

Faveo Requires HTTPS so the SSL is a must to work with the latest versions of faveo, so for the internal network and if there is no domain for free you can use the Self-Signed-SSL.

15. Install Faveo

Now you can install Faveo via GUI Wizard or CLI

16. Faveo Backup

At this stage, Faveo has been installed, it is time to setup the backup for Faveo File System and Database. Follow this article to setup Faveo backup.

Updated: