unsubbed.co

MantisBT

MantisBT is a self-hosted customer support & ticketing tool that provides bug tracker, fits for software development.

Self-hosted issue tracking, honestly reviewed. No marketing fluff, just what you get when you self-host it.

TL;DR

  • What it is: Open-source (GPL) web-based bug and issue tracker, first released in November 2000. Written in PHP, runs on MySQL, PostgreSQL, or MS SQL [3].
  • Who it’s for: Small development teams and founders who need structured issue tracking without per-seat SaaS pricing — especially teams already running LAMP/LEMP stacks [1][3].
  • Cost savings: Jira Software runs $7.75/user/month (Standard) scaling to $15.25/user/month (Premium). MantisBT is $0 in licensing on a $5–10/mo VPS. A 10-person team saves $930–$1,830/year at minimum.
  • Key strength: 24 years of production hardening. Every workflow edge case you can imagine has a config knob. LDAP, custom fields, custom statuses, custom workflows — all in the free version with no tier gating [1][3].
  • Key weakness: The UI looks like 2008, because a lot of it is 2008. Modern teams accustomed to Linear or GitHub Issues will feel friction immediately. This is a tool built by and for developers who consider “functional” a sufficient design target [website].

What is MantisBT

MantisBT is a web-based bug tracking system that was first made available to the public in November 2000 [3]. That’s not a typo. While Jira was founded in 2002 and Linear launched in 2020, MantisBT was already in production use when PHP 4 was current. The name comes from the praying mantis insect — bugs are its natural prey — with “BT” standing for Bug Tracker [3].

It’s written in PHP and supports MySQL, PostgreSQL, and MS SQL as backends. It runs on any operating system that supports PHP: Linux, Windows, macOS, historically even OS/2 [3]. The codebase is released under the GNU General Public License (GPL), which means genuinely free to use, modify, and redistribute — no commercial license agreements, no “Community Edition” feature caps, no audit log paywalls [1][3].

The project is maintained by a volunteer development team and distributed on SourceForge and GitHub. It currently sits at 1,754 GitHub stars — a number that undersells its actual install base given that most installations were set up before GitHub stars became a proxy for tool adoption. The press page on the MantisBT wiki [2] lists reviews going back to 2003, including a Linux Journal Editor’s Choice Award in 2006 and coverage in TechRepublic, Linux.com, and Mashable.

What MantisBT actually does: you file bugs (called “issues”), assign them to people, move them through statuses, leave notes, attach files, and get email notifications. That description sounds trivially simple. The configuration surface underneath it is not trivially simple — there are over 40 configuration sections in the admin guide covering everything from DKIM email signing to relationship graphs to sponsorship systems [1].


Why people choose it

The short answer from the press record [2] is: it was the best free option for a long time, and for certain teams it still is.

The 2008 Linux.com review titled “Set Mantis to track your bugs” and the 2008 TechRepublic Product Spotlight [2] both land in the same place that the website’s user quotes echo decades later. John Zastrow of Tetra Tech: “We’ve come to respect mantis for its powerful simplicity and I go around recommending it to friends and clients alike.” John Locke of Freelock Computing: “Great product! We tried 6 different issue trackers before settling on Mantis.” [website]

The pattern in the press history [2] is consistent: teams evaluate Bugzilla, Trac, and a handful of others, find them either too complex or too limited, and land on MantisBT as the middle ground. Notably, that evaluation cycle was happening when Jira was young and expensive, and before GitHub Issues existed as a serious product. That historical positioning matters because MantisBT’s feature set was shaped by solving real pain points that many modern tools now solve differently.

Versus Jira. Jira is the category incumbent. It’s also expensive at scale, opaque in its data model, and practically impossible to self-host without dedicated ops effort (Jira Data Center requires a paid license and significant infrastructure). MantisBT is GPL, runs on a shared host with a PHP stack, and has zero per-seat cost. For teams that need structured issue tracking but can’t justify $15/user/month, the math is straightforward [3].

Versus GitHub Issues / GitLab Issues. GitHub Issues is free with your repository and integrates natively with pull requests. If your team is already on GitHub and your issues are primarily code-related, MantisBT offers little that GitHub Issues doesn’t. Where MantisBT wins is when you need client-facing access, separate project spaces, or issue tracking that isn’t tied to a single code host. The built-in role hierarchy (viewer, reporter, updater, developer, manager, administrator) gives finer control than GitHub’s “read/write/admin” model [1].

