Installare GitLab CE su Ubuntu 16.04: guida passo dopo passo
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
- Installare i pacchetti di base
- Aggiungere il repository e installare GitLab CE
- Configurare l’URL esterno
- Generare certificati SSL con Let’s Encrypt e dhparam
- Abilitare HTTPS in Nginx
- Configurare UFW
- Passaggi post-installazione (account, SSH key, limiti)
- 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 updateInstalla i pacchetti necessari, incluso curl, openssh-server, ca-certificates e postfix per la gestione SMTP:
sudo apt install curl openssh-server ca-certificates postfixDurante 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.


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
Installa GitLab CE:
sudo apt install gitlab-ceAttendi che il pacchetto venga scaricato e installato. L’installer omnibus configurerà i servizi necessari.

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.rbTrova 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 -yEsegui la generazione del certificato per il tuo dominio:
letsencrypt certonly -d gitlab.hakase-labs.coInserisci la tua email per le notifiche di rinnovo e accetta i Termini di Servizio.


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
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.rbImposta:
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.

Applica la nuova configurazione eseguendo:
sudo gitlab-ctl reconfigureAttendi che omnibus configuri i servizi. Vedrai l’output di Chef che applica le modifiche.

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
Controlla lo stato:
ufw statusDovresti vedere SSH, HTTP e HTTPS elencati come consentiti.

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.

Accedi con l’utente root.

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


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

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


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.

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 masterInserisci la password quando richiesto. Dopo il push, verifica dal web che il file sia presente.


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)
- Prima di ogni upgrade, creare backup: sudo gitlab-rake gitlab:backup:create
- Verificare la presenza del backup in /var/opt/gitlab/backups/
- Se l’upgrade fallisce, ripristinare seguendo la guida ufficiale: fermare i servizi, ripristinare backup e riavviare (gitlab-ctl restart).
- 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.