Start a timer on the ticket you are working on and stop it when you are done. The point is to log time as you work instead of reconstructing a week on Friday afternoon. Everything it produces is an ordinary Redmine time entry, so every report, filter and export you already use keeps working — this adds a way to create them and a way to look at them, and stores nothing of its own about time already logged.
On your own Redmine
Requirements
- Redmine 6.0 or newer (Rails 7.2, Ruby 3.1 or newer)
- PostgreSQL 14+, or MySQL 8.0+ / MariaDB 10.6+
- No additional gems
Install
cd /path/to/redmine
cp -r redminepro_timetracker plugins/
RAILS_ENV=production bundle exec rake redmine:plugins:migrate NAME=redminepro_timetracker
# restart Redmine
Standalone behaviour
Identical. No plan gate applies and nothing is capped by tier. The module is a real one and keeps its checkbox in project settings.
There are no background jobs, no scheduler and no polling at any scale: a running timer is one row holding who, which issue and when it started, and elapsed time is always computed from that.
Update and remove
Copy the new directory over the old one, run the migrate command, restart. To remove:
RAILS_ENV=production bundle exec rake redmine:plugins:migrate NAME=redminepro_timetracker VERSION=0
rm -rf plugins/redminepro_timetracker
# restart Redmine
Every logged hour stays. Those are core time entries and were never this feature's to own. Only running timers and unconfirmed drafts go, so stop and confirm before removing it.
Already on RedminePRO Cloud? It is installed and maintained for you: see the configuration guide.

