Share on Social Media

Learn how to install Redmine on RHEL 8 with this step-by-step guide. Follow our detailed instructions to set up Redmine, a powerful project management tool, on your Red Hat Enterprise Linux 8 server. #centlinux #linux #redmine

What is Redmine?

Redmine is an open-source project management and issue tracking tool. It is web-based and provides a flexible and feature-rich environment for managing projects. Key features of Redmine include:

  1. Project Management: Support for multiple projects, each with its own set of features.
  2. Issue Tracking: Comprehensive issue tracking capabilities to manage bugs, tasks, and features.
  3. Gantt Charts and Calendars: Visual tools to track project timelines and schedules.
  4. Time Tracking: Allows users to log time spent on various tasks and projects.
  5. Customizable Workflows: Adaptable workflows to suit different project needs and processes.
  6. User Roles and Permissions: Granular control over user access and permissions.
  7. News, Documents, and Files Management: A central place to store and share project-related information.
  8. Wikis and Forums: Collaborative tools to enhance team communication and documentation.
  9. Integrations: Supports integration with various version control systems (e.g., Git, SVN) and other tools.

Redmine is written using the Ruby on Rails framework. It is cross-platform and cross-database and supports 49 languages.

Redmine is highly customizable and extensible, allowing users to tailor it to their specific needs through plugins and themes. Its versatility makes it suitable for a wide range of industries and project types.

Redmine vs Jira

Redmine and Jira are both powerful project management and issue tracking tools, but they have distinct differences in terms of features, usability, pricing, and target audience. Here’s a detailed comparison:



  • Open-source: Free to use and modify.
  • Multiple Projects: Supports multiple projects with a wide range of features.
  • Issue Tracking: Comprehensive issue tracking with customizable fields and workflows.
  • Gantt Charts and Calendars: Built-in tools for visualizing project timelines.
  • Time Tracking: Allows users to log time spent on tasks.
  • Customizable: Highly customizable through plugins and themes.
  • Wikis and Forums: Integrated wikis and forums for collaboration.
  • Integration: Supports integration with various version control systems like Git, SVN.


  • Commercial Software: Paid plans with a free tier for small teams.
  • Agile Project Management: Strong support for Scrum, Kanban, and other Agile methodologies.
  • Issue Tracking: Advanced issue tracking with detailed reporting and customizable workflows.
  • Roadmaps and Backlogs: Tools for long-term planning and backlog management.
  • Automation: Powerful automation rules to streamline repetitive tasks.
  • Integrations: Extensive integrations with other Atlassian products (e.g., Confluence, Bitbucket) and third-party tools.
  • Market Presence: Extensive marketplace for add-ons and plugins.



  • Interface: Basic and functional, but can feel outdated.
  • Customization: Requires technical knowledge for extensive customization.
  • Setup: Needs manual installation and configuration, which can be complex for non-technical users.


  • Interface: Modern, intuitive, and highly customizable.
  • Ease of Use: More user-friendly, especially for non-technical users.
  • Setup: Cloud-based version is easy to set up; self-hosted version available for more control.



  • Cost: Free and open-source.
  • Hosting: Costs associated with hosting and maintaining the server.


  • Cost: Paid plans starting with a free tier for up to 10 users; pricing scales with the number of users and features.
  • Cloud and Server Options: Different pricing models for cloud-based and self-hosted versions.

Target Audience


  • Flexibility: Suitable for a wide range of industries due to its customizable nature.
  • Developers and Technical Teams: Often preferred by teams with technical expertise who can manage its setup and customization.


  • Software Development Teams: Highly popular among Agile and DevOps teams.
  • Large Enterprises: Scalable solution suitable for large organizations with complex project management needs.

Community and Support


  • Community Support: Active community with forums and documentation.
  • Professional Support: Available through third-party providers.


  • Professional Support: Comprehensive support from Atlassian, including documentation, community forums, and customer support.
  • Training and Resources: Extensive training materials and certifications available.


  • Choose Redmine if you need a free, open-source solution and have the technical expertise to customize and maintain it.
  • Choose Jira if you are looking for a robust, user-friendly tool with extensive features and support, especially if your team follows Agile methodologies.

