Learn How To Install osTicket on Ubuntu 16.04

January 17, 2019

Table of Contents

OsTicket is a free and open source ticketing tool written in PHP. It is a simple and lightweight tool that allows you to manage, organize and archive your support request.

In this tutorial, you will learn how to install and configure osTicket on Ubuntu 16.04.


  • An ITWeb.Services Ubuntu 16.04 server instance.
  • A sudo user with root privileges.

Step 1: System update

Before starting, it is recommended to update the system with the latest stable version. Login with sudo user and run the following commands to update the system.

sudo apt-get update -y
sudo apt-get upgrade -y

Step 2: Install LEMP Server

First, you will need to install Nginx, Mysql, PHP, PHP-FPM and other required PHP modules on your system. You can install all of them with the following command:

sudo apt-get install -y nginx mysql-server php7.0-cli php7.0-mysql php7.0-cgi php7.0-fpm php7.0-gd php7.0-imap php7.0-xml php7.0-mbstring php7.0-intl php-apcu -y

Once the installation is complete, start the Nginx and MySQL service and add them to start at boot time:

sudo systemctl start nginx
sudo systemctl start mysql
sudo systemctl enable nginx
sudo systemctl enable mysql

Next, you will need to modify the php.ini file:

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

Uncomment the following line and change its value to 0:


Save and close the file, then restart the php7-fpm service and add it to start at boot time:

sudo systemctl restart php7.0-fpm
sudo systemctl enable php7.0-fpm

Step 3: Configure database for osTicket

By default, MySQL is not secured. You can secure it by running the mysql_secure_installation script.

sudo mysql_secure_installation

Answer all of the questions as shown below:

Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

When all is done, connect with MySQL shell with the following command:

mysql -u root -p

Enter your password, then create a new database and user for osTicket:

mysql> create database osticketdb;
mysql> create user osticket@localhost identified by 'password';
mysql> grant all privileges on osticketdb.* to osticket@localhost identified by 'password';
mysql> flush privileges;
mysql> exit;

Step 4: Download osTicket

First, you will need to create a directory for osTicket:

sudo mkdir /var/www/html/osticket

Next, change the directory to osTicket and download osTicket with the following commands:

cd /var/www/html/osticket
wget http://osticket.com/sites/default/files/download/osTicket-v1.10.zip

Note: Be sure to get the latest version from osTicket’s download page here.

Once the download is completed, extract the downloaded file.

sudo unzip osTicket-v1.10.zip

Next, copy the sample config file:

sudo cp upload/include/ost-sampleconfig.php upload/include/ost-config.php

Change the owner of all osticket files and directories to the ‘www-data’ user and group.

sudo chown -R www-data:www-data /var/www/html/osticket

Step 5: Configure Nginx for osTicket

You will need to create a new virtual host configuration for osTicket:

sudo nano /etc/nginx/sites-available/osticket

Add the following lines:

server {
  listen 80;
        server_name your-domain.com;
        root   /var/www/html/osticket/upload/;
        access_log  /var/log/nginx/access.log;
        error_log  /var/log/nginx/error.log;
        index index.php;
        client_max_body_size 2000M;
        client_body_buffer_size 100M;
        client_header_buffer_size 10M;
        large_client_header_buffers 2 10M;
        client_body_timeout 12;
        client_header_timeout 12;
        keepalive_timeout 15;
        send_timeout 10;
        gzip             on;
        gzip_comp_level  2;
        gzip_min_length  1000;
        gzip_proxied     expired no-cache no-store private auth;
        gzip_types       text/plain application/x-javascript text/xml text/css application/xml;
        set $path_info "";
        location ~ /include {
          deny all;
          return 403;
       if ($request_uri ~ "^/api(/[^?]+)") {
         set $path_info $1;
       location ~ ^/api/(?:tickets|tasks).*$ {
        try_files $uri $uri/ /api/http.php?$query_string;
       if ($request_uri ~ "^/scp/.*.php(/[^?]+)") {
          set $path_info $1;
       location ~ ^/scp/ajax.php/.*$ {
          try_files $uri $uri/ /scp/ajax.php?$query_string;
       location / {
          try_files $uri $uri/ index.php;
       location ~ .php$ {
           fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
           include        fastcgi_params;
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        fastcgi_param  PATH_INFO    $path_info;

Save and close the file, then activate the virtual host with the following command:

sudo ln -s /etc/nginx/sites-available/osticket /etc/nginx/sites-enabled/

Finally, restart the Nginx service:

sudo systemctl restart nginx

Step 6: Access osTicket web interface

Once everything is configured, it’s time to access osTicket web installation wizard.

Open your web browser and type the URL http://your-domain.com, you can see the osTicket installation wizard. Follow each instruction carefully and complete the installation.

Once the installation has completed, remove the setup directory and change the permission of the osTicket config file:

sudo rm -rf /var/www/html/osticket/upload/setup
sudo chmod 0644 /var/www/html/osticket/include/ost-config.php

Congratulations! You have successfully installed osTicket on your Ubuntu 16.04 server.

Need help?

Do you need help setting up this on your own service?
Please contact us and we’ll provide you the best possible quote!