Versus Linear. Linear is the modern challenger: beautiful, fast, opinionated, $8/user/month. It has no self-hosted option. If data sovereignty matters or if $8/seat/month is the problem, Linear is not the answer. MantisBT’s UI will disappoint anyone who’s used Linear, but the data stays on your server and the bill stays at $0 [3].

Versus Redmine. The most honest direct comparison. Both are GPL, both are PHP (Redmine is Ruby), both are old, both are functional. Redmine has Gantt charts and time tracking built in with a slightly more modern feel. MantisBT has more granular workflow configuration and historically better documentation. Neither is winning design awards in 2026. Pick based on which your sysadmin is more comfortable supporting.


Features

Based on the administration guide [1][3] and official documentation:

Core issue tracking:

  • Issue creation with priority, severity, reproducibility, and status [1]
  • Configurable status workflow with transitions and thresholds — you define which roles can move issues between which statuses [1]
  • Relationships between issues: parent/child, duplicate, related, blocks/blocked-by [1]
  • Custom fields — per-project, multiple types (text, numeric, list, date, email, checkbox, radio) with dynamic defaults and dynamic enumeration values [1]
  • File attachments per issue with configurable size limits [1]
  • Bugnotes (comments) with private/public visibility control [1]

Access control:

  • Six built-in access levels: viewer, reporter, updater, developer, manager, administrator [1]
  • Per-project role assignment — a user can be developer in one project and reporter in another [1]
  • Public and private issue visibility per project [1]
  • “Limit reporters” mode for client-facing projects where reporters can only see their own issues [1]

Notifications:

  • Configurable email notifications per event type per access level [1]
  • DKIM and S/MIME email signing support [1]
  • Reminders — assign a reminder to another user on an issue [1]

Authentication:

  • Standard (built-in), LDAP, Microsoft Active Directory, HTTP Basic, HTTP authentication [1]
  • Auto-creation of accounts on first LDAP login [1]
  • API tokens per user for REST API access [1]

Developer and integration features:

  • REST API (current releases) [merged profile][1]
  • Sub-projects for nested project hierarchies [1]
  • Wiki integration (configures a link to an external wiki) [1]
  • Relationship graphs (visual dependency maps) [1]
  • Time tracking per issue [1]
  • Roadmap and changelog views [5]
  • Sponsorship system (users can sponsor issues to signal priority) [1]

Customization:

  • Custom strings and translations for any UI label [1]
  • Custom functions for overriding default behaviors in PHP [1]
  • Custom statuses with configurable colors and thresholds [1]
  • $g_top_include_page and $g_bottom_include_page for injecting content on every page [3]

What’s missing compared to modern tools:

  • No native Git/GitHub integration for automatic issue transitions on commit/PR
  • No Kanban board in the default install (available via third-party plugins)
  • No API for creating custom automations at the level of Jira’s ScriptRunner
  • No mobile app

Pricing: SaaS vs self-hosted math

MantisBT has no SaaS pricing of its own in the traditional sense. The website mentions a “Hosting” option [website], but specifics aren’t published in any of the available source data.

The relevant comparison is what MantisBT replaces:

Jira Software (Atlassian Cloud):

  • Free: up to 10 users
  • Standard: $7.75/user/month (billed annually)
  • Premium: $15.25/user/month (billed annually)
  • A 15-person team on Standard: $116.25/month, $1,395/year
  • A 15-person team on Premium: $228.75/month, $2,745/year

Linear:

  • Free: up to 250 issues per month
  • Basic: $8/user/month
  • Business: $16/user/month
  • A 15-person team on Business: $240/month, $2,880/year

MantisBT self-hosted:

  • Software license: $0 (GPL) [3]
  • VPS: $5–10/month on Hetzner, Contabo, or DigitalOcean for a small team
  • Your time to deploy and maintain it

Concrete math for a 15-person team over one year:

  • Jira Standard: $1,395
  • Linear Business: $2,880
  • MantisBT self-hosted: ~$72–$120 VPS + setup time
  • Annual savings vs Jira: $1,275–$1,323. Vs Linear: $2,760–$2,808.

The catch is that MantisBT requires someone to install it, configure it, and keep it updated. If that person’s time is worth $100/hour and setup takes 4 hours, the first-year cost is $472–$520. Still well below Jira at $1,395. By year two, it’s just the VPS.


Deployment reality check

The README and admin guide [1][3] are unusually complete for an open-source project, which is a signal that the project takes administration seriously.

