How to Install and Configure Redmine on Ubuntu (Complete Project Management & Usage Guide)
Last Updated: July 11th, 2026
This comprehensive tutorial shows you how to install, configure, secure, and effectively use Redmine on an Ubuntu server. Redmine is a flexible, open-source project management web application written using the Ruby on Rails framework. It features multi-project support, issue tracking, calendar/Gantt charts, time tracking, and a built-in wiki, making it an exceptional enterprise-grade tool for managing complex workflows.
What Is Redmine?
Redmine is a mature project management platform that rivals commercial tools like Jira or Asana while giving you complete ownership of your data. It allows teams to organize tasks, manage sub-projects, track individual hours spent on features, and collaborate through wikis and integrated issue boards. Self-hosting Redmine ensures complete data sovereignty and flexible customization options via its vast ecosystem of plugins.
Redmine Features
- Flexible Issue Tracking System: Custom trackers, statuses, priorities, and custom fields with a flexible workflow control matrix.
- Gantt Chart & Calendar: Visual project timelines and scheduling visibility out-of-the-box.
- Time Tracking & Reporting: Log spent hours per issue, activity, or project member with custom billing rates.
- Per-Project Wiki & Documents: Built-in documentation management and knowledge bases for each sub-project.
- Role-Based Access Control: Fine-grained permissions for administrators, managers, developers, and anonymous guests.
Requirements & Prerequisites
You will need an Ubuntu server (22.04 or 24.04 LTS) with root or sudo administrative privileges, a database server (MariaDB or PostgreSQL), a web/application server configuration (Nginx with Phusion Passenger), and Ruby installed.
Step 1: Install System Dependencies and MariaDB
Update your package lists and install build prerequisites, image tools, and the MariaDB server backend:
sudo apt update
sudo apt install -y curl mariadb-server libmariadb-dev build-essential libssl-dev libreadline-dev zlib1g-dev imagemagick libmagickwand-dev
Log into MariaDB to provision your dedicated database and user credentials:
sudo mysql
CREATE DATABASE redminedb CHARACTER SET utf8mb4;
CREATE USER 'redmineuser'@'localhost' IDENTIFIED BY 'SuperSecureDBPassword123';
GRANT ALL PRIVILEGES ON redminedb.* TO 'redmineuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Step 2: Download and Configure Redmine
Create a dedicated system user and install Redmine from the stable release source files into /opt/redmine:
sudo useradd -r -m -d /opt/redmine -s /bin/bash redmine
cd /opt/redmine
sudo curl -L https://www.redmine.org/releases/redmine-5.1.2.tar.gz | sudo tar xz --strip-components=1
Copy the database configuration template and insert your MariaDB database credentials:
sudo cp config/database.yml.example config/database.yml
sudo nano config/database.yml
Adjust the production database block as follows:
production:
adapter: mysql2
database: redminedb
host: localhost
username: redmineuser
password: "SuperSecureDBPassword123"
encoding: utf8mb4
Step 3: Install Ruby, Bundler, and Migrate Database
Install Ruby and bundler dependencies to initialize the application framework:
sudo apt install -y ruby-full ruby-bundler
sudo chown -R redmine:redmine /opt/redmine
sudo su - redmine -c "cd /opt/redmine && bundle config set --local path 'vendor/bundle' && bundle install"
sudo su - redmine -c "cd /opt/redmine && bundle exec rake generate_secret_token"
sudo su - redmine -c "cd /opt/redmine && RAILS_ENV=production bundle exec rake db:migrate"
sudo su - redmine -c "cd /opt/redmine && RAILS_ENV=production REDMINE_LANG=en bundle exec rake redmine:load_default_data"
Step 4: Configure Nginx and Phusion Passenger
Install Nginx and the Passenger module to run Redmine as a production service:
sudo apt install -y nginx libnginx-mod-http-passenger
sudo nano /etc/nginx/conf.d/redmine.conf
Add the following server block configuration (replace redmine.example.com with your domain):
server {
listen 80;
server_name redmine.example.com;
root /opt/redmine/public;
passenger_enabled on;
passenger_user redmine;
passenger_ruby /usr/bin/ruby;
client_max_body_size 20m;
}
Test the syntax and restart Nginx:
sudo nginx -t
sudo systemctl restart nginx
Step 5: Secure with Let’s Encrypt HTTPS
Secure your deployment using Certbot:
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx --agree-tos --redirect --email [email protected] -d redmine.example.com
Step 6: Using Redmine Inside the Application
Open your browser, navigate to https://redmine.example.com, and log in using the default initial credentials: username admin and password admin. You will be immediately forced to update your administrator password.
- Creating a Project: Click on the **Projects** tab at the top, then click **+ New project**. Input the project name, description, identifier, and select whether it inherits properties from a parent project. Click **Create**.
- Adding Issues and Tasks: Inside your newly created project, navigate to the **New issue** tab. Select a tracker (Bug, Feature, Support), set the priority, assign it to a team member, and provide descriptive details and attachments.
- Logging Time: Go to the **Log time** section on any issue or project page to record hours spent, choose an activity type (Design, Development, Testing), and submit your entries for accurate project tracking and reporting.