Da quando GitHub è stato acquisito da Microsoft, alcuni sviluppatori hanno pianificato di migrare i propri repository di codice da github.com a una soluzione alternativa ospitata autonomamente. GitLab Community Edition (CE) è la scelta più comune.
Come soluzione sofisticata e flessibile, GitLab CE può essere implementato utilizzando vari metodi, ma qui sarà coperto solo il metodo ufficialmente raccomandato, l'installazione del pacchetto Omnibus.
Prerequisiti
- Una nuova istanza del server Vultr Debian 9 x64 con almeno 4 GB di memoria. 8 GB o più sono consigliati per servire fino a 100 utenti. Dì che il suo indirizzo IPv4 è
203.0.113.1.
- Un utente sudo .
- Un dominio
gitlab.example.compuntato verso l'istanza sopra menzionata.
Nota: durante la distribuzione sulla propria istanza del server, assicurarsi di sostituire tutti i valori di esempio con quelli effettivi.
Avvia un terminale SSH e accedi all'istanza del tuo server Debian 9 x64 come utente sudo.
Aggiungi una partizione di swap e modifica le impostazioni di swapiness
Quando si distribuisce GitLab CE 11.x su una macchina con 4 GB di memoria, è necessario configurare una partizione di scambio da 4 GB per un funzionamento regolare.
sudo dd if=/dev/zero of=/swapfile count=4096 bs=1M
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
free -m
Nota: se si utilizza una dimensione del server diversa, la dimensione della partizione di swap può variare.
Ai fini delle prestazioni del sistema, si consiglia di configurare le impostazioni di swappiness del kernel su un valore basso come 10:
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
cat /proc/sys/vm/swappiness
L'output del catcomando sarà 10.
Imposta il nome host e il nome dominio completo (FQDN) della macchina
Utilizzare i comandi seguenti per impostare un nome host gitlabe un FQDN gitlab.example.comper la macchina:
sudo hostnamectl set-hostname gitlab
sudo sed -i "1 i\203.0.113.1 gitlab.example.com gitlab" /etc/hosts
Puoi confermare i risultati:
hostname
hostname -f
Imposta le regole del firewall
Imposta regole firewall ragionevoli per la gestione di un sito Web:
sudo iptables -F
sudo iptables -X
sudo iptables -Z
sudo iptables -A INPUT -s $(echo $(w -h ${USER}) | cut -d " " -f3) -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -d 127.0.0.0/8 -j REJECT
sudo iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
sudo iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
sudo iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD DROP
Tutte le impostazioni sopra avranno effetto immediato. Utilizzare il comando seguente per elencarli per la revisione:
sudo iptables -L -n
Utilizzare lo iptable-persistentstrumento per salvare tutte le regole di iptables esistenti in un file /etc/iptables/rules.v4, rendendo persistenti tutte le regole di iptables:
sudo apt install -y iptables-persistent
Durante l'installazione, ti verrà chiesto se desideri salvare le regole IPv4 / IPv6 correnti. Premere ENTERdue volte per salvare sia le attuali regole IPv4 che IPv6 su /etc/iptables/rules.v4e /etc/iptables/rules.v6.
Se si tenta di aggiornare le regole IPv4 in un secondo momento, utilizzare quanto segue per salvare l'aggiornamento:
sudo bash -c 'iptables-save > /etc/iptables/rules.v4'
Aggiorna il sistema
sudo apt update
sudo apt upgrade -y && sudo shutdown -r now
Quando il sistema è di nuovo funzionante, accedere nuovamente come lo stesso utente sudo per andare avanti.
Passaggio 2: installare le dipendenze richieste
Prima di installare GitLab CE, è necessario installare le dipendenze richieste:
sudo apt install -y curl openssh-server ca-certificates
Inoltre, se si desidera utilizzare Postfix per inviare messaggi di notifica, è necessario installare Postfix:
sudo apt install -y postfix
Durante l'installazione, potrebbe apparire una schermata di configurazione:
- Premere TABper evidenziare il
<OK>pulsante nella prima schermata, quindi premere ENTER.
- Seleziona
Internet Sitee premi ENTER.
- Per il
mail namecampo, immettere l'FQDN del server gitlab.example.come premere ENTER.
- Se vengono visualizzate altre schermate, premere ENTERper accettare le impostazioni predefinite.
Avviare e abilitare il servizio Postfix:
sudo systemctl enable postfix.service
sudo systemctl start postfix.service
Modifica le regole del firewall per Postfix:
sudo iptables -A INPUT -i eth0 -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -i eth0 -p tcp --dport 143 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -i eth0 -p tcp --dport 993 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -i eth0 -p tcp --dport 110 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -i eth0 -p tcp --dport 995 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo bash -c 'iptables-save > /etc/iptables/rules.v4'
Dopo aver installato Postfix, è necessario configurare Postfix modificando il file di configurazione principale /etc/postfix/main.cfin base alle impostazioni del server effettive.
Nota: oltre alle istruzioni precedenti, è necessario inviare un ticket di supporto per annullare il blocco predefinito di Vultr sulla porta SMTP 25.
In alternativa, se si desidera utilizzare un'altra soluzione di messaggistica, saltare l'installazione di Postfix e scegliere di utilizzare un server SMTP esterno dopo l'installazione di GitLab CE.
Passaggio 3: installare il repository APT GitLab e quindi installare GitLab CE
Configura il repository APT GitLab CE sul tuo sistema:
cd
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
Quindi, installa GitLab CE 11.x:
sudo EXTERNAL_URL="http://gitlab.example.com" apt install -y gitlab-ce
L'installazione potrebbe richiedere alcuni minuti.
Infine, punta il tuo browser Web preferito a http://gitlab.example.com, quindi invia una nuova password come richiesto per completare l'installazione.
D'ora in poi, utilizzare le credenziali di seguito per accedere come amministratore:
- Nome utente:
root
- Parola d'ordine:
<your-new-password>
Passaggio 4: abilitare l'accesso HTTPS integrando un certificato SSL Let's Encrypt
Per ora, GitLab CE 11.x è stato installato correttamente sull'istanza del server e gli utenti possono già visitare il sito utilizzando il protocollo HTTP. Per motivi di sicurezza, si consiglia di abilitare l'accesso HTTPS al server GitLab integrando un certificato SSL Let's Encrypt.
Utilizzare l' vieditor per aprire il file di configurazione di GitLab CE:
sudo vi /etc/gitlab/gitlab.rb
Trova le seguenti due righe:
external_url 'http://gitlab.example.com'
# letsencrypt['contact_emails'] = [] # This should be an array of email addresses to add as contacts
Sostituirli di conseguenza:
external_url 'https://gitlab.example.com'
letsencrypt['contact_emails'] = ['admin@example.com']
Salva ed esci:
:wq!
Riconfigurare GitLab CE utilizzando le impostazioni aggiornate:
sudo gitlab-ctl reconfigure
La riconfigurazione potrebbe richiedere del tempo.
Al termine della riconfigurazione, tutti gli utenti saranno costretti a utilizzare il protocollo HTTPS quando accedono al sito GitLab.
Nota: dopo il passaggio da HTTP a HTTPS, i cookie legacy possono causare un errore GitLab 422. La cancellazione dei cookie risolve questo problema.