Deployment guide

osTicket

Overview

osTicket is a 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 SecureAnyCloud image installs osTicket 1.18 from the official release, behind nginx with PHP 8.3 and a local MariaDB. Everything comes from the Ubuntu 24.04 noble archive, with no third-party APT repositories.

What you get:

  • osTicket 1.18.3 from the official release, served from /var/www/osticket
  • nginx with the osTicket vhost at /etc/nginx/sites-available/sac-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, which rotates the MariaDB password, the configuration secret and the administrator password for each instance
  • osticket-cron.timer, which runs 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 starting automatically on boot
  • The web installer already run and removed, so you land directly on the agent sign-in page
  • 24/7 SecureAnyCloud support

Prerequisites

You need 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. For busier helpdesks, move up to a larger burstable size or a D-series size. On the network security group, open ports 80 and 443, plus port 22 for SSH from your management address.

Step 1 to 3: Deploy and connect

ssh azureuser@<vm-ip>
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";'
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 three are unique to that instance. The service writes them to a file that only root can read.

sudo cat /root/osticket-credentials.txt

Note the osticket.admin.user (ostadmin) and the osticket.admin.pass value. The passwords are unique on every instance.

6

The seeded helpdesk

The web installer has already imported the schema and the default data. Departments, help topics, an SLA, agent roles and ticket statuses are in place, and the administrator agent is created and ready. To check the seeded data, run:

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;"
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, separate from the operating system disk. To check the endpoints and the data disk, run:

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

9

The ticket queue

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

10

Working a ticket

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

11

The admin panel

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

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 that email becomes tickets, under Admin Panel, then Emails. Use 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.
13

Components

These are the key components and their locations:

  • osTicket install: /var/www/osticket/
  • Configuration: /var/www/osticket/include/ost-config.php (read-only, mode 0440)
  • nginx vhost: /etc/nginx/sites-available/sac-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)
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. Open ports 80 and 443 only to the addresses that need them, and limit port 22 to your management range.
  • Rotate the administrator password from the agent profile after you sign in, and keep the customer portal registration policy tight.
  • Keep MariaDB on loopback (127.0.0.1). 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 and free to use commercially. SecureAnyCloud provides commercial support separately. Contact sales@secureanycloud.com.

Deploy on Azure

Launch osTicket 1.18 on Ubuntu 24.04 LTS on Azure with 24/7 support from SecureAnyCloud.

View this image

Need Help?

Our support team is available 24/7.

sales@secureanycloud.com

Deploy on Azure