System Requirements

This page includes useful information on the supported operating systems as well as the software and hardware requirements that are needed to install and use SupportPal.

Contents

License

An active license with valid support and updates coverage is required to download and install SupportPal. Our 30 day free trial is the easiest way to try SupportPal. Owned licenses include 6 months from date of purchase and monthly licenses include lifetime support and updates.


Operating Systems

SupportPal simply requires PHP and MySQL, thus it is possible to install and run it in a vast majority of systems. Below is a list of supported operating systems; we cannot provide support for operating systems that are not listed.

Linux Distributions

Windows Server

Windows support is available via Docker deployment methods.


Software Requirements

PHP

Version

PHP version 8.1.0 - 8.3.x is supported.

For assistance on installing a new version of PHP, please contact your hosting provider or server administrator.

Extensions

Required Optional
  • BCMath
  • Ctype
  • cURL
  • DOM
  • FileInfo
  • GD (requires libpng and libjpeg)
  • Hash
  • Iconv
  • ionCube Loaders - 12.0.5 and above
  • JSON
  • Mbstring
  • OpenSSL
  • PDO (with MySQL Client Driver 5.6.0+ or MySQLnd 5.0.9)
  • Tokenizer
  • XML (with libxml2 version 2.7.0 or above)

PHP extensions differ depending on your server, your host and other system variable. For assistance on installing missing extensions, please contact your hosting provider or server administrator.

Settings

Your PHP configuration must adhere to the following settings:

For assistance on modifying your PHP configuration, please contact your hosting provider or server administrator.

File Permissions

The following directories (and directories within recursively) must be writable by the PHP/Web Server process.

Linux

We recommend setting the above directories to 755 permissions.


chmod 755 /path/to/directory

You may also need to adjust the owner and group of the directories to be the web server user, for example:


chown -R www-data:www-data /path/to/directory

IIS (Windows)

Right click on the folder containing the SupportPal files, click Properties and then the Security tab. Click Edit... and then Add..., enter IUSRS and click Check Names. Click OK, and check the Full Control checkbox in the permissions. Do the same for the IIS_IUSRS group too.

Database

Version

MySQL Server 5.7 and 8.0 - 8.4 supported. MariaDB 10.2 - 11.3 also supported.

User Privileges

For day to day use, the following database privileges are required.

For installing and upgrading the system, as well as activation and deactivation of plugins, the following additional privileges are required.

Settings

We recommend the following MySQL configuration directives are changed:

For assistance on modifying your MySQL configuration, please contact your hosting provider or server administrator.

Web Server

SupportPal supports Apache, nginx and IIS web server.

Apache

Apache is supported out of the box.

nginx

On nginx, please create a new virtual host for SupportPal. The below is an example virtual host but will need editing for your specific environment (paths may vary):


server {
    listen 80 default_server;
    listen [::]:80 default_server;

    server_name _;

    # enable gzip
    gzip on;
    gzip_comp_level 6;
    gzip_min_length 500;
    gzip_proxied any;
    gzip_types text/plain text/css text/javascript application/json application/javascript;
    gzip_vary on;

    # add security headers
    add_header X-Frame-Options SAMEORIGIN always;
    add_header X-Content-Type-Options nosniff always;
    add_header X-XSS-Protection "1; mode=block" always;
    add_header Referrer-Policy strict-origin-when-cross-origin always;
    add_header Strict-Transport-Security max-age=31536000 always;

    # disable request entity max size.
    # https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size
    client_max_body_size 0;

    root /var/www/supportpal;
    index index.php;

    # Hide Nginx version
    server_tokens off;

    # Remove index.php from GET requests.
    set $user_request 0;
    if ($request_method = GET) {
        set $user_request "GET";
    }
    if ($request_uri ~* "^(.*/)index\.php/?(.*)$") {
        set $user_request "${user_request}-index.php";
    }
    if ($user_request = "GET-index.php") {
        return 301 $1$2;
    }

    # Send all requests to SupportPal.
    location / {
        try_files /notexistent @backend;
    }

    # Allow direct access to asset files, if they don't exist show SupportPal 404 error page.
    location ~* \.(css|gif|ico|je?pg|js|png|swf|txt|eot|ttf|woff|woff2|svg|map)$ {
        try_files $uri $uri/ @backend;
    }

    # Allow direct access to resources/assets files, if they don't exist show SupportPal 404 error page.
    location resources/assets/ {
        try_files $uri $uri/ @backend;
    }

    # All SupportPal requests must be sent through index.php.
    location @backend {
        rewrite ^(.*)$ /index.php last;
    }

    location ~ \.php($|/) {
        include snippets/fastcgi-php.conf;

        # With php-fpm:
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
    }
}

