
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