  You're browsing the documentation for an old version of SupportPal. Consider upgrading to the [latest version](https://docs.supportpal.com/current/System+Requirements). 

# 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.

## License

 An active license with valid support and updates coverage is required to download and install SupportPal. Our [30 day free trial](https://www.supportpal.com/product/freetrial) 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

- CentOS
- Debian
- Red Hat Enterprise Linux
- Ubuntu

### Windows Server

 Windows support is available via Docker deployment methods.

---

## Software Requirements

### PHP

#### Version

PHP version **7.4.x** and **8.1.x** is supported. PHP 8.0 is not 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](https://www.ioncube.com/loaders.php) - 11.0.1 and above
- JSON
- Mbstring
- OpenSSL
- PDO (with MySQL Client Driver 5.6.0+ or [MySQLnd](https://php.net/manual/en/book.mysqlnd.php) 5.0.9)
- Tokenizer
- XML (with libxml2 version 2.7.0 or above)
 
  - Date - when using [SAML Authentication](SAML+Authentication)
- Gettext - when using [SAML Authentication](SAML+Authentication)
- IMAP - when using `php-imap` for [email download](Email+Download) to pull in department tickets
- LDAP - when using [LDAP operator authentication](LDAP+Accounts)
- PCNTL - when using Redis for the queue (Docker installations).
- POSIX - when using Redis for the queue (Docker installations).
- ZIP - when using the [`make:plugin`](Plugin+Development+Getting+Started#MakeCommand) command
- Zlib - when using [SAML Authentication](SAML+Authentication)
 
   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:

- **`zlib.output_compression` Disabled**  
     Gzip output compression is handled by the web server. PHP's zlib output compression should be disabled to prevent files from being compressed multiple times.
- **`allow_url_fopen` Enabled**  
     To use Gravatar and other SupportPal features, [`allow_url_fopen`](https://php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen) must be enabled in your PHP configuration.
- **IPv6 Support**  
     If your server has IPv6 networking support, this should be enabled by default. However, if not please ensure you have the `php-sockets` extension enabled and PHP has been compiled with the `--enable-ipv6` flag.
- **PNG & JPG Support**  
     If the [PHP GD extension](https://php.net/manual/en/image.installation.php) has been manually compiled, please ensure the `--with-png-dir` and `--with-jpeg-dir` flags are provided.
- **Disabled functions**  
     If you're running under a particularly strict environment, please ensure that the following functions are not listed under the `disable_functions` directive: `ini_set`
- **Memory Limit**  
     A minimum of 128 MB addressable memory is required to install and use SupportPal. We recommend at least 256 MB.

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.

- `addons/`
- `bootstrap/cache/`
- `config/`
- `storage/`

#### 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

```

  If you're using CentOS, it has SELinux enabled by default which has measures in place to prevent `httpd` from writing to files, beyond the normal file permissions. You need to apply `httpd_sys_rw_content_t` to the directories: ```
chcon -Rv --type=httpd_sys_rw_content_t /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.6.0 - 5.7.x, 8.0.x** supported. MariaDB **10.0 - 10.6** also supported.

#### User Privileges

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

- DELETE
- FLUSH TABLES
- INSERT
- LOCK TABLES
- SELECT
- UPDATE

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

- ALTER
- CREATE
- DROP
- INDEX

#### Settings

We recommend the following MySQL configuration directives are changed:

- `<a class="external-link" href="https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_max_allowed_packet" rel="nofollow" target="_blank">max_allowed_packet</a>` - we recommend greater than 20 MB to ensure large emails and embedded images are correctly handled.

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

### Web Server

  **HTTP Request Verbs**  
 Please ensure your web server is configured to allow HTTP `DELETE`, `GET`, `OPTIONS`, `POST` and `PUT` requests. If using Apache and have [mod\_allowmethods](https://httpd.apache.org/docs/2.4/mod/mod_allowmethods.html) enabled you may need to update your web server configuration to permit the verbs. 

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):

 supportpal.conf  Expand  Collapse

```

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:

  **Required Extension(s)**  
 The [URL Rewrite extension](https://www.iis.net/downloads/microsoft/url-rewrite) is required for the below web.config file to function correctly, otherwise a 500.19 error is likely to be shown when visiting SupportPal (see [Understanding HTTP Error 500.19](https://support.microsoft.com/en-gb/help/942055/-http-error-500-19-error-when-you-open-an-iis-7-0-webpage)). 

  Please replace the follow constants in the below code snippet: - `<supportpal_base_url>` with your installation base URL
- `<absolute_path_to_php_cgi.exe>` with the absolute path to your PHP cgi executable
 


 web.config  Expand  Collapse

```

<?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>
    </system.webServer>
    <system.web>
        <authentication mode="Forms" />
    </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:

- Web server: 2 GB RAM - allows up to 50 concurrent staff
- Database server: 4 GB RAM

 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.