GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come installare Gitlab Server con Docker su Ubuntu 18.04 LTS

Gitlab CE o Community Edition è un'applicazione open source utilizzata per ospitare i tuoi repository Git. L'hosting automatico dei tuoi repository Git ti dà il controllo totale sui tuoi dati fornendo al contempo un'interfaccia facile da usare per te e i membri del tuo team.

In questa guida, tratteremo come installare il tuo repository Git utilizzando l'offerta gratuita di Gitlab, la Community Edition. Se desideri funzionalità avanzate come approvazioni di unione, roadmap, gestione del portafoglio, ripristino di emergenza, scansione di container e così via, puoi scegliere di eseguire l'aggiornamento all'edizione Enterprise.

Prerequisiti

  • Un server basato su Ubuntu 18.04 con un utente sudo non root.
  • È necessario un VPS con un minimo di 2 core CPU e 8 GB di RAM in base ai requisiti hardware specificati per Gitlab CE che supporterà 100 utenti. Anche se puoi sostituire lo spazio di scambio con la RAM, non è consigliabile poiché l'applicazione verrà eseguita più lentamente.

Passaggio 1:installazione delle dipendenze

Prima di installare Gitlab, dobbiamo assicurarci che il nostro server disponga di determinati software che Gitlab avrà bisogno per funzionare correttamente. Esegui i seguenti comandi per installare le dipendenze.

$ sudo apt update
$ sudo apt install ca-certificates curl openssh-server ufw apt-transport-https -y

Alcuni dei software sopra indicati potrebbero essere preinstallati per te.

Fase 2:modifica la porta SSH del tuo sistema

Gitlab utilizzerà la porta 22 per il push dei repository tramite SSH. Anche l'SSH del tuo server è in esecuzione su di esso, il che genererà un conflitto. Ci sono due modi per farlo. O puoi cambiare la porta SSH che usi per connetterti al tuo sistema o puoi cambiare la porta che Gitlab utilizzerà per SSH. In questo tutorial, cambieremo la porta SSH per il server stesso.

Per fare ciò, dobbiamo modificare il file /etc/ssh/sshd_config. Apri il file nell'editor di testo nano.

$ sudo nano /etc/ssh/sshd_config

Trova la riga seguente e cambia 22 a 6622 e rimuovi il # davanti ad esso. Puoi scegliere qualsiasi porta desideri.

# Port 22

Premi Ctrl + X per chiudere il file e premi Y per salvare le modifiche.

Riavvia il servizio SSH.

$ sudo systemctl restart sshd

Chiudi la tua sessione SSH corrente e creane una nuova con la porta 6622 e riconnettiti al tuo server.

$ ssh [email protected] -p 6622

Fase 3:configurazione del firewall

Nel nostro passaggio precedente, abbiamo installato ufw (Uncomplicated Firewall). Prima di poter procedere con l'installazione di Gitlab, dobbiamo configurarlo.

Abilita SSH e la porta che abbiamo appena creato in modo da non essere bloccati.

$ sudo ufw allow OpenSSH
$ sudo ufw allow 6622

Abilita il firewall ufw.

$ sudo ufw enable

Dobbiamo anche abilitare http e https per il funzionamento di Gitlab.

$ sudo ufw allow http
$ sudo ufw allow https

Controlla lo stato del firewall.

$ sudo ufw status

Dovresti vedere un output come il seguente.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
6622                       ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
443/tcp                    ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
6622 (v6)                  ALLOW       Anywhere (v6)      
80/tcp (v6)                ALLOW       Anywhere (v6)             
443/tcp (v6)               ALLOW       Anywhere (v6)             

Passaggio 4:installa Docker

Aggiungi la chiave GPG di Docker al tuo sistema.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Verifica l'impronta digitale della chiave scaricata.

$ sudo apt-key fingerprint 0EBFCD88

Dovresti vedere un output come il seguente.

pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <[email protected]>
sub   rsa4096 2017-02-22 [S]

Aggiungi il repository Docker.

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Aggiorna il database dei tuoi pacchetti.

$ sudo apt update

