Come installare OpenProject su GNU/Debian Jessie

Ottavio Campana bio photo Di Ottavio Campana

Sono un grande fan della suite Altassian, soprattutto Jira. Uso per alcuni miei progetti personali Bitbucket, ma talvolta per altri progetti mi capita di aver bisogno di una soluzione simile alla piattaforma di Atlassian, ad un costo minore.

Dopo aver fatto diverse prove ho scoperto OpenProject, che è meno stiloso di Jira ma è comunque molto completo. L’ho installato su un server baremetal di Scaleway, riuscendo ad avere una piattaforma che posso condividere con i miei compagni di eMBA al prezzo di 3€/mese.

Le istruzioni online per installare OpenProject sono un po’ sgangherate, quindi ho deciso di riassumere qui tutti i passaggi, nel caso in cui altre persone fossero interessate.

Una premessa: OpenProject è un programma opensource, che viene distribuito in pacchetti per chi lo vuole eseguire su un proprio server, altrimenti viene venduto as a service. I pacchetti per Debian sono disponibili ad oggi fino a Jessie, mentre per Stretch il software non è disponibile come già pacchettizzato e non è nemmeno agevole installarlo a mano, perché MySQL è diventato MariaDB e ci sono alcuni problemi con le versioni più aggiornate di Ruby. Ecco perché sul server di scaleway ho installato Debian Jessie e non Stretch. Per fortuna Debian fornisce gli aggiornamenti di sicurezza per oldstable, quindi non è un problema non avere l’ultima versione.

Iniziamo con l’importare la firma digitale del repository dei pacchetti di OpenProject per Debian Jessie:

root@debian:~# wget -qO- https://dl.packager.io/srv/opf/openproject-ce/key | apt-key add -

Per proseguire è necessario installare apt-transport-https, perché packager.io, il sito mediante il quale vengono distribuiti i pacchetti, fornisce il software solo mediante https e non http.

root@debian:~# apt-get install apt-transport-https

A questo punto è necessario aggiungere i repository per Let’s encrypt ed OpenProject:

root@debian:~#  echo 'deb http://ftp.debian.org/debian jessie-backports main' | \
    tee /etc/apt/sources.list.d/backports.list

root@debian:~# wget -O /etc/apt/sources.list.d/openproject-ce.list \
    https://dl.packager.io/srv/opf/openproject-ce/stable/7/installer/debian/8.repo

Installiamo certbot per la generazione dei certificati

root@debian:~# apt-get update
root@debian:~# apt-get install python-certbot-apache -t jessie-backports
root@debian:~# certbot --apache -d nome.sito.it

A questo punto, se la procedura è andata a buon fine, dopo aver risposto ad alcune semplici domande, dovreste vedere questi file:

root@debian:~# ls /etc/letsencrypt/archive/nome.sito.it/
cert1.pem  chain1.pem  fullchain1.pem  privkey1.pem
root@debian:~#

I certificati di Let’s Encrypt hanno una durata limitata di 90 giorni e devono essere rinnovati. I motivi di questa scelta sono spiegati qui e di fatto viene fatto perché si vuole fare in modo che se un certificato viene compromesso l’impatto sia limitato. Per non dover aggiornare a mano i certificati basta mettere una entry nella crontab:

root@debian:~# crontab -e
# m h  dom mon dow   command
* 7,19 * * * certbot -q renew

e dimenticarsi del rinnovo dei certificati. Vale la pena notare che ad ogni rinnovo verranno generati dei vecchi certificati, con numero progressivo incrementato di uno. Quindi al primo rinnovo nella directory /etc/letsencrypt/archive/nome.sito.it/ troveremo questi file

root@debian:~# ls /etc/letsencrypt/archive/nome.sito.it/
cert1.pem  chain1.pem  fullchain1.pem  privkey1.pem
cert2.pem  chain2.pem  fullchain2.pem  privkey2.pem
root@debian:~#

Per evitare problemi al rinnovo, nei passaggi successivi verrà usata la directory /etc/letsencrypt/live/nome.sito.it/, che contiene link simbolici sempre aggiornati all’ultimo certificato generato.

Fatto questo è il momento di installare OpenProject:

