Applications Azure

Znuny 7.3 on Ubuntu 24.04 on Azure User Guide

| Product: Znuny 7.3 on Ubuntu 24.04 LTS on Azure

Overview

Znuny is the actively maintained free and open source web based ticketing system for customer service, help desk and IT service management, and the community successor to OTRS. It turns inbound email and web requests into tickets, routes them into queues, assigns them to agents and teams, enforces SLAs and escalations, and gives customers a self service portal. The cloudimg image installs Znuny 7.3 from the official release as a Perl application under Apache with mod_perl, backed by a local MariaDB, all from the Ubuntu 24.04 noble archive with no third party APT repositories. The web installer is disabled, so you land directly on the agent sign in page with a ready to use help desk.

What is included:

  • Znuny 7.3.5 from the official release, installed at /opt/znuny and served at /znuny/
  • Apache 2 with mod_perl on the prefork MPM (required for Znuny) and the shipped Znuny Apache include
  • MariaDB with the otrs database and otrs app user on loopback only
  • The web installer disabled (SecureMode) so it cannot be re-run
  • znuny-firstboot.service rotating the MariaDB password and the administrator password per instance
  • The Znuny background daemon enabled, watchdog re-checked every 5 minutes by znuny-daemon.timer
  • The MariaDB database on a dedicated Azure data disk mounted at /var/lib/mysql
  • Apache 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 help desk team; move up to a larger burstable or a D series size for busier operations. 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

Deploy the image from the Azure Marketplace, then connect over SSH as azureuser.

ssh azureuser@<vm-ip>

Step 4: Verify the services

Znuny runs on Apache with mod_perl, a local MariaDB, and a background daemon.

sudo systemctl is-active apache2 mariadb
sudo ss -tlnp | grep ':80 '
apache2ctl -M 2>/dev/null | grep -E 'perl|mpm'
sudo su -s /bin/bash znuny -c '/opt/znuny/bin/otrs.Daemon.pl status' | tail -2

Apache and MariaDB both active, Apache listening on port 80 with the prefork MPM and mod_perl loaded, and the Znuny daemon reporting running

Step 5: Read the first boot credentials

On the first boot of your instance, a one shot service generates a fresh MariaDB password and a fresh administrator password, both unique to that instance, and writes them to a root only file. The upstream default root@localhost / root login never survives into your instance.

sudo sed -E 's/(pass=).*/\1**** unique per instance ****/' /root/znuny-credentials.txt

Note the znuny.admin.user (root@localhost) and the znuny.admin.pass value. The screenshot below masks the passwords, which are unique on every instance.

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

Step 6: The seeded help desk

The schema and the default data are already imported, so queues, agent groups, ticket states and priorities are all in place, and the administrator agent is created and ready.

sudo mariadb -N otrs -e "SELECT 'agents(users)',COUNT(*) FROM users UNION ALL SELECT 'queues',COUNT(*) FROM queue UNION ALL SELECT 'ticket states',COUNT(*) FROM ticket_state UNION ALL SELECT 'priorities',COUNT(*) FROM ticket_priority UNION ALL SELECT 'agent groups',COUNT(*) FROM permission_groups;"

The Znuny database showing the administrator agent, the seeded queues, ticket states, priorities and agent groups, with the system configuration deployed

Step 7: Endpoints and the data disk

Apache serves an unauthenticated health endpoint for load balancer probes and the agent interface at /znuny/index.pl. The MariaDB database lives on a dedicated data disk, kept separate from the operating system disk, and is bound to loopback only.

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

The health endpoint and the agent interface both returning HTTP 200 and the MariaDB datadir mounted on the dedicated ext4 data disk

Step 8: Sign in to the agent interface

Browse to http://<vm-ip>/znuny/index.pl and sign in as root@localhost with the password from Step 5.

The Znuny agent sign in page served on first boot, with the Znuny branding and the username and password fields

Step 9: The agent dashboard

After signing in you land on the agent dashboard, the core of the help desk, with widgets for reminder, escalated, new and open tickets, a seven day statistics chart, and your recently changed tickets. A welcome ticket is seeded so the queues are populated from the first login.

The Znuny agent dashboard showing the reminder, escalated, new and open ticket widgets, the seven day created and closed chart, and a seeded welcome ticket in the new tickets queue

Step 10: Create a ticket

Open Tickets → New phone ticket to raise a ticket on behalf of a customer. The queue, state and priority selectors are populated from the seeded configuration, so you can route and prioritise straight away.

The Znuny create new phone ticket form with the customer, team, ticket data and communications sections, and the queue, state (open) and priority (3 normal) selectors populated from the seeded configuration

Next steps

  • Create your own agents. Znuny recommends you do not work as the superuser root@localhost. Open Admin → Agents to create named agent accounts and assign them to groups and queues.
  • Configure email. Open Admin → PostMaster Mail Accounts to fetch inbound mail into queues, and Admin → Sysconfig to set the outbound mail settings, so requests become tickets and replies reach customers. The Znuny daemon processes email and escalations in the background.
  • Set up queues, SLAs and escalations. Open Admin → Queues and Admin → SLAs to model your teams and response targets.
  • Enable HTTPS. Front Apache with a TLS certificate for your own domain (for example with Certbot), then browse over https://.
  • Back up the database. All help desk data lives in the MariaDB otrs database on the dedicated data disk; back it up with mysqldump or snapshot the data disk.

For help with any of the above, cloudimg support is available 24/7 at support@cloudimg.co.uk.