Installa Docker-CE. CE è la Community Edition di Docker.

$ sudo apt install docker-ce -y

Docker dovrebbe essere installato ora. Verifica che sia in esecuzione.

$ sudo systemctl status docker

L'output dovrebbe essere simile al seguente.

? docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2019-10-11 21:10:31 UTC; 32s ago
     Docs: https://docs.docker.com
 Main PID: 19128 (dockerd)
    Tasks: 12
   CGroup: /system.slice/docker.service
           ??19128 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Premi q per uscire.

Aggiungi il tuo account utente Linux limitato al gruppo docker in modo da poter eseguire docker senza sudo.

sudo usermod -aG docker $USER

$UTENTE La variabile selezionerà e aggiungerà l'utente attualmente connesso al gruppo Docker. Sostituisci $USER con il nome utente effettivo se non sei attualmente connesso con quell'utente.

Passa all'utente che abbiamo appena aggiunto. Anche se avevi già effettuato l'accesso, dovrai comunque riattivarlo per ricaricare le autorizzazioni.

$ su - ${USER}

Verifica che tutto funzioni correttamente eseguendo il programma integrato "Hello World".

$ docker run hello-world

Dovresti vedere il seguente output che dirà che Docker è installato e funziona correttamente.

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete 
Digest: sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

Passaggio 5 - Installa Docker Compose

È possibile saltare questo passaggio e procedere, ma l'installazione di Docker Compose renderà l'esecuzione di Gitlab molto più semplice, soprattutto se si desidera farlo su più di un server.

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Al momento della stesura di questo tutorial, 1.24.1 è l'attuale versione stabile di Docker Compose. Puoi controllare l'ultima versione di rilascio dalla loro pagina Github.

Applica le autorizzazioni eseguibili alla finestra mobile per comporre il binario.

$ sudo chmod +x /usr/local/bin/docker-compose

Aggiungi il completamento del comando a Docker Compose.

$ sudo curl -L https://raw.githubusercontent.com/docker/compose/1.24.1/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose

Verifica se l'installazione è andata a buon fine.

$ docker-compose --version

Stamperà il seguente output.

docker-compose version 1.24.1, build 4667896b

Passaggio 6:installa Gitlab

Scarica l'immagine Docker di Gitlab da Dockerhub. Questa immagine contiene tutto il necessario per eseguire Docker:nginx, PostgreSQL, Redis, ecc. Esegui il comando seguente per scaricare l'immagine.

$ docker pull gitlab/gitlab-ee:latest

Anche se questo tutorial riguarda l'installazione della Community Edition, prenderemo l'immagine Enterprise Edition di Gitlab. Questo perché l'edizione Enterprise si comporta esattamente come l'edizione Community, a meno che non si aggiorni inserendo la licenza. L'aggiornamento di un'installazione della Community Edition all'Enterprise Edition presenta ulteriori complicazioni.

Ci vorrà un po' di tempo per scaricare l'immagine completa. Al termine del lavoro, puoi eseguire il comando seguente per controllare tutte le immagini attualmente sul tuo sistema.

$ docker images

L'output dovrebbe essere simile al seguente.

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
gitlab/gitlab-ee    latest              4bacb2356d28        4 days ago          1.87GB
hello-world         latest              fce289e99eb9        9 months ago        1.84kB

Passaggio 7:esegui Gitlab

A questo punto possiamo eseguire Gitlab container immediatamente fornendo tutte le opzioni in un unico comando, ma ciò significherebbe ogni volta che è necessario eseguire il container, è necessario fornire queste variabili. Docker Compose semplifica questo processo in quanto ti consentirà di salvare la configurazione in un file .yml che verrà quindi utilizzato per eseguire e avviare il contenitore.

Crea un docker-compose.yml.

$ nano docker-compose.yml

Incolla il seguente codice.