root@debian:~# apt-get install openproject

Questo comando provvederà ad installare tutte le dipendenze. Per la creazione del sito bisogna lanciare il seguente comando e prepararsi a rispondere ad una serie di domande:

root@debian:~# openproject configure

Il programma di configurazione è molto ricco, io di solito scelgo di:

  • installare mysql
  • installare apache2, che chiede il fully qualified domain name (FQDN) del sito, in questo caso nome.sito.it , non specifico nessun server path prefix perché ho un server ad hoc per usare OpenProject ed abilito ssl
  • come file del certificato ssl imposto /etc/letsencrypt/live/nome.sito.it/cert.pem
  • come chiave del certificato imposto /etc/letsencrypt/live/nome.sito.it/privkey.pem come chiave ,
  • non aggiungo alcuni CA bundle, perché in Debian c’è già il file /etc/ssl/certs/ISRG_Root_X1.pem , che è il certificato di Internet Security Research Group, ovvero la fondazione a capo di Let’s Encrypt
  • installare svn
  • installare git
  • installare sendmail
  • installare memcached

A questo punto potrebbe essere rimasto attivo un disto di default di apache2, quindi per sicurezza basta lanciare questi due comandi

root@debian:~# a2dissite 000-default-le-ssl.conf
root@debian:~# /etc/init.d/apache2 restart

A questo punto, per iniziare ad usare il programma, basta aprire un browser e visitare il sito https://nome.sito.it . Il primo accesso avverrà come admin/admin, ma verrà immediatamente richiesto di impostare un’altra password.

Controlliamo di non aver lasciato schifezze in giro

Il sito funziona, ma verifichiamo di non aver dimenticato in giro programmi indesiderati

root@debian:~# apt-get install nmap

Cosa possiamo esserci dimenticati?

root@debian:~# namp <ip pubblico>
Starting Nmap 6.47 ( http://nmap.org ) at 2017-09-27 14:36 CEST
Nmap scan report for aa.bb.cc.dd
Host is up (0.000011s latency).
Not shown: 995 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
25/tcp  open  smtp
80/tcp  open  http
111/tcp open  rpcbind
443/tcp open  https

Nmap done: 1 IP address (1 host up) scanned in 2.57 seconds
root@debian:~# 

La porta 22 aperta va bene, è per ssh, altrimenti come facciamo manutenzione?

La porta 25 aperta è di postfix, e non va assolutamente bene. È vero che nel file /etc/postfix/main.cf c’è la riga:

mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

che non permette di ricevere email se non dall’interfaccia di loopback, tuttavia esistono delle RBL che mettono in lista nera i server che hanno la porta 25 aperta. Per ovviare questo è necessario pubblicare dei recordi SPF e DKIM nella zona del proprio dominio. La cosa più semplice per uso hobbistico invece è modificare /etc/postfix/main.cf sostituendo la riga

inet_interfaces = all

con

inet_interfaces = loopback-only

e riavviare postfix. L’ultima porta da sistemare è la 111, occupata dal processo rcpbind. Questo è dovuto al fatto che Debian installa portmap di default, e per rimuoverlo basta dare il seguente comando:

root@debian:~# dpkg --purge rpcbind nfs-common

Aggiornamento

È stata rilasciata la versione 7.3.0 di OpenProject. La procedura di aggiornamento è semplice, ma richede un minimo di attenzione. Servono i seguenti comandi:

root@debian:~# apt-get update
root@debian:~# apt-get install --only-upgrade openproject
root@debian:~# openproject configure

In questo modo viene scompattato il pacchetto nuovo, ma per aggiornare il software viene usato il comando openproject configure che provvedere ad applicare tutte le migrazioni del database, se necessario.

Nella versione 7.3.0 di fine Settembre 2017 è stata introdotta la possibilità di citare gli utenti con @nome come nella suite Atlassian. Per fine Novembre 2017 è prevista la versione 7.4 che avrà altre evoluzioni minori, mentre per Marzo 2018 è previsto il rilascio di OpenProject 8.0 con un editor WYSIWYG per il wiki.

Per chi fosse interessato è possibile fare riferimento alla roadmap ed alla development timeline del progetto.