
Redmine è una potente piattaforma open source per la gestione di progetti, attività e ticket, molto apprezzata da team IT, sviluppatori e organizzazioni che cercano un’alternativa flessibile e gratuita a soluzioni proprietarie come Jira.
Grazie alla sua architettura basata su Ruby on Rails, Redmine offre un sistema modulare, espandibile con plugin, e facilmente integrabile con strumenti come Git, SVN e sistemi di posta.
In questa guida vedremo passo dopo passo come installare e configurare Redmine su Ubuntu Server 24.04 LTS, utilizzando Apache come web server e Passenger come application server Ruby.
L’obiettivo è ottenere un’installazione stabile, sicura e pronta per l’utilizzo in ambienti di produzione o test.
PREREQUISITI
Serve un Ubuntu Server 24.04 LTS aggiornato.
Consigliato almeno 2 core CPU e 2 GB di RAM.
Redmine richiede:
- Ruby 3.2 o 3.3
- Rails 7 (installato via Bundler)
- MariaDB 10.11 o superiore (oppure PostgreSQL 14+)
- Apache 2.4 con Passenger
- NodeJS e Yarn per la compilazione degli asset frontend
INSTALLAZIONE DI APACHE
Redmine richiede un server web. In questo post utilizzerò il server Web Apache per eseguire Redmine.
Aprire il terminale Ubuntu ed eseguire i comandi seguenti per installare il server Web Apache:
|
0
1
|
sudo apt update
sudo apt install apache2
|
Avviare ed abilitare Apache con i seguenti comandi:
|
0
1
|
sudo systemctl start apache2
sudo systemctl enable apache2
|
INSTALLAZIONE DI MARIADB
Il prossimo componente richiesto per eseguire Redmine è un database server.
In questo post iutilizzerò il database server MariaDB.
Aprire il terminale Ubuntu ed eseguire i comandi seguenti per installare il server di database MariaDB:
|
0
1
|
sudo apt update
sudo apt install mariadb-server
|
Avviare ed abilitare MariaDB con i seguenti comandi:
|
0
1
|
sudo systemctl start mariadb
sudo systemctl enable mariadb
|
CREAZIONE DEL DATABASE PER REDMINE
Dopo aver installato correttamente il database server MariaDB creare un database vuoto sul server specifico per l’applicazione Redmine.
Accedere al database server MariaDB con il comando:
|
0 |
sudo mariadb |
Crere un database redminedb con il comando:
|
0 |
CREATE DATABASE redminedb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; |
Creare l’utente redminedbuser con il seguente comando:
|
0 |
CREATE USER redminedbuser@localhost IDENTIFIED BY 'PASSWORD'; |
NOTA BENE: inserire la password dell’utente al posto di PASSWORD
Fornire i permessi all’utente creato sul database redminedb con il comando:
|
0 |
GRANT ALL ON redminedb.* TO redminedbuser@localhost WITH GRANT OPTION; |
Fare il flush con il comando:
|
0 |
FLUSH PRIVILEGES; |
Uscire con il comando:
|
0 |
exit |
INSTALLAZIONE DI REDMINE
Prima di installare Redmine installare alcune dipendenze del pacchetto con il comando:
|
0 |
sudo apt install ruby ruby-dev build-essential libssl-dev libreadline-dev zlib1g-dev libcurl4-openssl-dev libmysqlclient-dev libpq-dev libaprutil1-dev libapr1-dev apache2-dev
|
Redmine è basato su Ruby quindi è necessario installare la versione corretta.
In questo post installerò le versioni di Ruby utilizzando RVM (Ruby Version Manager).
Installare le dipendenze necessarie per RVM con il comando:
|
0 |
sudo apt install gnupg2 curl
|
Importare le chiavi con i seguenti comandi:
|
0
1
|
curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -
|
Quindi installare RVM eseguendo i comandi:
|
0
1
2
|
curl -sSL https://get.rvm.io | bash -s stable
source ~/.rvm/scripts/rvm
|
Se è andata a buon fine l’installazione di RVM dovremmo visualizzare il seguente output:
|
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
Installation of RVM in /usr/local/rvm/ is almost complete:
* First you need to add all users that will be using rvm to 'rvm' group,
and logout - login again, anyone using rvm will be operating with `umask u=rwx,g=rwx,o=rx`.
* To start using RVM you need to run `source /etc/profile.d/rvm.sh`
in all your open shell windows, in rare cases you need to reopen all shell windows.
* Please do NOT forget to add your users to the rvm group.
The installer no longer auto-adds root or users to the rvm group. Admins must do this.
Also, please note that group memberships are ONLY evaluated at login time.
This means that users must log out then back in before group membership takes effect!
Thanks for installing RVM
Please consider donating to our open collective to help us maintain RVM.
Donate: https://opencollective.com/rvm/donate
|
Installare l’ultima versione stabile di Ruby con i seguenti comandi:
|
0
1
2
3
|
rvm pkg install openssl
rvm get head
rvm install ruby 3.3
rvm use ruby 3.3 --default
|
Continuare con lo step successivo per configurare Redmine.
CONFIGURAZIONE DI REDMINE
Creare una cartella dedicata per installare Redmine.
Installeremo Redmine all’interno della directory /var/lib/redmine
|
0
1
2
|
sudo mkdir /var/lib/redmine
sudo chown -R www-data:www-data /var/lib/redmine
|
Visitare il seguiente sito per verificare l’ultima versione stabile di Redmine:
ATTENZIONE: al momento della stesura del seguente articolo l’ultima versione stabile disponibile è la 6.1.0
Posizionartsi nella cartella /tmp con il comando:
|
0 |
cd /tmp
|
Quindi scaricare Redmine con il comando:
|
0 |
wget https://www.redmine.org/releases/redmine-6.1.0.tar.gz
|
Estrarre il file scaricato con il comando:
|
0 |
tar -xvzf redmine-6.1.0.tar.gz
|
Copiare il contenuto nella directory di Redmine con il comando:
|
0 |
sudo -u www-data cp -r redmine-6.1.0/* /var/lib/redmine
|
Successivamente copiare la configurazione predefinita del database config/database.yml.example in config/database.yml con il comando:
|
0 |
sudo -u www-data cp /var/lib/redmine/config/database.yml.example /var/lib/redmine/config/database.yml
|
Aprire il file di configurazione database.yml con il comando:
|
0 |
sudo -u www-data nano /var/lib/redmine/config/database.yml
|
Nella sezione production modificare i dettagli del database MySQL e dell’utente. Digitare i dettagli dell’account del database creati in precedenza.
|
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# Default setup is given for MySQL 5.7.7 or later.
# Examples for PostgreSQL, SQLite3 and SQL Server can be found at the end.
# Line indentation must be 2 spaces (no tabs).
production:
adapter: mysql2
database: redminedb
host: localhost
username: redminedbuser
password: "PASSWORD"
# Use "utf8" instead of "utfmb4" for MySQL prior to 5.7.7
encoding: utf8mb4
variables:
# Recommended `transaction_isolation` for MySQL to avoid concurrency issues is
# `READ-COMMITTED`.
# In case of MySQL lower than 8, the variable name is `tx_isolation`.
# See https://www.redmine.org/projects/redmine/wiki/MySQL_configuration
# tx_isolation: "READ-COMMITTED" ---> COMMENTARE QUESTA RIGA
|
Salvare il file ed uscire dall’editor.
Installare bundler con il comando:
|
0 |
sudo gem install bundler
|
Spostarsi nella directory di Redmine con il comando:
|
0 |
cd /var/lib/redmine
|
Quindi installare le dipendenze Ruby con ii seguenti comandi:
|
0
1
2
3
4
|
sudo bundle config set --local without 'development test'
sudo chown -R redmine:redmine /var/lib/redmine
sudo bundle install
|
NOTA BENE: sostituire l’utente redmine con quello utilizzato in fase di installazione
Se è andato tutto a buon fine dovremmo visualizzare il seguetnte output:
|
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
-------------------------------------------------
Thank you for installing html-pipeline!
You must bundle Filter gem dependencies.
See html-pipeline README.md for more details.
https://github.com/jch/html-pipeline#dependencies
-------------------------------------------------
Post-install message from roadie-rails:
This would be the last version that supports ruby 2.7
Post-install message from rubyzip:
RubyZip 3.0 is coming!
**********************
The public API of some Rubyzip classes has been modernized to use named
parameters for optional arguments. Please check your usage of the
following classes:
* `Zip::File`
* `Zip::Entry`
* `Zip::InputStream`
* `Zip::OutputStream`
* `Zip::DOSTime`
Run your test suite with the `RUBYZIP_V3_API_WARN` environment
variable set to see warnings about usage of the old API. This will
help you to identify any changes that you need to make to your code.
See https://github.com/rubyzip/rubyzip/wiki/Updating-to-version-3.x for
more information.
|
Una volta installate le dipendenze di Redmine generare il token segreto di Redmine e migrare il database con i seguenti comandi:
|
0
1
2
3
4
|
sudo chown -R www-data:www-data /var/www/html
sudo usermod -d /var/www/html www-data
sudo -u www-data bin/rake generate_secret_token
|
Creare la cartella /var/lib/redmine/log con il comando:
|
0 |
mkdir -p /var/lib/redmine/log
|
Assegnare le ACL corrette con il comando:
|
0 |
install -o www-data -g www-data -m 0664 /dev/null /var/lib/redmine/log/production.log
|
Creare la cartella con i seguenti comandi:
|
0
1
2
3
4
5
|
mkdir -p \
/var/lib/redmine/public/assets \
/var/lib/redmine/public/plugin_assets \
/var/lib/redmine/tmp \
/var/lib/redmine/files \
/var/lib/redmine/storage
|
Assegnare a www-data i permessi corretti con i seguenti comandi:
|
0
1
2
3
4
5
6
|
chown -R www-data:www-data \
/var/lib/redmine/log \
/var/lib/redmine/tmp \
/var/lib/redmine/files \
/var/lib/redmine/storage \
/var/lib/redmine/public/assets \
/var/lib/redmine/public/plugin_assets
|
Permessi corretti: rwX per utente e gruppo, lettura/esecuzione per altri su directory e file pubblici con i seguenti comandi:
|
0
1
2
3
4
5
6
|
chmod -R u=rwX,g=rwX,o=rX \
/var/lib/redmine/log \
/var/lib/redmine/tmp \
/var/lib/redmine/files \
/var/lib/redmine/storage \
/var/lib/redmine/public/assets \
/var/lib/redmine/public/plugin_assets
|
Mantenere la proprietà del gruppo sui file appena creati all’interno di queste directory con il comando:
|
0
1
|
find /var/lib/redmine/public/assets /var/lib/redmine/public/plugin_assets /var/lib/redmine/tmp \
-type d -exec chmod g+s {} \;
|
Quindi procedere con la migrazione del database con il comando:
|
0 |
sudo -u www-data bin/rake db:migrate RAILS_ENV="production"
|
Nello screenshot seguente è possibile vedere che viene generato il token segreto Redmine e il processo di migrazione del database Redmine.
Infine caricare l’impostazione predefinita per l’installazione di Redmine con il seguente comando.
|
0 |
sudo RAILS_ENV=production bundle exec rake redmine:load_default_data
|
Rispondere alla seguente domanda relativa alla lingua:
|
0 |
Select language: ar, az, bg, bs, ca, cs, da, de, el, en, en-GB, es, es-PA, et, eu, fa, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sq, sr, sr-YU, sv, ta-IN, th, tr, uk, vi, zh, zh-TW [en]
|
Premere INVIO per scelgiere l’inglese
Installare Phusion Passenger che esegue applicazioni Rails come Redmine su Apache con il comando:
|
0 |
sudo gem install passenger
|
Creare e installare il modulo per Apache con il seguente comando:
|
0 |
sudo passenger-install-apache2-module --auto --languages ruby
|
Se è andato tutto a buon fine dovremmo visualizzare il seguente output:
|
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
--------------------------------------------
Almost there!
Please edit your Apache configuration file, and add these lines:
LoadModule passenger_module /var/lib/gems/3.2.0/gems/passenger-6.1.0/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /var/lib/gems/3.2.0/gems/passenger-6.1.0
PassengerDefaultRuby /usr/bin/ruby3.2
</IfModule>
After you restart Apache, you are ready to deploy any number of web
applications on Apache, with a minimum amount of configuration!
Press ENTER when you are done editing.
--------------------------------------------
Validating installation...
* Checking whether this Passenger install is in PATH... ✓
* Checking whether there are no other Passenger installations... ✓
* Checking whether Apache is installed... ✓
* Checking whether the Passenger module is correctly configured in Apache... (!)
You did not specify 'LoadModule passenger_module' in any of your Apache
configuration files. Please paste the configuration snippet that this
installer printed earlier, into one of your Apache configuration files, such
as /etc/apache2/apache2.conf.
Detected 0 error(s), 1 warning(s).
Press ENTER to continue.
--------------------------------------------
Deploying a web application
To learn how to deploy a web app on Passenger, please follow the deployment
guide:
https://www.phusionpassenger.com/library/deploy/apache/deploy/
Enjoy Phusion Passenger, a product of Phusion® (www.phusion.nl) :-)
https://www.phusionpassenger.com
|
Verificare che il modulo sia stato aggiunto ad Apache con il comando:
|
0 |
sudo passenger-install-apache2-module --snippet
|
Dovremmo visualizzare un output simile al seguente:
|
0
1
2
3
4
|
LoadModule passenger_module /var/lib/gems/3.2.0/gems/passenger-6.1.0/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /var/lib/gems/3.2.0/gems/passenger-6.1.0
PassengerDefaultRuby /usr/bin/ruby3.2
</IfModule>
|
Prendere nota dell’output poiché andrà inserito nel file di configurazione sottostante.
Dopo aver completato tutti i passaggi precedenti configurare il server Web Apache di seguito per servire il contenuto di Redmine.
Creare un file host virtuale Apache per Redmine cn il comando:
|
0 |
sudo nano /etc/apache2/sites-available/redmine.conf
|
Copiare e incollare il blocco di contenuto sottostante nel blocco del server Apache:
|
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<VirtualHost *:80>
ServerName redmine.test.lab
ServerAdmin admin@test.lab
DocumentRoot /var/lib/redmine/public
<Directory "/var/lib/redmine/public">
Require all granted
</Directory>
# Basic configuration for Passenger. Use the info gathered from running #the passenger command and update the lines below.
LoadModule passenger_module /var/lib/gems/3.2.0/gems/passenger-6.1.0/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /var/lib/gems/3.2.0/gems/passenger-6.1.0
PassengerDefaultRuby /usr/bin/ruby3.2
</IfModule>
# Allow access to Redmine's installation directory
<Directory /var/lib/redmine/public>
Allow from all
Options -MultiViews
Require all granted
</Directory>
</VirtualHost>
|
Salvare e chiudere il file di configurazione
NOTA BENE: sostituire i parametri ServerName e ServerAdmin con i valori corretti
Abilitare l’host virtuale e riavviare il server Apache con i seguenti comandi:
|
0
1
|
sudo a2ensite redmine.conf
sudo systemctl restart apache2
|
ACCESSO A REDMINE DA WEB GUI
A questo punto da un qualsiasi browser richiamare il link:
http://FQDN-SERVER-O-IP
Se è andato tutto a buon fine dovremmo visualizzare la Home Page di Redmine come mostrato nell’immagine sovrastante
Cliccare su Sign In quindi inserire le credenziali di Default
USER: admin
PASSWORD: admin
Premere Login
Procedere al cambio password quindi cliccare Apply
Accertarsi di aver cambiato la password
A questo punto Redmine è possibile gestire i progetti, il tracciamento di attività, problemi e richieste (issue tracking).
FUNZIONALITA’ E CONSIDERAZIONI FINALI
Redmine è una piattaforma open source per la gestione dei progetti basata su Ruby on Rails. È pensata per supportare team di sviluppo software, ma la sua flessibilità la rende adatta anche a contesti aziendali più ampi.
Ecco le sue principali funzionalità:
1. Gestione dei progetti
Redmine consente di creare e gestire un numero illimitato di progetti e sottoprogetti.
Ogni progetto può avere un proprio set di utenti, ruoli, flussi di lavoro e moduli attivi (come wiki, forum, issue tracking, repository, ecc.).
Vantaggio: struttura altamente modulare che consente di gestire in modo indipendente più team o dipartimenti all’interno della stessa istanza.
2. Gestione dei ticket (Issue Tracking)
È una delle funzionalità principali di Redmine. Ogni attività, bug o richiesta di supporto viene tracciata come “issue”, assegnata a un utente e monitorata nel suo ciclo di vita.
È possibile definire stati personalizzati, tipologie di issue (bug, feature, task, ecc.) e workflow specifici per ogni ruolo.
Vantaggio: pieno controllo sull’avanzamento dei lavori e sulla tracciabilità delle modifiche.
3. Gestione degli utenti, ruoli e permessi
Redmine offre un sistema di autenticazione e autorizzazione avanzato, con ruoli personalizzabili e permessi granulari.
È anche possibile integrare l’autenticazione con LDAP o Active Directory.
Vantaggio: sicurezza e gestione centralizzata degli accessi, ideale per ambienti enterprise.
4. Wiki e Forum di progetto
Ogni progetto può includere un wiki integrato per documentazione e un forum interno per discussioni tra membri del team.
Vantaggio: favorisce la collaborazione e la condivisione della conoscenza senza dover utilizzare strumenti esterni.
5. Gestione dei file e repository
Redmine può integrarsi con sistemi di versionamento come Git, Subversion (SVN) o Mercurial, visualizzando direttamente i commit associati agli issue.
Supporta anche l’upload di file e allegati.
Vantaggio: collegamento diretto tra codice sorgente e gestione dei task.
6. Calendari, Gantt e time tracking
Include strumenti grafici come diagrammi di Gantt, calendari e registrazione delle ore lavorate.
Questo permette di pianificare e monitorare le attività nel tempo.
Vantaggio: visione d’insieme dell’avanzamento e misurazione della produttività del team.
7. Notifiche ed email automatiche
Redmine invia notifiche via email per ogni evento rilevante (nuovo ticket, commento, assegnazione, ecc.), con configurazione personalizzabile per utente.
Vantaggio: aggiornamento costante dello stato dei progetti senza dover accedere continuamente alla piattaforma.
8. Plugin e personalizzazioni
Esiste un ampio ecosistema di plugin, temi grafici e moduli aggiuntivi.
Puoi estendere Redmine con funzionalità come integrazione CI/CD, dashboard avanzate, Kanban board, o interfacce mobile-friendly.
Vantaggio: grande flessibilità e possibilità di adattare Redmine a diversi flussi di lavoro aziendali.
Considerazioni finali
Redmine rappresenta una soluzione solida, scalabile e altamente personalizzabile per la gestione centralizzata dei progetti.
La sua architettura open source, basata su Ruby on Rails, garantisce trasparenza, sicurezza e libertà di personalizzazione, elementi particolarmente apprezzati in ambito aziendale e pubblico.
Tuttavia, rispetto ad alcune soluzioni commerciali (come Jira o Asana), può richiedere una fase di configurazione iniziale più tecnica e un po’ di esperienza sistemistica, specialmente per l’integrazione con Apache o Passenger.
Una volta configurato correttamente, però, Redmine offre prestazioni eccellenti, stabilità e una vasta community di supporto.
In sintesi Redmine è una piattaforma ideale per chi cerca:
- una gestione progetti completa e autonoma,
- un sistema personalizzabile e senza costi di licenza,
- una soluzione sicura e integrabile con i sistemi IT esistenti.


0 commenti