web:
  image: 'gitlab/gitlab-ee:latest'
  container_name: 'gitlab-howtoforge-tutorial'
  restart: always
  hostname: 'gitlab.example.com'
  environment:
    GITLAB_OMNIBUS_CONFIG: |
      external_url 'https://gitlab.example.com'
      gitlab_rails['smtp_enable'] = true
	  gitlab_rails['smtp_address'] = "smtp.gmail.com"
      gitlab_rails['smtp_port'] = 587
      gitlab_rails['smtp_user_name'] = "[email protected]"
      gitlab_rails['smtp_password'] = "app-password"
      gitlab_rails['smtp_domain'] = "smtp.gmail.com"
      gitlab_rails['smtp_authentication'] = "login"
      gitlab_rails['smtp_enable_starttls_auto'] = true
      gitlab_rails['smtp_tls'] = false
      gitlab_rails['smtp_openssl_verify_mode'] = 'peer'
      # Add any other gitlab.rb configuration here, each on its own line
  ports:
    - '80:80'
    - '443:443'
    - '22:22'
    - '587:587'
  volumes:
    - '/srv/gitlab/config:/etc/gitlab'
    - '/srv/gitlab/logs:/var/log/gitlab'
    - '/srv/gitlab/data:/var/opt/gitlab'

Vediamo cosa significa ciascuna delle opzioni di cui sopra.

  • immagine si riferisce alla posizione dell'immagine Docker di Gitlab su Dockerhub.
  • nome_contenitore ti consente di applicare un'etichetta al tuo contenitore Docker, da utilizzare quando fai riferimento al contenitore all'interno di una rete Docker.
  • nome host definisce il nome host interno del contenitore o, nel nostro caso, l'URL in cui verrà installato il tuo Gitlab.
  • riavvia specifica una politica di riavvio per il contenitore. L'abbiamo impostato su sempre il che significa che un container, se chiuso, verrà riavviato automaticamente.
  • ambiente fornisce la variabile GITLAB_OMNIBUS_CONFIG che ti consente di inserire qualsiasi impostazione di configurazione di Gitlab. In questo caso, abbiamo fornito l'URL esterno che Gitlab dovrebbe utilizzare.
  • volume definisce le directory montate nel server per memorizzare i dati persistenti. I tre volumi/directory memorizzano i dati dell'applicazione, i file di registro ei file di configurazione. Il valore a sinistra del punto e virgola è la directory locale sul server e il valore a destra è la directory all'interno del contenitore.
  • pubblica indica al contenitore di pubblicare le porte o un intervallo di porte sull'host. Poiché Gitlab ha bisogno delle porte 22(SSH), 80(HTTP), 443(HTTPS) e 587(SMPT - MSA), le abbiamo specificate qui. Se vuoi che Gitlab utilizzi una porta non standard sul tuo server (probabilmente perché non è disponibile), dovresti fornire prima la porta host e poi la porta del contenitore. Ad esempio, poiché il tuo server sta già utilizzando la porta SSH(22), puoi dire a Gitlab di utilizzare SSH tramite una porta diversa, ad esempio 3333. Quindi cambieresti 22:22 nel file sopra a 3333:22 . Dovrai anche aggiungere la riga gitlab_rails['gitlab_shell_ssh_port'] =3333 sotto GITLAB_OMNIBUS_CONFIG sopra.
  • URL_esterno si riferisce al dominio in cui verrà installato il tuo Gitlab. Abbiamo scelto https che installerà automaticamente il certificato SSL Let's Encrypt per noi.
  • Abbiamo anche aggiunto una configurazione aggiuntiva per configurare Gitlab per l'utilizzo di Gmail per l'invio di posta. È possibile utilizzare qualsiasi servizio di posta SMTP di terze parti. I documenti di Gitlab hanno mantenuto una guida dettagliata su come configurare vari servizi SMTP con esso.

Assicurati di trovarti nella stessa directory di docker-compose.yml. Esegui il comando seguente per avviare Gitlab.

$ docker-compose up -d

Vedrai qualcosa di simile al seguente.

Creating gitlab-howtoforge-tutorial ... done

Ci vorranno ancora diversi minuti prima che tu possa accedere a Gitlab tramite il browser. Puoi scoprire di più sul processo di avvio tramite il seguente comando.

$ docker logs -f gitlab-howtoforge-tutorial