What you need:

  • A web server (Apache or IIS recommended; nginx with PHP-FPM works fine in practice)
  • PHP 7.4.0+ [3]
  • MySQL 5.5.35+, PostgreSQL 9.2+, or MS SQL [3]
  • At minimum 256MB RAM for a small team (the admin guide doesn’t specify, but PHP+MySQL on shared hosting runs fine); 1GB+ recommended for comfort
  • A domain and SSL certificate if running anything beyond localhost

What the install actually looks like:

  1. Download the tarball, extract into your web root
  2. Navigate to /admin/check/index.php to verify your environment
  3. Navigate to /admin/install.php, enter database credentials, click install
  4. Copy config/config_inc.php.sample to config/config_inc.php and customize
  5. Remove the admin/ directory — this is explicitly required and documented [3]

There’s no Docker Compose file in the README, which is conspicuously different from every modern self-hosted tool. MantisBT predates containerization and the install path assumes a traditional LAMP stack. Docker images exist on Docker Hub as community contributions, but they’re not official and not documented in the README.

What can go sideways:

  • The upgrade process requires extracting to a clean directory rather than overwriting in place — files have moved between releases [3]. If you’ve customized any core files instead of using the override system, upgrades become painful.
  • Configuration lives in PHP files (config_inc.php), not .env or YAML. This is fine once you accept it, but it’s unexpected if you’re used to modern tooling.
  • The admin guide warns explicitly: “Remove the admin directory from within the MantisBT installation path. The scripts within this directory should not be accessible on a live MantisBT site.” [3] This is a real security issue if missed.
  • Email configuration requires correct SMTP setup for notifications to work. The system is heavily email-dependent — workflow updates, issue assignments, reminders all route through email [1].
  • No official SSL handling — you configure that at the web server level, which is standard but adds a step for non-technical setups.

Realistic time estimate: 1–2 hours for a developer comfortable with LAMP stacks. Half a day for someone following documentation carefully without prior PHP/MySQL experience. Docker-based deployment adds complexity rather than reducing it because the official path doesn’t use Docker.


Pros and Cons

Pros

  • Genuinely GPL-licensed. No feature caps between tiers, no commercial license for LDAP or SSO, no audit log paywalls. The fully-featured product is the free product [1][3].
  • 24 years of production hardening. The workflow system, edge cases in role permissions, notification reliability — these have been debugged against real-world usage since 2000. That matters more than star counts [3].
  • Granular access control without paying. Six access levels, per-project role assignment, public/private issue visibility, limited-reporter mode for client projects — all in the free version [1].
  • Deep customization. Custom fields, custom statuses, custom workflow transitions, custom email templates, custom PHP functions for overriding default behavior. The configuration surface is enormous [1].
  • LDAP and Active Directory out of the box. No enterprise license required. For teams already on AD, user provisioning is straightforward [1].
  • REST API included in current releases, with per-user API tokens [1][merged profile].
  • Runs on minimal hardware. Traditional PHP/MySQL stack means it runs on a $5 VPS, shared hosting, or a Raspberry Pi without container overhead.
  • Complete admin documentation. The admin guide [1][3] covers installation, upgrade, configuration, customization, and troubleshooting in exhaustive detail. This is rarer than it should be.

Cons

  • The UI is dated. The website’s own screenshots show a functional but visually 2010-era interface. The press record mentions a “completely revised interface” for version 2.0 in 2016 [2], but that revision hasn’t kept pace with the visual standards modern teams expect. Anyone coming from Linear or Jira’s current UI will feel friction.
  • No official Docker support. The install path assumes a traditional LAMP stack. For teams that standardize on containers, this is an obstacle [3].
  • Low GitHub activity signal. 1,754 stars is modest for a tool in this category in 2026, though this reflects the era in which MantisBT built its user base more than its actual install count. The press page hasn’t listed a new review since 2024 [2].
  • No native Git integration. There’s no equivalent to GitHub Issues’ automatic closure via commit messages, no webhook-based PR linking. You can add external links manually, but the integration isn’t automatic [3].
  • No Kanban view in core. The default views are list-based. A Kanban board requires third-party plugins from the addons page, which varies in quality and maintenance status [website].
  • PHP file-based config. Every configuration change means editing a PHP file. This is manageable but hostile to infrastructure-as-code workflows. No docker-compose.yml with environment variables [3].
  • Email-heavy workflow. The system is designed around email notifications. Teams that prefer Slack/Teams-based notification patterns will need to build their own webhook bridges or use third-party addons.
  • No mobile app. The interface is responsive in recent versions, but there’s no dedicated mobile application.

Who should use this / who shouldn’t

