02 Module · Why Redmine
The tracker that cannot
change its pricing.
Redmine is unfashionable, and that is the entire argument. It has been shipping since 2006, it runs an unlimited number of users on a small virtual machine, and the database is on a disk you own.
- First released
- 2006
- Written in
- Ruby on Rails
- Seat licence
- None
- Licence
- GPL v2
Project trackers are the software companies are least able to leave and least willing to think about — which is exactly why the pricing keeps moving.
Your tracker accumulates the most valuable and least portable asset in the company: the record of why things were decided. Every issue, every argument in the comments, every estimate that turned out to be wrong. After a decade that archive is institutional memory, and it is sitting in somebody else's database.
That is the leverage. It is why per-seat pricing can triple across a renewal cycle and be paid anyway, and why an export feature that technically exists never quite produces something you can import anywhere.
Redmine removes the leverage by removing the landlord. It is a Rails application you run, storing everything in a PostgreSQL database you back up, under a licence nobody can revoke.
Argumenten · The case
Eight reasons,
in order of how often they matter.
Ranked by what comes up in the third year of running it, rather than what wins a bake-off in the first week.
01 There is no seat licence
Add the whole company, every contractor, and the client who wants to watch their own project. The cost of the hundredth user is the same as the tenth, which quietly removes a whole category of procurement conversation.
02 The database is yours
Issues, time entries, wiki and attachments in PostgreSQL you can query, dump, restore and hand to an auditor. Reporting is SQL, not an integration tier.
03 It bends to a regulated process
Custom trackers, custom fields and per-role workflow transitions mean the tool matches an ISO or MDR process instead of fighting it. Most hosted trackers make you adopt their opinion of how work happens.
04 Migrations keep the history
From Jira, Trello or Asana with issue numbers, attachments, authors, timestamps and relations intact. A migration that renumbers everything and drops the comments is not a migration, it is a fresh start with extra steps.
05 It is small
A company-wide tracker runs comfortably on a two-core virtual machine. Not a cluster, not a service mesh — one machine, one database, one nginx, described in a single NixOS module.
06 Time tracking is built in
Hours attach to issues and roll up to projects and versions natively, so the numbers you invoice against and the numbers you plan against come from the same place.
07 A REST API without a plan tier
Everything the interface does, the API does. Dashboards, deployment hooks and a local language model that can answer questions about the backlog — all without your roadmap leaving the building.
08 Twenty years of not going away
Redmine has outlived FogBugz, Rally, Pivotal Tracker and several acquisitions of the trackers that were going to replace it. For the system holding your institutional memory, survivorship is the specification.
Jämförelse · Side by side
Against a hosted tracker
Costs are for a 90-person company, which is roughly the size at which the arithmetic stops being theoretical.
| Concern | Hosted SaaS tracker | Redmine, as we run it |
|---|---|---|
| Cost at 90 users | €1,000–€3,200 / month | ~€40 / month of virtual machine |
| Cost at 900 users | Ten times more | A bigger virtual machine |
| Price changes | At the vendor's discretion | Not applicable |
| Where the data lives | Their region, their entity | Your disk, your jurisdiction |
| Reporting | Built-in charts, then an upgrade | SQL against your own database |
| Workflow customisation | Within the vendor's model | Per tracker, per role, per field |
| API limits | Rate-limited, sometimes tiered | Yours to saturate |
| Backups | Their problem, and their RPO | Nightly, off-site, restore-tested monthly |
| Interface | Modern, and redesigned without warning | Dated, and stable for a decade |
| Who patches it | Them | Us, or you, on your schedule |
Hur vi driftar · Our install
What a Chenborg Redmine actually contains.
Not a default install with a theme on top. The whole system — Ruby version, gems, plugins, database, TLS, backup schedule — is one module in your repository, so rebuilding the server is a command and upgrading is a commit that can be reverted.
- Redmine on NixOS with PostgreSQL, reproducible from a single file
- Migration from Jira, Trello, Asana or an older Redmine with history intact
- SSO against your existing directory, plus enforced 2FA
- Custom trackers, fields and per-role workflows that match your process
- Nightly encrypted backups to a second European region
- Restore tested monthly, with the evidence emailed to you
- Optional local-LLM assistant over the REST API, on your own hardware
# The whole tracker, declared once. services.redmine = { enable = true; package = pkgs.redmine; database.type = "postgresql"; plugins = { inherit (pkgs.redminePlugins) redmine_agile redmine_checklists; }; settings.rest_api_enabled = 1; }; services.postgresqlBackup = { enable = true; databases = [ "redmine" ]; startAt = "02:30"; }; # Restored and verified monthly. # A backup nobody has restored is a rumour.
Ärligt talat · Honestly
When Redmine is the wrong answer.
We would rather lose the engagement than install this somewhere it will be resented. Redmine is the wrong choice when:
- The interface is a hiring issue. It looks like 2009 because it largely is. A design-led team that will judge the company by its tracker will judge this one harshly, and that is a real cost rather than a silly one.
- You want chat, docs, whiteboards and roadmaps in one place. Redmine tracks issues and time. It does not want to be a suite, and the plugins that pretend otherwise are usually a mistake.
- Nobody will own the machine. Self-hosting means somebody patches, monitors and restores. We can do it, but if the answer is "nobody, and no budget for you either", buy the hosted product.
- You are fifteen people and growing fast. The seat licence is not yet the problem, and the operational overhead is not yet worth it. Come back at eighty.
- You need deep native integrations with a specific commercial ecosystem. The API will get you there, but you are building what you would otherwise be buying.
The case is strongest for organisations of eighty or more people, with a regulated or unusual process, a long institutional memory worth keeping, and at least one person who is happy to own a server.