Per uscire dal processo di monitoraggio del registro, premi Ctrl + C.

Carica il sito Gitlab nel tuo browser. Se provi a caricarlo poco dopo l'avvio del contenitore, riceverai l'errore 502. In tal caso, attendi qualche altro minuto e riprova.

Se tutto va bene, vedrai la seguente pagina nel tuo browser.

Passaggio 8 - Configura Gitlab

Fornisci una password per la password dell'amministratore di Gitlab. Verrai indirizzato alla schermata di accesso successiva. Usa root come nome utente e password che hai appena scelto per accedere.

Configura SMTP

Dovremo abilitare le impostazioni SMTP prima di noi

Configura il profilo Gitlab

Fare clic sull'icona dell'utente nell'angolo in alto a destra per visualizzare il menu a discesa e selezionare le impostazioni.

Verrai indirizzato alla pagina delle impostazioni del tuo profilo. Aggiungi qui il tuo nome e la tua e-mail. Dovrai confermare il tuo indirizzo email per aggiornarlo. Puoi anche aggiungere qui ulteriori informazioni su di te, se lo desideri.

Fai clic su Aggiorna impostazioni profilo quando hai finito.

Cambia nome utente

Successivamente, dobbiamo cambiare il nostro nome utente da root a qualcos'altro come root è un nome utente intuibile abbastanza comune. Fai clic su Account nella barra laterale sinistra.

Cambia l'utente con il nome utente che desideri mantenere. Fai clic su Aggiorna nome utente finire. Dovresti anche abilitare l'autenticazione a due fattori qui per una maggiore sicurezza.

Limita le registrazioni pubbliche

Per impostazione predefinita, le installazioni di Gitlab consentono a chiunque di registrarsi. Se non lo vuoi, dovresti disabilitarlo. Fare clic sull'icona a forma di chiave inglese nella barra in alto per accedere all'area Amministrazione.

Per regolare le impostazioni, fai clic su Impostazioni nella barra laterale sinistra.

Qui, scorri verso il basso fino alle Restrizioni alla registrazione e fai clic su Espandi pulsante. Deseleziona Registrazione abilitata casella e fai clic su Salva modifiche al termine.

Potrai comunque aggiungere nuovi utenti tramite l'interfaccia di amministrazione.

Aggiungi chiave SSH

L'ultimo passaggio consiste nell'aggiungere la nostra chiave SSH. Se hai una chiave SSH, puoi saltare il comando seguente. Se non ne hai uno, puoi crearne uno usando il seguente comando.

$ ssh-keygen

