Guida alle tecnologie

Installare GitLab CE su Ubuntu 16.04: guida passo dopo passo

9 min read DevOps Aggiornato 17 Oct 2025
Installare GitLab CE su Ubuntu 16.04
Installare GitLab CE su Ubuntu 16.04

Questa guida spiega come installare e configurare GitLab CE (Community Edition) su un server Ubuntu 16.04 usando il pacchetto omnibus. Copre i pacchetti richiesti, l’aggiunta del repository GitLab, la generazione di certificati Let’s Encrypt e dhparam, la configurazione di Nginx per HTTPS, le regole UFW, i passaggi post-installazione e i test essenziali. Includo inoltre checklist per ruoli, suggerimenti di hardening, procedure di rollback e casi di test.

  • Introduzione e panoramica
  • Prerequisiti
  • Step 1–8: installazione e configurazione dettagliata
  • Controlli, test e operazioni post-install
  • Approcci alternativi e quando non usare questa procedura
  • Modello mentale e check-list per i ruoli
  • Sicurezza, backup e rollback
  • Casi di test e criteri di accettazione
  • Suggerimenti social/annuncio
  • Riferimenti utili

Introduzione

GitLab è un gestore di repository Git open source sviluppato da GitLab Inc. Fornisce funzionalità web per gestione del codice, issue tracking, review, wiki, integrazione continua e gestione delle merge request. Questo tutorial mostra come installare GitLab CE (Community Edition) su Ubuntu 16.04 Xenial Xerus usando il pacchetto omnibus, che semplifica l’installazione raggruppando tutte le dipendenze.

Definizione rapida: “Omnibus” è il pacchetto ufficiale che contiene GitLab e tutti i servizi correlati (Nginx, PostgreSQL, Redis, ecc.).

Edizioni di GitLab (breve)

  • GitLab CE (Community Edition) — self-hosted e gratuito.
  • GitLab EE (Enterprise Edition) — self-hosted con funzionalità aggiuntive a pagamento.
  • GitLab.com — SaaS gestito da GitLab Inc.
  • GitLab.io — istanza privata gestita da GitLab Inc.

Cosa faremo

  1. Installare i pacchetti di base
  2. Aggiungere il repository e installare GitLab CE
  3. Configurare l’URL esterno
  4. Generare certificati SSL con Let’s Encrypt e dhparam
  5. Abilitare HTTPS in Nginx
  6. Configurare UFW
  7. Passaggi post-installazione (account, SSH key, limiti)
  8. Testare la configurazione e il push di un repository

Prerequisiti

  • Ubuntu 16.04 Server a 64 bit
  • Minimo 2 GB RAM
  • Privilegi root o sudo
  • Dominio DNS configurato che punti al server (A/AAAA)
  • Porte 22, 80 e 443 raggiungibili

Important: considerare l’utilizzo di versioni di sistema più recenti per ambienti di produzione a lungo termine.

Step 1 - Installare i pacchetti richiesti su Ubuntu

Accedi al server come root e aggiorna i repository:

ssh root@GitLabServer
apt-get update

Installa i pacchetti necessari, incluso curl, openssh-server, ca-certificates e postfix per la gestione SMTP:

sudo apt install curl openssh-server ca-certificates postfix

Durante l’installazione di postfix ti verrà chiesto il tipo di configurazione: seleziona “Internet Site” e inserisci il nome di dominio del server per l’invio di posta.

Configurare Postfix su Ubuntu

Inserire il nome host per Postfix su Ubuntu

Nota: se non desideri gestire posta locale, puoi collegare GitLab a un SMTP esterno (es. provider aziendale) nelle impostazioni di GitLab.

Step 2 - Aggiungere il repository GitLab e installare

Aggiungi il repository ufficiale GitLab e lo script di installazione:

curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

Aggiungere il repository GitLab su Ubuntu 16.04

Installa GitLab CE:

sudo apt install gitlab-ce

Attendi che il pacchetto venga scaricato e installato. L’installer omnibus configurerà i servizi necessari.