The best choice depends on your specific requirements, budget, and technical capabilities.

Recommended Book: Mastering Redmine – Second Edition (PAID LINK) by Andriy Lesyuk
Recommended Training: Project Management Essentials: Ace Your Next Project!

3681538 ad73show?id=oLRJ54lcVEg&offerid=1074530.3681538&bids=1074530

Environment Specification:

We are using a minimal Red Hat Enterprise Linux 8 virtual machine with following specifications.

  • CPU – 3.4 Ghz (2 cores)
  • Memory – 2 GB
  • Storage – 20 GB
  • Operating System – RHEL 8.4
  • Hostname –
  • IP Address –

Update your Linux Server

By using a ssh client, connect with Linux server as root user.

By following the best practice, update software packages in your Linux operating system before installing Redmine project management tool.

# dnf update -y

If the above command updates your Linux Kernel then you should restart your operating system with the newly installed kernel.

# reboot

Check the Linux Kernel version on your machine.

# uname -r

Check the version of your Linux operating system.

# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.4 (Ootpa)

Create Linux User for Redmine

Here, we are installing Redmine project management software in /opt/redmineuser.

Therefore, create a Linux user and set /opt/redmineuser as its home directory.

# useradd -r -m -d /opt/redmineuser redmineuser

Set the password for redmineuser.

# passwd redmineuser

Grant sudo privilege to redmineuser, required for executing bundle commands.

# usermod -aG wheel redmineuser

Install Apache on RHEL 8

Redmine software requires a web server to deploy it’s application. Therefore, execute dnf command and install Apache on your Linux server.

# dnf install -y httpd

Enable and start Apache web server.

# systemctl enable --now httpd.service
Created symlink /etc/systemd/system/ → /usr/lib/systemd/system/httpd.service.

Grant redmineuser group to apache user, so it have necessary access to the files in /opt/redmineuser directory.

# usermod -aG redmineuser apache

Install MySQL on RHEL 8

Redmine software currently supports PostgreSQL and MySQL databases. Here, we are using a MariaDB database server and configure it as the backend for the Project management application.

You can follow our previous post to install MariaDB database on CentOS 8.

Connect with MySQL database instance as root user.

# mysql -u root -p

Execute following commands at MySQL shell to create a database and user for Redmine software.

MariaDB [(none)]> create database redminedb;
Query OK, 1 row affected (0.001 sec)

MariaDB [(none)]> grant all on redminedb.* to redmineadmin@localhost identified by 'P@ssw0rd';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> quit

Installing EPEL Yum Repository

Some of the prerequisite packages of Redmine software are not available in standard yum repositories, therefore, you need to install EPEL yum repository on your Linux server.

The procedure of installing EPEL is little bit different on CentOS and RHEL operating systems.

Execute the following commands to install EPEL on CentOS 8 and enable the required repo.

# dnf install -y epel-release

# dnf config-manager --set-enabled PowerTools

Execute the following commands to install EPEL on RHEL 8 and enable the required repo.

# dnf install -y

# subscription-manager repos --enable "codeready-builder-for-rhel-8-x86_64-rpms"
Repository 'codeready-builder-for-rhel-8-x86_64-rpms' is enabled for this system.

Build cache for newly added yum repositories.

# dnf makecache
Updating Subscription Management repositories.
Extra Packages for Enterprise Linux Modular 8 - 6.6 kB/s | 9.4 kB     00:01
Extra Packages for Enterprise Linux 8 - x86_64  5.2 kB/s | 5.7 kB     00:01
Red Hat Enterprise Linux 8 for x86_64 - BaseOS  2.6 kB/s | 4.1 kB     00:01
Red Hat CodeReady Linux Builder for RHEL 8 x86_ 201 kB/s | 5.4 MB     00:27
Red Hat Enterprise Linux 8 for x86_64 - AppStre 3.5 kB/s | 4.5 kB     00:01
Metadata cache created.

Install Redmine Software Prerequisites

If you have setup the yum repositories as per above steps then you can easily install all the prerequisites with a single dnf command.

# dnf install -y ruby ruby-devel rpm-build wget libxml2-devel make automake libtool ImageMagick ImageMagick-devel mariadb-devel httpd-devel openssl-devel libcurl-devel gcc gcc-c++

