Deployment guide

MantisBT

Overview

MantisBT is a long-established, open-source, web-based issue and bug tracker. It captures bugs and feature requests with custom fields, severities and priorities, and routes them through configurable workflows and projects. It notifies stakeholders by email, and your team can filter issues and save custom views from a clean web dashboard.

This image installs MantisBT 2.28 from the official release, fronted by nginx with PHP 8.3 and backed by a local MariaDB. Everything comes from the Ubuntu 24.04 noble archive, with no third-party APT repositories. The web installer has already been run and removed, and MantisBT's well-known default administrator login has been rotated away. You land directly on the sign-in page.

What you get:

  • MantisBT 2.28.4 from the official release, served from /var/www/mantisbt
  • nginx with the MantisBT vhost at /etc/nginx/sites-available/sac-mantisbt
  • PHP 8.3 with the mysqli, mbstring, gd, curl, intl, xml, soap, zip, bcmath, apcu and opcache extensions
  • MariaDB with the bugtracker database and mantisbt app user on loopback only
  • mantisbt-firstboot.service rotating the MariaDB password, the configuration secret ($g_crypto_master_salt) and the administrator password per instance
  • 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
  • 24/7 SecureAnyCloud support

Prerequisites

  • An active Azure subscription, an SSH key, and a virtual network with a subnet.
  • A VM size of Standard_B2s (2 vCPU, 4 GB RAM) for a small team. Move up to a larger burstable size or a D-series size for busier projects.
  • Ports 80 and 443 open 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.

ssh azureuser@<vm-ip>
4

Verify the services

nginx serves MantisBT on port 80 and passes PHP requests to php8.3-fpm. PHP talks to MariaDB on the loopback interface. Confirm that all three services are running.

sudo systemctl is-active nginx php8.3-fpm mariadb
sudo ss -tlnp | grep ':80 '
5

Read the first boot credentials

On the first boot of your instance, mantisbt-firstboot.service generates a fresh MariaDB password, a fresh $g_crypto_master_salt and a fresh administrator password. All three are unique to this VM. The service writes them to a root-only file. Read it as follows.

sudo systemctl is-active mantisbt-firstboot.service
sudo cat /root/mantisbt-credentials.txt
6

The installed tracker database

The web installer imported the full MantisBT schema and created the administrator account before the image was captured. The default administrator / root login has been rotated to a random per-VM password, so no shared credential ships in the image. Inspect the database as follows.

sudo mariadb -N -B bugtracker -e "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema='bugtracker' AND table_name LIKE 'mantis\_%';"
sudo mariadb -N -B bugtracker -e "SELECT username, access_level, enabled FROM mantis_user_table WHERE access_level=90;"
7

Endpoints and the data disk

The health endpoint, the sign-in page and the index all answer on nginx. The MariaDB data directory lives on the dedicated Azure data disk, off the OS disk. Check both as follows.

curl -s -o /dev/null -w '/healthz -> %{http_code}\n' http://127.0.0.1/healthz
curl -s -o /dev/null -w '/login_page.php -> %{http_code}\n' http://127.0.0.1/login_page.php findmnt -no SOURCE,TARGET,FSTYPE,SIZE /var/lib/mysql
8

Sign in

Browse to http://<vm-ip>/ and sign in as administrator with the password from /root/mantisbt-credentials.txt. MantisBT asks for the username first, then the password.

9

The My View dashboard

After you sign in, you land on My View. It groups the issues assigned to you, unassigned issues and issues you reported, with a timeline of recent activity.

10

Report an issue

Choose Report Issue to file a bug or feature request. Pick a category, set the reproducibility, severity and priority, and describe the issue. If you have not created a project yet, create one first from Manage.

11

View and filter issues

View Issues lists every issue in the current project with its priority, severity, status and assignee. From there you can filter, search, sort and export to CSV or Excel.

12

The base URL

MantisBT builds absolute links (redirects, email notifications and RSS feeds) from $g_path. First boot sets it to http://<your-vm-ip>/.

If you front MantisBT with a domain name or a reverse proxy, or you enable HTTPS, update $g_path in /var/www/mantisbt/config/config_inc.php to match. Then reload nginx.

sudo sed -i "s#\$g_path = 'http://[^']*';#\$g_path = 'https://tracker.example.com/';#" /var/www/mantisbt/config/config_inc.php
sudo systemctl reload php8.3-fpm
13

Components

  • Application: MantisBT 2.28.4 from the official release, at /var/www/mantisbt.
  • Web server: nginx serving PHP through php8.3-fpm over a Unix socket.
  • PHP: 8.3 with mysqli, mbstring, gd, curl, intl, xml, soap, zip, bcmath, apcu and opcache.
  • Database: MariaDB, with the bugtracker database and the mantisbt app user, on loopback only.
  • Data disk: a dedicated Azure data disk mounted at /var/lib/mysql.
  • First boot: mantisbt-firstboot.service rotates the database, configuration secret and administrator passwords.
  • Health check: GET /healthz returns HTTP 200 for Azure Load Balancer probes.
14

Security

  • The default administrator / root login is rotated to a random per-instance password on first boot. The shipped image carries a discarded random value, so no known credential ships.
  • The MariaDB password, the $g_crypto_master_salt and the administrator password are all unique to each VM.
  • MariaDB binds to 127.0.0.1 only. Keep port 3306 closed on the network security group, because nothing outside the VM needs it.
  • Issues, notes and attachments are stored in the database ($g_file_upload_method = DATABASE) on the dedicated data disk.
  • Public self-registration is disabled by default ($g_allow_signup = OFF). Create users from Manage, Manage Users.
  • To enable HTTPS, place a TLS certificate on the instance, or front it with an Azure Application Gateway or Load Balancer. Then update $g_path as in Step 12. SecureAnyCloud support can help.

Licensing

MantisBT is distributed under the GNU General Public License version 2 or later (GPL-2.0-or-later). This image bundles MantisBT unmodified from its official release.

MantisBT is a trademark of its respective owners. This image is not affiliated with, endorsed by, or sponsored by the MantisBT project. SecureAnyCloud packages, configures and supports the image. The MantisBT software remains under its own license.

Deploy on Azure

Launch MantisBT 2.28 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