Znuny
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 SecureAnyCloud image installs Znuny 7.3 from the official release as a Perl application under Apache with mod_perl, backed by a local MariaDB. Everything comes 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 you get:
- Znuny 7.3.5 from the official release, installed at
/opt/znunyand served at/znuny/ - Apache 2 with mod_perl on the prefork MPM (required for Znuny) and the shipped Znuny Apache include
- MariaDB with the
otrsdatabase andotrsapp user on loopback only - The web installer disabled (
SecureMode) so it cannot be re-run znuny-firstboot.servicerotating the MariaDB password and the administrator password per instance- The Znuny background daemon enabled, with
znuny-daemon.timerre-checking the watchdog every 5 minutes - The MariaDB database on a dedicated Azure data disk mounted at
/var/lib/mysql - Apache and MariaDB enabled and starting automatically on boot
- 24/7 SecureAnyCloud support
Prerequisites
Before you deploy, make sure you have:
- An active Azure subscription
- An SSH key
- A VNet with a subnet
Recommended VM size: Standard_B2s (2 vCPU, 4 GB RAM) suits a small help desk team. For busier operations, move up to a larger burstable or a D-series size.
Open ports 80 and 443 on the network security group, plus port 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>Verify the services
Znuny runs on Apache with mod_perl, a local MariaDB and a background daemon. Check that the services are active:
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 -2Read 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. Read the credentials file:
sudo sed -E 's/(pass=).*/\1**** unique per instance ****/' /root/znuny-credentials.txtNote the znuny.admin.user value (root@localhost) and the znuny.admin.pass value. The screenshot below masks the passwords, which are unique on every instance.
The seeded help desk
The schema and the default data are already imported. 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;"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/mysqlSign 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 agent dashboard
After you sign in, you land on the agent dashboard, the core of the help desk. It has 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.
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.
Next steps
- Create your own agents. Znuny recommends that 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. Then 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
otrsdatabase on the dedicated data disk. Back it up withmysqldump, or snapshot the data disk.
For help with any of the above, SecureAnyCloud support is available 24/7 at sales@secureanycloud.com.
Deploy on Azure
Launch Znuny 7.3 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