Questo comando è comune a Mac OS, Linux e Git Bash/WSL su Windows. Accetta le impostazioni predefinite e lascia vuoto il campo della passphrase.

Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): /home/user/.ssh/gitlab
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in gitlab.
Your public key has been saved in gitlab.pub.
The key fingerprint is:
SHA256:6dNGAPyd8JAkHAikYOW2PsFjGlzBBpwy4XQ9RQgVwK8 [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|+*OB=*O=..       |
|B+o+o+oo+        |
|oo.+. ...= .     |
|. + ..  .o+      |
| o *.   S .      |
|  =Eo  . o       |
| . o    o o      |
|    .    o       |
|                 |
+----[SHA256]-----+

Puoi visualizzare la tua chiave pubblica tramite il seguente comando

$ cat ~/.ssh/gitlab.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDUf64YH7uJimFWVJSy/mgYiLRqBxVB6JJMTxZZ96DwExoINhWVRhQAgMgExBWGpUCpWXhLcNuIM+EfFRtCq+YYyLC+GlHsNdnLgecGgop72p8BEi8UckgCiCSuMrWCMAOFh5NKs2YHpF7bOUjXQRVvGujLuV1UBof7SXQ/za7e3aybNiH3KpA6oWSSmpqnOt8rZT54IjLnVFUSLx7ZxWDVW1bO29mI8NjWwzZGLAtNIkJQEOqVo8nhVkroFHvBTrZnUsmr5oFOWG++LPqED9EUSPTpO8PNnogYT3xsVncBMMAEt0pPE7ATmstQc161SEtqAUa98Qb0RRKqCKcKStOp [email protected]

Torna all'area Impostazioni del tuo profilo e accedi alle chiavi SSH dalla barra laterale.

Incolla la chiave SSH nell'apposita casella e fai clic su Aggiungi chiave per procedere.

Ora puoi creare e impegnarti nei tuoi repository senza dover fornire le tue credenziali Gitlab.

Fase 9:crea il tuo primo progetto

Ogni repository in Gitlab appartiene a un progetto. Un progetto include un repository, un tracker dei problemi, richieste di unione, wiki, pipeline di integrazione continua e distribuzione continua (CI/CD) e molte altre funzionalità.

Per creare il tuo primo repository, fai clic su Crea un progetto .

Verrai indirizzato alla pagina Nuovo progetto. Immettere il nome del progetto. Puoi cambiare lo slug del progetto in qualcosa di diverso. Inserisci una descrizione del progetto se lo desideri e modifica la visibilità del progetto come desideri. Puoi inizializzare il tuo repository con un file README. Al termine, fai clic su Crea progetto .

Verrai indirizzato alla pagina del tuo repository con un solo file README.md vuoto.

Ora che il nostro repository è attivo, proviamo ad aggiungere un log delle modifiche dalla riga di comando.

Immettere i seguenti comandi sul computer per creare un file CHANGELOG e inviarlo nuovamente al repository. Assicurati di avere Git installato sul tuo computer.

Clona il repository. Puoi clonare utilizzando SSH o HTTPS.

Clona usando SSH.

$ git clone [email protected]:user/howtoforge-test.git

o Clona usando HTTPS.

$ git clone https://gitlab.example.com/user/howtoforge-test.git

Immettere il resto dei comandi per creare e premere CHANGELOG.

$ cd howtoforge-test
$ touch CHANGELOG  # Or create the file in your editor and enter a project description
$ git add CHANGELOG
$ git commit -m "add Changelog"
$ git push -u origin master

Passaggio 10:gestione del contenitore Gitlab

Per visualizzare tutti i contenitori in esecuzione, esegui il comando seguente.

$ docker-ps

Per interrompere il tuo contenitore Gitlab, esegui il comando seguente.

$ docker stop gitlab-howtoforge-tutorial

Per riavviare il tuo container, usa il seguente comando.

$ docker start gitlab-howtoforge-tutorial

Nel caso in cui desideri rimuovere il tuo contenitore, puoi farlo con il seguente comando.

$ docker container rm gitlab-howtoforge-tutorial

Passaggio 11 - Aggiorna Gitlab

Se desideri aggiornare Gitlab alla versione più recente, devi interrompere e rimuovere il contenitore esistente, estrarre l'ultima immagine e quindi ricreare il contenitore.

$ docker stop gitlab-howtoforge-tutorial
$ docker rm gitlab-howtoforge-tutorial
$ docker pull gitlab/gitlab-ee:latest
$ docker-compose up -d

E prima che tu lo chieda, i tuoi dati saranno al sicuro anche se rimuovi il contenitore.

Questo conclude il nostro tutorial sulla configurazione di Gitlab sul server Ubuntu 18.04 utilizzando Docker. Se hai domande, pubblicale nei commenti qui sotto.


Ubuntu
  1. Come installare Docker su Ubuntu 16.04

  2. Come installare RabbitMQ Server su Ubuntu 18.04 e 16.04 LTS

  3. Come installare Gitlab Server su Ubuntu 18.04 e 16.04 LTS

  4. Come installare il server Xrdp su Ubuntu 20.04 LTS

  5. Come installare Docker su Ubuntu 20.04 LTS

Come installare Docker in Ubuntu 18.04 LTS Server

Come installare Gitlab su Ubuntu 20.04 LTS

Come installare WordPress con Docker su Ubuntu 16.04 LTS

Come installare Docker su Ubuntu 20.04 LTS

Come installare il server FTP su Ubuntu 20.04 LTS

Come installare Wiki.js su Ubuntu 20.04 LTS