Applications Azure

osTicket 1.18 on Ubuntu 24.04 on Azure User Guide

| Product: osTicket 1.18 on Ubuntu 24.04 LTS on Azure

Overview

osTicket is the widely used open source support ticketing and helpdesk system. It routes inbound email and web tickets into queues, assigns them to agents and teams, enforces SLAs, and lets your team reply with canned responses from a clean agent control panel. The cloudimg image installs osTicket 1.18 from the official release, fronted by nginx with PHP 8.3 and backed by a local MariaDB, all from the Ubuntu 24.04 noble archive with no third party APT repositories. The web installer has already been run and removed, so you land directly on the agent sign in page.

What is included:

  • osTicket 1.18.3 from the official release, served from /var/www/osticket
  • nginx with the osTicket vhost at /etc/nginx/sites-available/cloudimg-osticket
  • PHP 8.3 with the mysqli, imap, gd, intl, mbstring, xml, apcu, opcache, bcmath, curl and zip extensions
  • MariaDB with the osticket database and osticket app user on loopback only
  • osticket-firstboot.service rotating the MariaDB password, the configuration secret and the administrator password per instance
  • osticket-cron.timer running the osTicket cron every minute for queued tasks and email fetch
  • The MariaDB database on a dedicated Azure data disk mounted at /var/lib/mysql
  • nginx, php8.3-fpm and mariadb enabled and auto starting on boot
  • 24/7 cloudimg support

Prerequisites

An active Azure subscription, an SSH key, and a VNet with a subnet. Standard_B2s (2 vCPU, 4 GB RAM) suits a small helpdesk team; move up to a larger burstable or a D series size for busier helpdesks. Open ports 80 and 443 on the network security group, plus 22 for SSH from your management address.

Step 1 to 3: Deploy and connect

ssh azureuser@<vm-ip>

Step 4: Verify the services

sudo systemctl is-active nginx php8.3-fpm mariadb
sudo ss -tlnp | grep ':80 '
php -r 'echo "php ".PHP_VERSION."\n";'

nginx, php8.3-fpm and mariadb all active, nginx listening on port 80, PHP 8.3.x, MariaDB 10.11.x

Step 5: Read the first boot credentials

On the first boot of your instance, a one shot service generates a fresh MariaDB password, a fresh configuration secret and a fresh administrator password, all unique to that instance, and writes them to a root only file.

sudo cat /root/osticket-credentials.txt

Note the osticket.admin.user (ostadmin) and the osticket.admin.pass value. The screenshot below masks the passwords, which are unique on every instance.

The osticket-firstboot service reporting active and the root only credentials file listing the agent URL, the ostadmin user and the per instance passwords, masked in this capture

Step 6: The seeded helpdesk

The web installer has already imported the schema and the default data, so departments, help topics, an SLA, agent roles and ticket statuses are all in place, with the administrator agent created and ready.

sudo mariadb -N osticket -e "SELECT 'help_topics', COUNT(*) FROM ost_help_topic UNION ALL SELECT 'departments', COUNT(*) FROM ost_department UNION ALL SELECT 'agents', COUNT(*) FROM ost_staff;"

The osTicket database showing four help topics, three departments, one SLA, four roles, five ticket statuses and the ostadmin administrator agent, with the schema signature present

Step 7: Endpoints and the data disk

nginx serves an unauthenticated health endpoint for load balancer probes, the agent control panel at /scp/ and the customer portal at /. The MariaDB database lives on a dedicated data disk, kept separate from the operating system disk.

curl -s -o /dev/null -w 'healthz %{http_code}\n' http://127.0.0.1/healthz
curl -s -o /dev/null -w 'agent   %{http_code}\n' http://127.0.0.1/scp/login.php
sudo findmnt -no SOURCE,TARGET,FSTYPE /var/lib/mysql

The health endpoint, the agent sign in page and the customer portal all returning HTTP 200, the MariaDB datadir mounted on the dedicated ext4 data disk, and MariaDB bound to loopback only

Step 8: Sign in to the agent control panel

Browse to http://<vm-ip>/scp/ and sign in as ostadmin with the password from Step 5.

The osTicket agent sign in page served on first boot, branded cloudimg Helpdesk

Step 9: The ticket queue

After signing in you land on the open ticket queue, the core of the helpdesk, listing each ticket with its number, subject, sender, priority and assignee.

The osTicket agent control panel showing the open ticket queue with several tickets, their subjects, senders and priorities

Step 10: Working a ticket

Open a ticket to read the customer message thread and reply. The reply editor supports canned responses, rich text, internal notes and file attachments, and you can set the department, status and assignee from the same view.

An individual osTicket ticket showing the customer message thread and the reply editor with canned responses, recipients and rich text controls

Step 11: The admin panel

The admin panel is where you configure departments, help topics, SLAs, email and agents. The System Settings page confirms the running osTicket version and your helpdesk name.

The osTicket admin panel System Settings and Preferences page for osTicket version 1.18.3, showing the helpdesk name and general settings

Step 12: Email and queues

  • Departments and help topics: create the queues that inbound tickets route into under Admin Panel then Manage.
  • Inbound email: connect a mailbox so email becomes tickets under Admin Panel then Emails, using IMAP fetch or a piped mailbox.
  • Agents and teams: add agents and set their roles and permissions under the Agents tab.
  • Canned responses and knowledge base: write canned replies and publish knowledge base articles for the customer portal.

Step 13: Components

Component Path
osTicket install /var/www/osticket/
Configuration /var/www/osticket/include/ost-config.php (read only, mode 0440)
nginx vhost /etc/nginx/sites-available/cloudimg-osticket
nginx logs /var/log/nginx/
MariaDB data /var/lib/mysql/ (dedicated data disk)
First boot script /usr/local/sbin/osticket-firstboot.sh
Cron timer osticket-cron.timer (queued tasks and email fetch every minute)
Credentials /root/osticket-credentials.txt (mode 0600 root:root)

Step 14: Security

  • HTTPS: install certbot and obtain a Let's Encrypt certificate, then follow the nginx prompts: sudo apt-get install -y certbot python3-certbot-nginx && sudo certbot --nginx
  • Restrict the network security group so port 80 and 443 are open only to the addresses that need them, and keep port 22 limited to your management range.
  • Rotate the administrator password from the agent profile once you have signed in, and keep the customer portal registration policy tight.
  • The MariaDB database stays on loopback (127.0.0.1) and the network security group never opens port 3306.
  • Patch monthly: sudo apt-get update && sudo apt-get upgrade && sudo reboot

Licensing

osTicket is GPL 2.0, free to use commercially. cloudimg provides commercial support separately. Contact support@cloudimg.co.uk.