Installare GitLab

Step 3 - Configurare l’URL principale di GitLab

Modifica il file di configurazione principale che si trova in /etc/gitlab:

cd /etc/gitlab
vim gitlab.rb

Trova la riga con external_url e impostala sul tuo dominio. Esempio iniziale (HTTP):

external_url 'http://gitlab.hakase-labs.co'

Salva e chiudi. Questa impostazione verrà aggiornata successivamente per usare HTTPS.

Step 4 - Generare certificati SSL con Let’s Encrypt e dhparam

Installa il client Let’s Encrypt (certbot o letsencrypt):

sudo apt install letsencrypt -y

Esegui la generazione del certificato per il tuo dominio:

letsencrypt certonly -d gitlab.hakase-labs.co

Inserisci la tua email per le notifiche di rinnovo e accetta i Termini di Servizio.

Generare certificato SSL su Ubuntu 16.04

Accettare i termini di Let's Encrypt

Al termine troverai i file in /etc/letsencrypt/live/gitlab.hakase-labs.co/.

Crea la cartella ssl in /etc/gitlab per i file aggiuntivi:

mkdir -p /etc/gitlab/ssl/

Genera un dhparam a 2048 bit (operazione che può richiedere tempo):

sudo openssl dhparam -out /etc/gitlab/ssl/dhparams.pem 2048

Generare dhparam con openssl

Imposta permessi restrittivi sui certificati:

chmod 600 /etc/gitlab/ssl/*

Ora disponi dei certificati Let’s Encrypt e del file dhparams nel percorso corretto.

Step 5 - Abilitare HTTPS in Nginx (config omnibus)

Modifica nuovamente /etc/gitlab/gitlab.rb e cambia external_url su https:

cd /etc/gitlab
vim gitlab.rb

Imposta:

external_url 'https://gitlab.hakase-labs.co'
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/letsencrypt/live/gitlab.hakase-labs.co/fullchain.pem"
nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/gitlab.hakase-labs.co/privkey.pem"
nginx['ssl_dhparam'] = "/etc/gitlab/ssl/dhparams.pem"

Note: mantieni le virgolette e i percorsi esatti.

Abilitare HTTPS su GitLab e redirect

Applica la nuova configurazione eseguendo:

sudo gitlab-ctl reconfigure

Attendi che omnibus configuri i servizi. Vedrai l’output di Chef che applica le modifiche.

Applicare la configurazione di GitLab completata

A questo punto Nginx servirà GitLab via HTTPS e reindirizzerà le richieste HTTP a HTTPS.

Step 6 - Configurare il firewall UFW

Abilita UFW e consenti le porte necessarie:

ufw enable
ufw allow ssh
ufw allow http
ufw allow https

Consentire HTTP e HTTPS su UFW Ubuntu

Controlla lo stato:

ufw status

Dovresti vedere SSH, HTTP e HTTPS elencati come consentiti.

Controllare le regole UFW Ubuntu

Nota: assicurati di non chiudere l’accesso SSH durante la configurazione remota.

Step 7 - Post-installazione e configurazioni utente

Apri il browser su https://gitlab.hakase-labs.co. Verrai indirizzato via HTTPS.

Reset della password root: alla prima visita GitLab ti chiederà di impostare la password dell’utente root.

Reimpostare la password di default di GitLab

Accedi con l’utente root.

Login GitLab utente root

Aggiorna il profilo e l’username nelle impostazioni utente (Profile e Account) per sostituire i valori di default.

Cambiare il profilo di GitLab

Aggiornare nome ed email su GitLab

Aggiungi la tua chiave SSH in Settings → SSH Keys (copia il contenuto di id_rsa.pub su macchina locale):

ssh-keygen

Generare nuova chiave SSH su Ubuntu

Aggiungere la chiave SSH a GitLab

Impostazioni amministrative: se hai privilegi admin, vai in Admin Area → Settings per configurare limiti di progetto, restrizioni di signup e altre policy.

Configurare il sistema GitLab

Configurare limiti e restrizioni di registrazione

Step 8 - Testing: creare progetto, commit e push

Crea un nuovo progetto tramite l’icona + e riempi nome, descrizione e visibilità, poi clicca Create project.

Creare nuovo progetto su GitLab

Dal client Git locale, configura user.name e user.email:

git config --global user.name "hakase"
git config --global user.email "[email protected]"

Clona il repository, crea README.md, committa e fai push:

git clone https://[email protected]/hakase/howtoforge.git
cd howtoforge/
vim README.md

git add .
git commit -m 'Add README.md file by hakase-labs'
git push origin master

Inserisci la password quando richiesto. Dopo il push, verifica dal web che il file sia presente.

Testare primo commit su GitLab

Repository GitLab funzionante

Controlli rapidi e verifica finale

  • Accedi via HTTPS e controlla il certificato
  • Verifica che il redirect HTTP→HTTPS funzioni
  • Verifica l’accesso SSH con la chiave aggiunta
  • Controlla i servizi omnibus: sudo gitlab-ctl status

Quando questo metodo non è consigliato (controesempi)

  • Se vuoi gestire ogni singolo servizio (Postgres, Redis, Nginx) separatamente per esigenze di tuning avanzato: l’installazione da sorgente o container è preferibile.
  • Per ambienti containerizzati su Kubernetes, preferire il chart Helm ufficiale di GitLab.
  • Se necessiti di funzionalità Enterprise (LDAP avanzato, auditing esteso): valuta GitLab EE.

Approcci alternativi

  • Installazione da sorgente: più flessibile, maggiore complessità operativa.
  • Uso di container Docker: utile per ambienti di test o per orchestrazione con Docker Compose.
  • Distribuzione su Kubernetes: consigliata per produzione scalabile e resiliente (usare Helm chart ufficiale).

Vantaggi omnibus: rapido, supportato ufficialmente, gestione semplificata dei servizi.

Modello mentale e architettura minima

  • GitLab omnibus installa: applicazione GitLab + PostgreSQL + Redis + Nginx + Sidekiq.
  • Componenti critici: HTTPS (Nginx), DB (Postgres), coda (Redis), processi background (Sidekiq).
  • Porte principali: 22 (SSH), 80 (HTTP), 443 (HTTPS).

Fact box (numeri chiave e percorsi)

  • Sistema target: Ubuntu 16.04
  • RAM minima consigliata: 2 GB
  • Percorsi critici: /etc/gitlab/gitlab.rb, /etc/gitlab/ssl/, /etc/letsencrypt/live//
  • dhparam: 2048 bit (openssl dhparam)

Checklist operativa (Ruoli)

Admin di sistema:

  • Verificare snapshot/backup prima dell’installazione
  • Configurare UFW e regole di accesso
  • Validare DNS e certificati

DevOps:

  • Eseguire gitlab-ctl reconfigure e controllare log
  • Integrare monitoraggio (metriche, alert)
  • Automatizzare rinnovo certificati (certbot renew) e test post-renewal

Sviluppatore:

  • Aggiungere SSH key personale
  • Impostare user.name e user.email locali
  • Testare clone/push/pipeline

Hardening e pratiche di sicurezza

  • Aggiornamenti: pianificare aggiornamenti regolari dell’OS e di GitLab (backup prima dell’upgrade).
  • Backup: configurare backup periodico dei repository e del database (gitlab-rake gitlab:backup:create).
  • Accesso SSH: consentire SSH key e disabilitare l’autenticazione password ove possibile.
  • Fail2ban: considerare fail2ban per mitigare tentativi di accesso brute-force.
  • Permessi file: limitare permessi su /etc/gitlab/ssl (chmod 600).
  • Monitoraggio: attivare metriche e alert per spazio disco, CPU e memoria.

Privacy e note GDPR (hosting dati personali)

  • Se l’istanza ospita dati personali, definire responsabilità (Titolare/Responsabile) e conservazione dei dati.
  • Crittografia in transito: HTTPS obbligatoria.
  • Crittografia a riposo: valutare cifratura dischi o del backup se richiesta dalla policy.
  • Informare gli utenti riguardo retention e processi di cancellazione.

Important: questa sezione non sostituisce una consulenza legale.

Runbook di rollback e ripristino (sintesi)

  1. Prima di ogni upgrade, creare backup: sudo gitlab-rake gitlab:backup:create
  2. Verificare la presenza del backup in /var/opt/gitlab/backups/
  3. Se l’upgrade fallisce, ripristinare seguendo la guida ufficiale: fermare i servizi, ripristinare backup e riavviare (gitlab-ctl restart).
  4. Tenere copie offsite dei backup.

Casi di test e criteri di accettazione

Casi di test principali:

  • Accesso web via HTTPS: caricare la pagina di login senza warning.
  • Login con utente root: autenticazione corretta.
  • Clone SSH e HTTPS: clone, commit e push su repository appena creato.
  • Visualizza repository via interfaccia web: README e commit visibili.

Criteri di accettazione:

  • Servizio raggiungibile via HTTPS
  • Redirect HTTP→HTTPS funzionante
  • SSH key accettata e accesso via SSH funzionante
  • Backup creato e ripristinabile

Compatibilità e migrazione

  • Questa guida è specifica per Ubuntu 16.04 e pacchetti omnibus. Per versioni più recenti di Ubuntu o per ambienti cloud gestiti, consultare la documentazione ufficiale di GitLab.
  • Prima di migrare da una versione esistente, leggere la documentazione ufficiale sulle procedure di upgrade e su eventuali break changes.

Suggerimenti per il rinnovo automatico dei certificati

  • Aggiungere una job cron o systemd timer per eseguire: letsencrypt renew –quiet && gitlab-ctl restart nginx
  • Testare il rinnovo in staging prima di produrre il rinnovo reale.

Suggerimenti social (anteprima)

OG title: Installare GitLab CE su Ubuntu 16.04 — Guida completa OG description: Guida step-by-step per installare GitLab CE su Ubuntu 16.04 con HTTPS, certificati Let’s Encrypt, UFW e checklist di sicurezza.

Annuncio breve (100–200 parole)

Ho appena pubblicato una guida completa per installare GitLab CE su Ubuntu 16.04 usando il pacchetto omnibus: include istruzioni passo dopo passo per aggiungere il repository ufficiale, installare i pacchetti necessari, generare certificati Let’s Encrypt, configurare Nginx per HTTPS, aprire le porte con UFW e verificare il funzionamento con clone, commit e push. La guida contiene checklist per amministratori e sviluppatori, suggerimenti di sicurezza, procedure di rollback e casi di test per assicurare che l’istanza sia pronta per l’uso. È pensata per team che vogliono un’istanza self-hosted rapida da mettere in produzione. Consulta i riferimenti ufficiali in fondo per mantenere aggiornati pacchetti e procedure.

Riferimenti ufficiali e preferiti

Riepilogo finale

  • GitLab CE tramite omnibus è il modo più rapido per avviare un’istanza self-hosted.
  • Assicurati di avere DNS corretto, certificati validi e regole firewall appropriate.
  • Pianifica backup e procedure di upgrade/rollback prima di mettere in produzione.

Note: questa guida è focalizzata su Ubuntu 16.04 e sul pacchetto omnibus; per scenari container o Kubernetes valutare le alternative indicate sopra.

Autore
Redazione

Materiali simili

Installare e usare Podman su Debian 11
DevOps

Installare e usare Podman su Debian 11

Guida rapida a apt-pinning su Debian
Linux

Guida rapida a apt-pinning su Debian

Forzare FSR 4 con OptiScaler: guida completa
Guide.

Forzare FSR 4 con OptiScaler: guida completa

Dansguardian + Squid NTLM su Debian Etch
Rete

Dansguardian + Squid NTLM su Debian Etch

Riparare errore installazione SD su Android
Android

Riparare errore installazione SD su Android

Cartelle di rete con KNetAttach e remote:/
Linux

Cartelle di rete con KNetAttach e remote:/