Deploy SupportPal on Docker (High Availability)

Deploy SupportPal using a multi-node configuration with Docker Compose on GNU/Linux. Experience with Docker is recommended.

Contents

Prerequisites

Ensure your system meets our recommended system requirements. Operating system and software requirements are already satisfied by our Docker containers.

Additional software is required to deploy SupportPal on Docker:


Installation & Configuration

Install SupportPal

To start the installation, run the following:

Linux / MacOS


bash <(curl -LsS https://raw.githubusercontent.com/supportpal/helpdesk-install/master/templates/docker-compose/setup.sh)

Windows


winpty bash <(curl -LsS https://raw.githubusercontent.com/supportpal/helpdesk-install/master/templates/docker-compose/setup.sh)

Next Steps

Congratulations, you've successfully installed SupportPal!

You can control the state of the containers via the make command:

make help

We now recommend that you learn how to administer your installation.


Customisation

Configuring HTTPS

By default, the software will run on HTTP using port 80, however we recommend using HTTPS for added security. To allow HTTPS, we provide an integration with LetsEncrypt, start the process with the following steps:

  1. Change the current working directory to the docker-compose directory, for example:
    
            cd helpdesk-install/templates/docker-compose
            
  2. Stop the containers if they are currently running:
    make stop
  3. Copy the Docker composer override file:
    cp docker-compose.override.yml.dist docker-compose.override.yml
  4. Update the Makefile file, replacing the COMPOSE_FILES variable:
    COMPOSE_FILES=-f docker-compose.yml -f docker-compose.prod.yml -f docker-compose.override.yml
  5. Add your help desk domain name to the .env file. If you intend to use multiple domains / brands with your helpdesk, only specify one - it does not matter which one you choose.
    DOMAIN_NAME=example.com

You may now either set up a self-signed SSL certificate (if your domain is not available to the public), or a full LetsEncrypt SSL certificate for your domain.

Self-Signed SSL Certificate

Execute the script, replacing the top level domain names with your own. You can list as many domain names as you need:

./../../configs/letsencrypt/create-self-signed.sh -- example.com www.example.com

LetsEncrypt SSL Certificate

Execute the script, replacing the domain names and email address. You can list as many domain names as you need. At least one of the domain names needs to be the DOMAIN_NAME specified in the .env file.

./../../configs/letsencrypt/init-letsencrypt.sh --email user@company.com -- example.com www.example.com

Restart the containers for your changes to take effect:

make restart

Configuring nginx

You can extend our default nginx configuration by making changes to templates/docker-compose/gateway/custom.conf within the helpdesk-install repository. See https://nginx.org/en/docs/ for assistance with nginx config directives.

Restart the containers for your changes to take effect:

make restart

Configuring PHP

You can extend our default PHP configuration by copying files into the containers.

  1. Create templates/docker-compose/php/custom.ini
  2. Add your PHP configuration to the file. See https://www.php.net/manual/en/configuration.file.php for assistance with PHP directives.
  3. Update the volumes definition for the supportpal and supportpal_cron containers in templates/docker-compose/docker-compose.prod.yml:
    - ./php/custom.ini:/usr/local/etc/php/conf.d/10-custom.ini
    You can change the 10 in the filename to control the priority that the file is loaded.
  4. Restart the containers for your changes to take effect:
    make restart

Extending SupportPal

It is easy to extend your SupportPal installation. Simply add your files to the relevant directory in the helpdesk-install repository:

Extension helpdesk-install Directory
Creating plugins templates/docker-compose/customization/plugins
Creating reports templates/docker-compose/customization/reports
Creating translations templates/docker-compose/customization/languages
Creating themes templates/docker-compose/customization/templates

The changes should be immediately visible in your SupportPal installation without needing to restart the containers.


Updating SupportPal config files

To create SupportPal config files, simply copy files from the host into the container. The example below copies customization/saml.php from the host to a container called supportpal:

docker cp customization/saml.php supportpal:/supportpal/config/production/

For more complex tasks, such as updating or removing configuration files create an interactive shell and administer it like a normal Linux machine:

docker-compose exec supportpal bash

File changes in config/production/ will persist restart events as the directory is mounted as an external Docker volume.

Using the migration script

To get started using the migration script follow the below steps:

  1. Download and extract migration script
  2. Ensure the SupportPal docker containers are already running
  3. In the directory where the migration script was extracted run:
    docker-compose up -d
  4. Access the migration script via http on port 8081 at the same hostname / IP address as the help desk. When finished with the migration script, run docker-compose down -v to remove the container.
  5. Configure Step 1
    1. Ensure the storage/ directory is writable by the www-data user:
      docker-compose exec migrations chown -R 33:33 storage/
    2. Set the database details:
      • Hostname: db
      • Name: supportpal
      • Username: can be found in templates/docker-compose/secrets/db_user.txt
      • Password: can be found in templates/docker-compose/secrets/db_password.txt
    3. Set the application details:
      • Storage Path: /supportpal/storage
      • Application Key: can be found in config/production/app.php within the supportpal container

Uninstall

To completely remove your help desk installation, follow the steps below:

  1. Change the current working directory to the docker-compose directory, for example:
    
            cd helpdesk-install/templates/docker-compose
            
  2. Take a full backup.
  3. Run the uninstall command:

    Linux

    sudo make uninstall

    MacOS / Windows

    make uninstall