Deployment guide

Redmine 6

Overview

Redmine is an open-source project management and issue tracking platform, delivered as a single Ruby on Rails application. It provides bug tracking, time tracking, Gantt charts, a wiki, forums, a repository browser and per-project access control.

This SecureAnyCloud image installs Redmine 6.0 from redmine.org alongside Apache 2.4, Phusion Passenger 6, MySQL 8.0 and Ruby 3.2. Everything except Redmine comes from Ubuntu 24.04 noble universe, with no third-party APT repositories. At first boot the schema is migrated and the default admin account is created with a per-VM password.

What you get:

  • Redmine 6.0.7 from the official redmine.org tarball at /opt/redmine
  • Apache 2.4.58 with Phusion Passenger 6.0.17 mounted at /
  • MySQL 8.0.45 with a redmine database and a redmine MySQL user (per-VM password)
  • Ruby 3.2.3 from Ubuntu noble, Bundler 2.5 and 90 production gems vendored under /opt/redmine/vendor/bundle
  • ImageMagick 6.9 and libmagickwand for attachment thumbnails
  • redmine-firstboot.service, which rotates the MySQL root, database and admin passwords and runs the schema migrations
  • English as the default language, with the project, issue, user, role and permission framework loaded
  • 24/7 SecureAnyCloud support

Prerequisites

You need an active Azure subscription, an SSH key, and a VNet with a subnet.

Standard_B2s (2 vCPU, 4 GB RAM) is sufficient for teams of up to about 50 active users. Move to D2s_v5 or larger for bigger teams or heavy attachment workloads.

1

Deploy from the Azure Marketplace

Search the Azure Marketplace for "Redmine 6 on Ubuntu 24.04 LTS", select Get It Now, then select Create.

Choose your resource group, region, VM size (Standard_B2s recommended) and SSH public key. In the network security group (NSG), allow inbound port 80 (HTTP) and port 22 (SSH).

2

Connect to the VM over SSH

Connect to the VM with your SSH key:

ssh azureuser@<vm-ip>

The first boot takes 60 to 90 seconds. During that time the VM rotates the MySQL root password, creates the database, migrates the schema and compiles assets. Wait for /var/lib/sac/data/redmine-firstboot.done to appear before you browse to the site:

while [ ! -f /var/lib/sac/data/redmine-firstboot.done ]; do echo "waiting..."; sleep 5; done; echo "READY"
3

Verify the services

Check that Apache and MySQL are running and listening:

sudo systemctl is-active apache2 mysql
sudo ss -tlnp | grep -E ':(80|3306) '

Both services report active. Apache listens on :80 and MySQL on :3306.

4

Read the per-VM credentials

Read the credentials file as root:

sudo cat /stage/scripts/redmine-credentials.log

Note REDMINE_ADMIN_PASSWORD and REDMINE_LOGIN_URL from the file. Treat both as secrets. The file is mode 0600 root:root.

5

Check the installed versions

Print the Ruby, Apache, MySQL and Redmine versions:

ruby --version apache2 -v | head -1 mysql --version grep -E 'MAJOR|MINOR|TINY' /opt/redmine/lib/redmine/version.rb | head -3
6

Open the Redmine home page

Browse to http://<vm-ip>/ to see the Redmine home page. It lists no projects yet. Sign in as admin to create your first one.

7

Sign in at /login

Browse to http://<vm-ip>/login and sign in as admin with the password from Step 4.

8

Open the administration dashboard

After you sign in, open /admin for the administration index. It covers projects, users, groups, roles and permissions, trackers, issue statuses, workflow, custom fields, enumerations, settings, LDAP authentication, plugins and system information.

9

Create a project

Select Projects, then New project. Give the project an identifier and a name.

Choose the modules to enable: issue tracking, time tracking, news, documents, files, wiki, repository, forums, calendar and Gantt. Once the project exists, the Issues tab is where most teams spend their time.

10

Find the key components

These are the component locations on the VM:

Redmine install: /opt/redmine/

database.yml: /opt/redmine/config/database.yml

Apache vhost: /etc/apache2/sites-available/redmine.conf

Apache logs: /var/log/apache2/redmine-{access,error}.log

Redmine logs: /opt/redmine/log/production.log

Attachment storage: /opt/redmine/files/

Plugins: /opt/redmine/plugins/

Themes: /opt/redmine/public/themes/

MySQL data: /var/lib/mysql/

Vendored gems: /opt/redmine/vendor/bundle/

First-boot script: /usr/local/sbin/redmine-firstboot.sh

Credentials: /stage/scripts/redmine-credentials.log (mode 0600 root:root)

11

Back up your data

Back up two things: the MySQL redmine database and the /opt/redmine/files attachment directory.

# Database dump
sudo mysqldump --single-transaction redmine | gzip > redmine-$(date +%Y%m%d).sql.gz
# Attachments
sudo tar czf redmine-files-$(date +%Y%m%d).tar.gz -C /opt/redmine files

To restore, recreate the database and load the dump back with mysql redmine < dump.sql. Then extract the attachments archive into the files directory.

12

Security

  • Enable HTTPS. Install certbot and obtain a Let's Encrypt certificate: sudo apt-get install -y certbot python3-certbot-apache && sudo certbot --apache
  • Restrict the NSG. Open port 80 only to your CDN or load balancer, and limit port 22 to your management CIDR.
  • Set the admin email. Change it under /my/account and enter a real address so that password resets work.
  • Enable two-factor authentication. Turn it on for the admin and trusted users under /my/account/twofa.
  • Patch monthly. Run sudo apt-get update && sudo apt-get upgrade && sudo reboot.
  • Update Redmine. Download the new tarball and copy config/database.yml and files/ across. Then run bundle install and bundle exec rake db:migrate RAILS_ENV=production.

Licensing

Redmine is licensed under GPL-2.0+ and is free to use commercially. SecureAnyCloud provides commercial support separately. Contact sales@secureanycloud.com.

Deploy on Azure

Launch Redmine 6 on Ubuntu 24.04 LTS on Azure with 24/7 support from SecureAnyCloud.

View this image

Need Help?

Our support team is available 24/7.

sales@secureanycloud.com

Deploy on Azure