Use MantisBT if:

  • You’re running a development team paying $7–$15/user/month for Jira and you want to eliminate that line item.
  • You need LDAP or Active Directory integration without a commercial license.
  • You want fine-grained access control for client-facing issue tracking — reporters who can only see their own issues, per-project role assignments.
  • You’re already comfortable managing a LAMP/LEMP stack and aren’t allergic to PHP config files.
  • You want 24 years of production stability over cutting-edge UX.
  • You’re self-hosting other tools and can add MantisBT to an existing PHP/MySQL host at essentially no additional cost.

Skip it (use GitHub Issues or GitLab Issues) if:

  • Your issues are tightly coupled to code in a GitHub or GitLab repository. Native integration beats any external tracker for developer workflows.
  • Your team is small and comfortable with the free tiers on those platforms.

Skip it (use Linear) if:

  • UI quality and developer experience matter more than cost and data sovereignty.
  • Your team is willing to pay $8–$16/user/month for a substantially better interface and workflow experience.
  • You don’t need self-hosting.

Skip it (use Redmine) if:

  • You need built-in Gantt charts and project scheduling features alongside bug tracking.
  • Your team is more comfortable with Ruby stacks than PHP stacks.

Skip it (stay on Jira) if:

  • You need deep integration with Confluence, Bitbucket, or other Atlassian products.
  • Your compliance team requires SOC 2 or ISO 27001 certified infrastructure and won’t approve self-hosted.
  • You need Jira Service Management’s customer portal features.

Alternatives worth considering

  • Redmine — GPL, Ruby on Rails, similar era and philosophy to MantisBT. Slightly more modern UI, built-in Gantt and time tracking, large plugin ecosystem. The most direct alternative.
  • Bugzilla — Mozilla’s tracker, also GPL, also old. More powerful but significantly more complex to administer. Unless you need Bugzilla-specific features, MantisBT is easier.
  • GitLab Issues — Free with GitLab Community Edition (self-hostable). Modern UI, native CI/CD integration, Kanban board included. The better choice if your code is already on GitLab.
  • Plane — Modern open-source Jira alternative (AGPL), React frontend, Kanban/Scrum views. Much newer (2022), cleaner UI than MantisBT, but less proven at scale. Docker-first.
  • Linear — Closed-source SaaS, $8/user/month starting. The current gold standard for developer UX in this category. No self-host option.
  • Jira Software — The category incumbent. Free up to 10 users, then $7.75/user/month. Self-hosted version (Data Center) requires a paid license.

For a non-technical founder escaping SaaS fees with a technical person available to set things up, the realistic shortlist is MantisBT vs Plane vs Redmine. MantisBT if stability and GPL and deep configuration matter. Plane if you want a modern UI and are comfortable with a younger codebase. Redmine if you need Gantt charts.


Bottom line

MantisBT is the bug tracker that survived everything. It predates Jira, predates GitHub, and predates the modern SaaS era. Its longevity is both its strongest and weakest signal: strongest because 24 years of production use have beaten out nearly every edge case in bug-tracking workflows; weakest because the interface reflects the era in which those workflows were built. The GPL license with no feature tiering is genuine and meaningful — LDAP, custom workflows, REST API, granular access control are all in the free version, which is more than most modern “open source” tools can say. For a small development team tired of paying $1,000–$2,000/year for Jira and willing to run a PHP app on a cheap VPS, the math and the stability are both there. If you need a modern UI, pick Plane or Linear instead. If you need a workhorse that will be running the same way in five years, MantisBT has a track record no newer project can match.

If the setup is the blocker, that’s exactly what upready.dev deploys for clients — one-time fee, done, you own the infrastructure.


Sources

  1. MantisBT Admin Guide (current) — mantisbt.org. https://mantisbt.org/manual/
  2. Mantis Reviews and Press [MantisBT Wiki] — mantisbt.org. https://mantisbt.org/wiki/doku.php/mantisbt:press
  3. MantisBT Admin Guide (master, single-page) — mantisbt.org. https://mantisbt.org/docs/master/en-US/Admin_Guide/html-single-plain/
  4. MantisBT Admin Guide (1.3.x, single-page) — mantisbt.org. https://mantisbt.org/docs/master-1.3.x/en-US/Admin_Guide/html-single-plain/
  5. MantisBT Admin Guide (1.3.x, desktop) — mantisbt.org. https://mantisbt.org/docs/master-1.3.x/en-US/Admin_Guide/html-desktop/

Primary sources:

Features

Integrations & APIs

  • REST API