Check the version of your installed ruby.

# ruby -v
ruby 2.5.9p229 (2021-04-05 revision 67939) [x86_64-linux]

Configure Linux Firewall

Redmine is written in Ruby programming language. And the default port for Ruby web server is 3000/tcp.

Therefore, you need to add this port in Linux firewall, to make your application accessible across the network.

# firewall-cmd --add-port=3000/tcp --permanent
# firewall-cmd --reload

Install Redmine Project Management Tool on RHEL 8

Switch to redmineuser to start installation of your project management software.

# su - redmineuser

Go to Redmine Download Page and copy the URL of latest stable release of Redmine software.

Then use wget command to download Redmine setup.

$ wget
--2021-08-14 11:53:15--
Resolving (
Connecting to (||:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3038398 (2.9M) [application/x-gzip]
Saving to: ‘redmine-4.2.2.tar.gz’

redmine-4.2.2.tar.g 100%[===================>]   2.90M  26.7KB/s    in 2m 6s

2021-08-14 11:55:23 (23.5 KB/s) - ‘redmine-4.2.2.tar.gz’ saved [3038398/3038398]

Extract downloaded zip file to /opt/redmineuser directory by using following command.

$ tar xzf redmine-4.2.2.tar.gz -C /opt/redmineuser/ --strip-components=1

Create Redmine configuration files by using the vendor supplied examples.

$ cd /opt/redmineuser/
$ cp config/configuration.yml.example config/configuration.yml
$ cp config/database.yml.example config/database.yml
$ cp public/dispatch.fcgi.example public/dispatch.fcgi

Edit database.yml file in vim text editor.

$ vi config/database.yml

Find and configure your database connection settings under following section.

  adapter: mysql2
  database: redminedb
  host: localhost
  username: redmineadmin
  password: "P@ssw0rd"
  # Use "utf8" instead of "utfmb4" for MySQL prior to 5.7.7
  encoding: utf8mb4

Execute following gem command to install bundler for managing ruby gem dependencies.

$ gem install bundler
Fetching: bundler-2.2.25.gem (100%)
Successfully installed bundler-2.2.25
Parsing documentation for bundler-2.2.25
Installing ri documentation for bundler-2.2.25
Done installing documentation for bundler after 7 seconds
1 gem installed

Set the environment and install gem dependencies as follows.

$ bundle config set --local without 'development test'
$ bundle install
Fetching roadie-rails 2.2.0
Installing rails 5.2.6
Installing roadie-rails 2.2.0
Bundle complete! 37 Gemfile dependencies, 63 gems now installed.
Gems in the groups 'development' and 'test' were not installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.

If you face conflicts in gems versions then you can execute following command to restore gems to pristine state.

$ sudo gem pristine --all

To prevent tampering of the cookies that stores session data, you are required to generate a random secret key.

$ bundle exec rake generate_secret_token

Create database structure by executing following command.

$ RAILS_ENV=production bundle exec rake db:migrate
== 20190510070108 AddUniqueIdToImportItems: migrating =========================
-- change_table(:import_items)
   -> 0.0082s
== 20190510070108 AddUniqueIdToImportItems: migrated (0.0085s) ================

== 20190620135549 ChangeRolesNameLimit: migrating =============================
-- change_column(:roles, :name, :string, {:limit=>255, :default=>""})
   -> 0.0035s
== 20190620135549 ChangeRolesNameLimit: migrated (0.0037s) ====================

== 20200826153401 AddTwofaSchemeToUser: migrating =============================
-- add_column(:users, :twofa_scheme, :string)
   -> 0.0032s
== 20200826153401 AddTwofaSchemeToUser: migrated (0.0034s) ====================

== 20200826153402 AddTotpToUser: migrating ====================================
-- add_column(:users, :twofa_totp_key, :string)
   -> 0.0024s
-- add_column(:users, :twofa_totp_last_used_at, :integer)
   -> 0.0026s
== 20200826153402 AddTotpToUser: migrated (0.0052s) ===========================

Insert default configuration data into the MySQL database.

$ RAILS_ENV=production REDMINE_LANG=en bundle exec rake redmine:load_default_data
Default configuration data loaded.

Create necessary directories and adjust file permissions.

$ mkdir -p tmp/pdf
$ mkdir -p public/plugin_assets
$ chown -R redmineuser:redmineuser files log tmp public/plugin_assets
$ chmod -R 755 /opt/redmineuser/

Execute the following command to start a Rails server instance by using WEBrick.

$ bundle exec rails server webrick -e production
=> Booting WEBrick
=> Rails 5.2.6 application starting in production on
=> Run `rails server -h` for more startup options
[2021-08-14 14:57:49] INFO  WEBrick
[2021-08-14 14:57:49] INFO  ruby 2.5.9 (2021-04-05) [x86_64-linux]
[2021-08-14 14:57:49] INFO  WEBrick::HTTPServer#start: pid=3545 port=3000

Open URL in a web browser.

Login with default credentials i.e. admin/admin.

Redmine Software Login
Redmine Software Login

Since, you are login for the first time, therefore you may be asked to change the password.

Redmine - Change Password
Redmine – Change Password

After changing your password, you will be redirected to the “My Account” page.

Redmine - My Account Page
Redmine – My Account Page

You have successfully install Redmine on Linux 8.

Install Phusion Passenger on RHEL 8

Phusion Passenger is a ruby application server that can be used to serve Redmine via Apache web server.

You can install Passenger by using following gem command.

$ gem install passenger --no-rdoc --no-ri
Fetching: passenger-6.0.10.gem (100%)
Building native extensions. This could take a while...
Successfully installed passenger-6.0.10
1 gem installed

Install Passenger module on Apache web server.

$ passenger-install-apache2-module

During execution of above command, you are asked to create following configuration files.

Phusion Passenger Apache Module
Phusion Passenger Apache Module
Phusion Passenger Apache Configuration
Phusion Passenger Apache Configuration

Therefore, open another ssh session as root user and perform following configurations.

Create an Apache module configuration file by using vim text editor.

# vi /etc/httpd/conf.modules.d/00-passenger.conf

Add following directives in this file.

LoadModule passenger_module /opt/redmineuser/.gem/ruby/gems/passenger-6.0.10/buildout/apache2/
   <IfModule mod_passenger.c>
     PassengerRoot /opt/redmineuser/.gem/ruby/gems/passenger-6.0.10
     PassengerDefaultRuby /usr/bin/ruby

Create an Apache configuration file by using vim text editor.

# vi /etc/httpd/conf.d/redmine.conf

Add following directives in this file.

Listen 3000
<IfModule mod_passenger.c>
  PassengerRoot /opt/redmineuser/.gem/ruby/gems/passenger-6.0.10
  PassengerDefaultRuby /usr/bin/ruby
<VirtualHost *:3000>
    DocumentRoot "/opt/redmineuser/public" 

    CustomLog logs/redmine_access.log combined
    ErrorLog logs/redmine_error_log
    LogLevel warn

    <Directory "/opt/redmineuser/public">
        Options Indexes ExecCGI FollowSymLinks
        Require all granted
        AllowOverride all

Verify the Apache configurations by executing following command.

# httpd -t
Syntax OK

Continue and finish Passenger installation.

Restart Apache service to load changes.

# systemctl restart httpd.service

Passenger installation with gems command does not provide a SELinux configuration.

Therefore, you have to disable SELinux on your Linux server.

# setenforce 0
# sed -i s/^SELINUX=.*$/SELINUX=disabled/ /etc/selinux/config

Open URL in a web browser again.

Final Thoughts

Installing Redmine on RHEL 8 can significantly enhance your project management capabilities, providing a powerful and customizable platform for tracking issues, managing tasks, and collaborating with your team. With its extensive feature set and flexibility, Redmine is an excellent choice for organizations looking to streamline their project workflows.

If you need professional assistance with the installation or configuration of Redmine on your RHEL 8 server, I offer comprehensive services to ensure a smooth and efficient setup. Visit my Fiverr profile for more details on my services and to get started: I will fix linux server issues

Let me help you get Redmine up and running seamlessly, so you can focus on managing your projects effectively.

2 thoughts on “How to install Redmine on RHEL 8”

Leave a Reply

Your email address will not be published. Required fields are marked *