How to install Redmine on Ubuntu 22.04
Introduction
Redmine is a powerful and versatile project management tool that can help teams stay organized, collaborate effectively, and track progress towards their goals. Originally developed for the Ruby on Rails community, Redmine is now used by thousands of organizations worldwide, from small startups to large enterprises.
With Redmine, you can create projects and sub-projects, define tasks and issues, assign them to team members, set due dates and priorities, and track time spent on each task. You can also add comments and attachments to issues, create custom fields and workflows, and generate reports and graphs to visualize project status and progress.
It is open-source software written in Ruby on Rails and is available under the GNU General Public License.
Whether you’re a software development team, a marketing agency, a non-profit organization, or any other type of group that needs to manage projects and tasks, Redmine can be a valuable tool to help you stay on track, collaborate effectively, and achieve your goals. In this blog, we’ll explore some of the key features and use cases of Redmine, and provide tips and best practices for getting the most out of this powerful project management tool.
In this tutorial, we will go through the steps of installing Redmine on an Ubuntu 22.04 server and secure it Let’s Encrypt SSL.
Prerequisites:
Ubuntu 22.04 Server
Root or sudo user access
A domain name pointed to the server is required for accessing Redmine via a web browser.
Step 1: Update Ubuntu System
The first step is to update the Ubuntu system to ensure that all the packages are up-to-date. You can do this by running the following command:
sudo apt update
Step 2: Install Dependencies
Redmine requires several dependencies to be installed before it can be installed. To install them, run the following command:
sudo apt install -y build-essential libmagickwand-dev libxml2-dev libxslt1-dev libffi-dev libyaml-dev zlib1g-dev libssl-dev git imagemagick libcurl4-openssl-dev libtool libxslt-dev ruby ruby-dev rubygems libgdbm-dev libncurses-dev
Also, install Apache and Apache mod Passenger module
sudo apt install -y apache2 libapache2-mod-passenger
Note: libapache2-mod-passenger is a module for the Apache web server that enables the deployment of Ruby on Rails web applications. It provides an easy way to configure and manage Ruby on Rails applications within an Apache web server environment.
Step 3: Create a Redmine User
Create a dedicated Linux user for running Redmine:
useradd -r -m -d /opt/redmine -s /usr/bin/bash redmine
Add the user to the www-data group to enable Apache to access Redmine files:
usermod -aG redmine www-data
Step 4: Install and Secure MariaDB
MariaDB is a popular open-source database management system and is used as the backend for Redmine. To install and secure MariaDB, run the following commands:
sudo apt install -y mariadb-server
Enable and run the database service.
systemctl enable --now mariadb
mysql_secure_installation
Note: mysql_secure_installation is used to secure the installation by performing a series of security-related tasks, such as:
Create a database and User. Replace the names of the database and the database user accordingly.
mysql -u root -p create database redminedb; grant all on redminedb.* to redmineuser@localhost identified by 'P@ssW0rD';
Reload privilege tables and exit the database.
flush privileges; quit
Step 5: Download and Extract Redmine
Download the latest version of Redmine and extract it to the /opt/redmine directory using the following command:
curl -s https://www.redmine.org/releases/redmine-5.0.5.tar.gz | sudo -u redmine tar xz -C /opt/redmine/ --strip-components=1
Create Redmine configuration file by renaming the sample configuration files as shown below;
su - redmine cp /opt/redmine/config/configuration.yml{.example,} cp /opt/redmine/public/dispatch.fcgi{.example,} cp /opt/redmine/config/database.yml{.example,}
The sample configuration files are provided by Redmine as a starting point for configuring your installation.
Step 6: Configure the Database
Modify the config/database.yml file and update database name, username, and password for the production environment:
nano /opt/redmine/config/database.yml
In the file, replace the default configuration with the following:
production:
adapter: mysql2
database: redminedb
host: localhost
username: redmineuser
password: "P@ssW0rD"
encoding: utf8mb4
Since the configuration file is an yaml, you need to use proper Indentation.
Save and close the file.
Step 7: Install Bundler and Redmine Dependencies
Install Bundler for managing gem dependencies and run the following commands:
sudo gem install bundler
Login as redmine user and execute below commands:
su - redmine bundle config set --local without 'development test' bundle install bundle update exit
Step 8: Configure File System Permissions
Ensure that the following directories are available in the Redmine directory (/opt/redmine):
tmp and tmp/pdf
public and public/plugin_assets
log
files
Create them if they don’t exist and ensure that they are owned by the user used to run Redmine:
for i in tmp tmp/pdf public/plugin_assets; do [ -d $i ] || mkdir -p $i; done chown -R redmine:redmine files log tmp public/plugin_assets chmod -R 755 /opt/redmine
Step 9: Configure Apache
Create a new Apache virtual host file for Redmine:
sudo nano /etc/apache2/sites-available/redmine.conf
Paste the following configuration into the file:
<VirtualHost *:80> ServerName redmine.linuxwebhostingsupport.in DocumentRoot /opt/redmine/public ErrorLog ${APACHE_LOG_DIR}/redmine-error.log CustomLog ${APACHE_LOG_DIR}/redmine-access.log combined <Directory /opt/redmine/public> Require all granted Options -MultiViews PassengerEnabled on PassengerAppEnv production PassengerRuby /usr/bin/ruby </Directory> </VirtualHost>
Save the file and exit the text editor. Replace redmine.linuxwebhostingsupport.in with your domain name.
Enable the Redmine site by running the following command:
sudo a2ensite redmine.conf
Restart Apache to apply the changes:
sudo systemctl restart apache2
Allow Apache through the Ubuntu UFW firewall:
sudo ufw allow 'Apache Full'
Install Certbot and the Apache plugin for Let’s Encrypt:
sudo apt install certbot python3-certbot-apache
Adding Lets Encrypt SSL certificate
You need to make sure your domain is properly pointed to the server IP, otherwise, Let’s encrypt will fail.
Obtain an SSL certificate for your domain by running the following command:
sudo certbot --apache
Follow the on-screen instructions to complete the process.
Restart Apache to apply the SSL configuration:
sudo systemctl restart apache2
Open your web browser and go to https://redmine.linuxwebhostingsupport.in/. You should see the Redmine home screen.
Login to the admin area using your Redmine admin username and password. If this is your first login, you will need to reset your admin password.
https://redmine.linuxwebhostingsupport.in/login
Congratulations! You have successfully installed and configured Redmine on your Ubuntu server. In the previous steps, we have covered the installation and configuration of Redmine, including setting up the database, configuring Apache, and securing Redmine with Let’s Encrypt SSL.
However, one critical aspect of Redmine that you might want to configure is email delivery for notifications. This feature is essential for keeping team members informed about project updates, new issues, and changes to existing issues. In this section, we will show you how to configure email delivery in Redmine.
Configuring SMTP for Email Delivery in Redmine
Redmine supports email delivery for notifications, which you can set up using the following steps:
Step 1 – Open Configuration File
First, you need to open the configuration.yml file in a text editor:
sudo nano /opt/redmine/config/configuration.yml
Step 2 – Configure Email Settings
Next, scroll down to the production section of the file, uncomment the following lines by removing the # symbol at the beginning of each line, and replace the values with your SMTP server’s settings:
# specific configuration options for production environment # that overrides the default ones production: email_delivery: delivery_method: :smtp smtp_settings: address: "your.smtp.server.com" port: 587 domain: "your.domain.com" authentication: :login user_name: "your_email@example.com" password: "your_email_password" enable_starttls_auto: true # specific configuration options for development environment # that overrides the default ones
Replace the values for address, port, domain, user_name, and password with your SMTP server’s settings:
address: The address of your SMTP server.
port: The port number to use for SMTP server (usually 587).
domain: The domain name of your organization or server.
user_name: The email address of the user account to use for sending emails.
password: The password for the user account to use for sending emails.
Save the configuration.yml file.
Since the configuration file is an yaml, you need to use proper Indentation.
Step 3 – Restart Apache
Finally, restart Apache to apply the changes:
sudo systemctl restart apache2
And that’s it! Redmine is now configured to deliver email notifications to your team members.
Conclusion
Redmine is a powerful project management tool that can help you manage your software development projects effectively. In this blog post, we have covered the installation and configuration of Redmine on Ubuntu, including setting up the database, configuring Apache, securing Redmine with Let’s Encrypt SSL, and configuring email delivery.
With these steps, you should now have a working Redmine installation that can help you track your projects, collaborate with your team, and stay on top of your development process. Good luck!
Leave a Reply