IIS

On IIS, please create a web.config file in the root of your installation directory with the below contents:


<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <staticContent>
            <remove fileExtension=".woff" />
            <remove fileExtension=".woff2" />
            <remove fileExtension=".json" />
            <mimeMap fileExtension=".woff" mimeType="application/x-font-woff" />
            <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
            <mimeMap fileExtension=".json" mimeType="application/json" />
        </staticContent>
        <rewrite>
            <rules>
                <rule name="Add trailing slash to base" stopProcessing="true">
                    <match url="^$" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{URL}" pattern="[^\/]$" />
                    </conditions>
                    <action type="Redirect" url="<supportpal_base_url>/" />
                </rule>
                <rule name="Remove index.php" stopProcessing="true">
                    <match url="^index.php/?(.*)$" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_METHOD}" pattern="GET" />
                        <add input="{URL}" pattern="^.*/index\.php" />
                    </conditions>
                    <action type="Redirect" redirectType="Permanent" url="<supportpal_base_url>/{R:1}" appendQueryString="true" />
                </rule>
                <rule name="Allow assets" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{URL}" pattern="(resources/assets/|\.(css|gif|ico|je?pg|js|png|swf|txt|eot|ttf|woff|woff2|svg|map)$)" />
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="Rewrite all else to index.php" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
            <outboundRules>
                <rule name="fix content-type" preCondition="PHPRequest">
                    <match serverVariable="RESPONSE_CONTENT_TYPE" pattern="text/html; charset=UTF-8,([^\/]+\/.+$)" ignoreCase="true" />
                    <action type="Rewrite" value="{R:1}" />
                </rule>
                <preConditions>
                    <preCondition name="PHPRequest">
                        <add input="{REQUEST_URI}" pattern=".*\.php" />
                    </preCondition>
                    <preCondition name="ResponseIsHtml1">
                        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                    </preCondition>
                </preConditions>
            </outboundRules>
        </rewrite>
        <handlers>
            <remove name="WebDAV" />
            <remove name="PHP-php" />
            <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
            <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="DEBUG,DELETE,GET,HEAD,OPTIONS,POST,PUT" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0" />
            <add name="PHP-php" path="*.php" verb="DEBUG,DELETE,GET,HEAD,OPTIONS,POST,PUT" modules="FastCgiModule" scriptProcessor="<absolute_path_to_php_cgi.exe>" resourceType="Either" requireAccess="Script" />
        </handlers>
        <httpErrors errorMode="Detailed" />
        <modules>
            <remove name="WebDAVModule" />
        </modules>
        <security>
         <requestFiltering>
            <requestLimits maxQueryString="4096" />
         </requestFiltering>
      </security>
    </system.webServer>
    <system.web>
        <authentication mode="Forms" />
        <httpRuntime maxQueryStringLength="4096" maxUrlLength="4096" />
    </system.web>
</configuration>

Firewall

Outbound port 443 access to licensing.supportpal.com and marketplace.supportpal.com


Hardware Requirements

Hardware requirements are dependent on the number of users and expected workload. Your exact needs may be more or less, depending on your workload. Your workload is influenced by factors such as - but not limited to - how many active users and operators there are and the frequency of tickets and replies.

For deployments with a lot of active users, or a large database (several hundred thousand records), we recommend to use separate servers for your web server and database; this ensures the database has dedicated resources and can ensure consistent performance.

Storage

In a fresh installation, SupportPal uses minimal space (approximately 100 MB). The database and storage/ directory is where you'll see most growth. The storage/ directory includes things like caches, attachments, and log files.

We recommend using solid state drives for all deployments, particularly database servers, as this dramatically improves the responsiveness of SQL queries.

CPU

We recommend a minimum of 4 vCPU on all servers.

Memory

The following is the recommended minimum memory hardware guidance:

We also recommend having at least 2 GB of swap on your server, even if you currently have enough available RAM. Having swap will help reduce the chance of errors occurring if your available memory changes. We also recommend configuring the kernel's swappiness setting to a low value like 10 to make the most of your RAM while still having the swap available when needed.


Browser Support

SupportPal is tested against the browsers listed below. Other browsers and older browser versions may still work, but we will not provide support or fixes for these products.

JavaScript must be enabled in the web browser for the most feature rich experience. If JavaScript is disabled some functionality will not work correctly.

Supported Browsers & Versions

Browser Supported Version(s)
Chrome latest 2 versions
Edge latest 2 versions
Firefox latest 2 versions
Safari latest 2 versions

Mobile Device Support

The interface is designed with mobile first in mind. We recommend a device width of 360px or above, any device with a width smaller than this will still work but may have visual defects and won't offer the best user experience.