
La gestione della Governance, Risk and Compliance (GRC) è spesso percepita come un’attività riservata alle grandi organizzazioni con budget dedicati e piattaforme enterprise dai costi proibitivi.
OpenGRC ribalta questa prospettiva: si tratta di un’applicazione web open-source progettata specificamente per piccoli team e PMI che hanno la necessità di strutturare il proprio programma di sicurezza senza rinunciare alla semplicità d’uso.
In questa guida vedremo come installare e configurare OpenGRC su Ubuntu Server 26.04 LTS, dalla preparazione dell’ambiente fino al primo accesso all’interfaccia web.
Costruito su PHP e il framework Laravel OpenGRC permette di gestire controlli di sicurezza, framework di compliance, audit, rischi e vendor management da un’unica interfaccia intuitiva, con il vantaggio di essere completamente self-hosted.
Licenza: OpenGRC è distribuito sotto licenza Creative Commons Attribution-NonCommercial-ShareAlike 4.0. È consentito l’uso commerciale interno, ma non la rivendita del software né l’hosting per clienti terzi.
Che tu stia cercando di avvicinarti per la prima volta al mondo della GRC o di sostituire un foglio Excel con qualcosa di più strutturato OpenGRC potrebbe essere esattamente ciò di cui hai bisogno.
OpenGRC è un’applicazione web open-source per la Governance, Risk and Compliance (GRC) pensata per piccoli team e PMI.
PREREQUISITI
Prima di iniziare verificare che il sistema soddisfi i requisiti minimi:
- PHP8.X
- Composer2.5
- Node.js18.0
- NPM8.0
- MySQL 5.7+ / MariaDB 10.3+ / SQLite 3
AGGIORNAMENTO DEL SISTEMA
Aggiornare i pacchetti del sistema prima di procedere con il comando:
|
0 |
sudo apt update && sudo apt upgrade -y
|
INSTALLAZIONE DI PHP E RELATIVE ESTENSIONI
Procedere all’installazione di PHP con i seguenti comandi:
|
0
1
2
3
4
|
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
|
Installare il PHP con tutte le estensioni necessarie con il seguente comando:
|
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
sudo apt install -y \
php \
php-cli \
php-common \
php-fpm \
php-mbstring \
php-xml \
php-curl \
php-zip \
php-gd \
php-bcmath \
php-intl \
php-sqlite3 \
php-mysql \
unzip \
git \
curl
|
Verificare la versione installata:
|
0 |
php -v
|
Dovremmo visualizzare il seguente output:
|
0
1
2
3
4
|
PHP 8.5.4 (cli) (built: Apr 1 2026 09:36:11) (NTS)
Copyright (c) The PHP Group
Built by Ubuntu
Zend Engine v4.5.4, Copyright (c) Zend Technologies
with Zend OPcache v8.5.4, Copyright (c), by Zend Technologies
|
INSTALLAZIONE DEL COMPOSER
Installare il Composer con i seguenti comandi:
|
0
1
2
3
4
|
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer
|
Verificare la versione installata con il comando:
|
0 |
composer --version
|
Se è tutto OK dovremmo visualizzare il seguente output:
|
0
1
2
|
Composer version 2.9.7 2026-04-14 13:31:52
PHP version 8.5.4 (/usr/bin/php8.5)
Run the "diagnose" command to get more detailed diagnostics output.
|
INSTALLAZIONE DI NODE.JS E NPM
Usa NodeSource per installare Node.js 20 LTS:
|
0
1
2
|
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
|
Verificare la versione di Node.Js con il comando:
|
0 |
node -v
|
Se è tutto OK dovremmo visualizzare il seguente output:
|
0 |
v20.20.2
|
Verificare la versione di NPM con il comando:
|
0 |
npm -v
|
Se è tutto OK dovremmo visualizzare il seguente output:
|
0 |
10.8.2 |
CONFIGURAZIONE DEL DATABASE MYSQL
Se si preferisce usare SQLite (consigliato per ambienti di test o installazioni leggere), puoi saltare questo step.
L’installer di OpenGRC configura SQLite automaticamente senza ulteriori setup.
Per un ambiente di produzione consiglio l’installazione di MySQL:
|
0
1
2
3
4
|
sudo apt install -y mysql-server
sudo systemctl enable --now mysql
sudo mysql_secure_installation
|
Creare il database e l’utente dedicato con i seguenti comandi:
|
0 |
sudo mysql -u root -p
|
Quindi Creare il DB con relativa utenza con i seguenti comandi:
|
0
1
2
3
4
5
6
7
8
|
CREATE DATABASE opengrc CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'opengrc'@'localhost' IDENTIFIED BY 'password_sicura';
GRANT ALL PRIVILEGES ON opengrc.* TO 'opengrc'@'localhost';
FLUSH PRIVILEGES;
EXIT;
|
ATTENZIONE: Se si usa MySQL il database deve essere creato prima di eseguire l’installer.
INSTALLAZIONE DI APACHE E CONFIGURAZIONE DEL VIRTUAL HOST
Installare Apache e il modulo per PHP-FPM con i seguenti comandi:
|
0
1
2
3
4
5
6
|
sudo apt install -y apache2 libapache2-mod-fcgid
sudo a2enmod rewrite proxy_fcgi setenvif
sudo a2enconf php8.5-fpm
sudo systemctl enable --now apache2
|
Creare la directory di installazione con il comando:
|
0 |
sudo mkdir -p /var/www/html
|
CLONAZIONE DEL REPOSITORY DI OPERNGRC
Posizionarsi nella cartella html con il comando:
|
0 |
cd /var/www/html
|
Quindi clonare il repository con il comando:
|
0
1
2
|
sudo git clone https://github.com/LeeMangold/OpenGRC.git
cd OpenGRC
|
ESECUZIONE DELL’INSTALLER
L’installer interattivo si occupa di tutto: dipendenze, database, chiave applicativa, utente admin e asset frontend.
Eseguire il comando:
|
0 |
sudo bash install.sh
|
Premere un qualsiasi tasto per proseguire
Selezionare MySQL
Inserire l’IP del database MySQL (nel mio caso è localhost)
Inserire la porta del Database
Inserire il nome del Database
Inserire l’utente per l’accesso al Database
Inserire la password dell’utente
Inserire la mail dell’utente admin
Inserire la password di accesso
Inserire il nome del Site
Inserire il Site URL
Se è andato tutto a buon fine dovremmo visualizzare il seguente output:
########################################
OpenGRC has been installed successfully!
########################################
ALTERNATIVA: Installazione non interattiva (SQLite + credenziali di default)
Se vuoi installare rapidamente con i valori predefiniti (SQLite, utente [email protected] / password password) eseguire i comandi:
|
0
1
2
|
composer update
php artisan opengrc:install --unattended
|
NOTA BENE: Dopo l’installazione se devi eseguire nuovamente l’installer devi prima eliminare il file databases/opengrc.sqlite (per SQLite) oppure eliminare e ricreare il database MySQL.
IMPOSTAZIONE DEI PERMESSI CORRETTI
Posizionarsi nella cartella OpenGRC con il comando:
|
0 |
cd /var/www/html/OpenGRC
|
Quindi configurare i permessi con i seguenti comandi:
|
0
1
2
|
sudo chown -R www-data:www-data /var/www/html/OpenGRC/vendor
sudo chmod -R 775 storage bootstrap/cache
|
E’ possibile rivedere i permessi eseguendo lo script incluso nel progetto con il comando:
|
0 |
cat set_permissions
|
E’ possibile modificare i permessi (se necessario) eseguendo il comando:
|
0 |
sudo bash set_permissions
|
CONFIGURAZIONE DEL VIRTUAL HOST DI APACHE
Creare il file di configurazione del sito con il comando:
|
0 |
sudo nano /etc/apache2/sites-available/opengrc.conf
|
Incollare la seguente configurazione (sostituire tuodominio.it con il tuo dominio o IP):
|
0
1
2
3
4
5
6
7
8
9
10
11
12
|
apache<VirtualHost *:80>
ServerName tuodominio.it
DocumentRoot /var/www/html/OpenGRC/public
<Directory /var/www/html/OpenGRC/public>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/opengrc_error.log
CustomLog ${APACHE_LOG_DIR}/opengrc_access.log combined
</VirtualHost>
|
Salvare e chiudere il file di configurazione.
Abilitare il sito e ricaricare Apache con i seguenti comandi:
|
0
1
2
3
4
|
sudo a2dissite 000-default.conf
sudo a2ensite opengrc.conf
sudo systemctl reload apache2
|
CONFIGURAZIONE DEL QUEUE WORKER CON SUPERVISOR
OpenGRC usa il sistema di code di Laravel per elaborare task in background (email, import, report, ecc.).
Senza un queue worker attivo, queste funzionalità non operano correttamente.
Installare Supervisor con i seguenti comandi:
|
0
1
2
|
sudo apt install -y supervisor
sudo systemctl enable --now supervisor
|
Creare la configurazione del worker con il comando:
|
0 |
sudo nano /etc/supervisor/conf.d/opengrc-worker.conf
|
Quindi incollare la seguente configurazione:
|
0
1
2
3
4
5
6
7
8
9
10
11
|
[program:opengrc-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/OpenGRC/artisan queue:work --sleep=3 --tries=3 --max-time=3600
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=www-data
numprocs=1
redirect_stderr=true
stdout_logfile=/var/www/html/OpenGRC/storage/logs/worker.log
stopwaitsecs=3600
|
Salvare e chiudere il file di configurazione
ATTENZIONE: Il worker deve girare con lo stesso utente del web server (www-data). In caso contrario si verificheranno errori di permessi su cache, log e storage.
Avviare il worker con il comando:
|
0 |
sudo supervisorctl reread
|
Dovremmo visualizzare il seguente output:
|
0 |
opengrc-worker: available
|
|
0 |
sudo supervisorctl update
|
Dovremmo visualizzare il seguente output:
|
0 |
opengrc-worker: added process group
|
|
0 |
sudo supervisorctl start opengrc-worker:*
|
Dovremmo visualizzare il seguente output:
|
0 |
opengrc-worker:opengrc-worker_00: started
|
Verificare lo stato con i seguenti comandi:
|
0 |
sudo supervisorctl status opengrc-worker:*
|
Se è tutto OK dovremmo visualizzare il seguente output:
|
0
1
2
|
opengrc-worker:opengrc-worker_00 RUNNING pid 30413, uptime 0:00:28
tail -f /var/www/html/OpenGRC/storage/logs/worker.log
|
PRIMO ACCESSO ALLA WEB GUI E CONFIGURAZIONE BASE
Aprire il browser e aprire l’indirizzo del server:
http://tuodominio.it
Se è tutto Ok dovremmo visualizzare la pagina di accesso di OpenGRC
Inserire le credenziali censite in prencedenza quindi cliccare Sign In
Dovremmo visualizzare la Dashboard di OpenGRC come mostrato nell’immagine sovrastante
CONFIGURAZIONE BASE TRAMITE INTERFACCIA WEB
Dopo il primo login andare in Settings per configurare:
- Nome organizzazione
- fuso orario
- MailServer SMTP per l’invio di notifiche email
- Politiche password
- timeout sessione
- Authentication SSO (Microsoft Azure, Okta, Google, Auth0)
- Storage locale o AWS S3 per i file allegati
- Portale pubblico per la trasparenza verso clienti
AGGIORNAMENTI DI OPENGRC
Per aggiornare OpenGRC a una nuova versione eseguire i seguenti comandi riportati di seguito:
|
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
cd /var/www/html/OpenGRC
git pull origin main
composer install --no-dev
npm install
npm run build
php artisan migrate --force
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan queue:restart
sudo chown -R www-data:www-data storage bootstrap/cache
|
TROUBLESHOOTING
Errori di permessi
|
0
1
2
3
|
sudo chown -R www-data:www-data /var/www/html/OpenGRC/storage
sudo chown -R www-data:www-data /var/www/html/OpenGRC/bootstrap/cache
sudo chmod -R 775 /var/www/html/OpenGRC/storage
sudo chmod -R 775 /var/www/html/OpenGRC/bootstrap/cache
|
Il queue worker non processa i job
bash# Controlla lo stato di Supervisor
|
0 |
sudo supervisorctl status
|
Verifica il file .env
|
0 |
grep QUEUE_CONNECTION /var/www/html/OpenGRC/.env
|
# Deve essere: QUEUE_CONNECTION=database (non sync)
Controllare i job falliti
|
0
1
2
|
cd /var/www/html/OpenGRC
php artisan queue:failed
Pagina bianca o errori 500
|
|
0
1
2
|
tail -f /var/www/html/OpenGRC/storage/logs/laravel.log
tail -f /var/log/apache2/opengrc_error.log
|
Assicurarsi anche che la chiave applicativa sia impostata nel file .env:
|
0 |
grep APP_KEY /var/www/html/OpenGRC/.env
|
# Se vuota, rigenera con:
|
0 |
php artisan key:generate
|
Per Creare un nuovo utente
|
0
1
|
cd /var/www/html/OpenGRC
php artisan opengrc:create-user
|
Per reimpostare la password di un utente
|
0 |
php artisan opengrc:reset-password
|


0 commenti