Introduzione

Gitea è un server git open source self-hosted scritto in Go. Viene fornito con un editor di file di repository, monitoraggio dei problemi del progetto, gestione degli utenti, notifiche, wiki integrato e molto altro.

Gitea è un'applicazione leggera e può essere installata su sistemi meno potenti. Se stai cercando un'alternativa a Gitlab con un utilizzo di memoria molto più basso dovresti provare Gitea.

Questo articolo mostra come installare e configurare Gitea su CentOS 8.

Se desideri installare Gitea su un server in remoto continua a leggere, altrimenti salta il primo paragrafo "Connessione al Server" e leggi il successivo.

Connessione al Server

Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digita il seguente comando:

ssh [email protected]_DEL_SERVER

Successivamente sarà necessario inserire la password dell'utente root.

Se non utilizzi l'utente root puoi connetterti con un'altro nome utente utilizzando lo stesso comando, quindi modifica root con il tuo nome_utente:

ssh [email protected]_DEL_SERVER

Successivamente ti verrà chiesto di inserire la password del vostro utente.

La porta standard per connettersi tramite ssh è la 22, se il tuo server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:

ssh [email protected]_DEL_SERVER -p PORTA

Prerequisiti

Gitea supporta SQLite, PostgreSQL e MySQL, MariaDB come backend del database.

Useremo SQLite. È un database leggero che memorizza i dati all'interno di un singolo file. Se SQLite non è installato sulla tua macchina CentOS, puoi installarlo eseguendo il seguente comando come utente sudo:

sudo dnf install sqlite

Supponiamo che SELinux sia disabilitato o impostato in modalità permissiva.

Installiamo altri tool che utilizzeremo per il completamento di questo tutorial. Wget per scaricare file da terminale e l'editor di testo nano per creare ed editare file da terminale:

sudo dnf install wget nano

Installare Gitea

Gitea può essere installato da sorgente, binario e come pacchetto. Può anche essere distribuito come immagine Docker. Installeremo Gitea usando thr binary.

Installare Git

Il primo passo è installare Git sul tuo CentOS:

sudo dnf install git

Verifica l'installazione visualizzando la versione di Git:

git --version
git version 2.18.4

Creare un utente Git

Crea un nuovo utente di sistema per eseguire l'applicazione Gitea:

sudo useradd \
   --system \
   --shell /bin/bash \
   --comment 'Git Version Control' \
   --create-home \
   --home /home/git \
   git

Il comando creerà un nuovo utente e gruppo denominato git e imposterà la directory home su /home/git.

Scaricare il file binario Gitea

L'ultimo binario di Gitea può essere scaricato dalla pagina di download di Gitea. Assicurati di scaricare il binario giusto per la tua architettura.

Al momento della scrittura di questo tutorial, l'ultima versione è 1.12.3. Se è disponibile una nuova versione, modificare la variabile VERSION nel comando sottostante.

Utilizzare wget per scaricare il binario Gitea nella /tmpdirectory:

VERSION=1.12.3
sudo wget -O /tmp/gitea https://dl.gitea.io/gitea/${VERSION}/gitea-${VERSION}-linux-amd64

Puoi eseguire il binario da qualsiasi posizione. Seguiremo la convenzione e sposteremo il binario nella directory /usr/local/bin:

sudo mv /tmp/gitea /usr/local/bin

Rendi eseguibile il binario:

sudo chmod +x /usr/local/bin/gitea

I seguenti comandi creeranno le directory necessarie e imposteranno le autorizzazioni e la proprietà richieste:

sudo mkdir -p /var/lib/gitea/{custom,data,indexers,public,log}
sudo chown git: /var/lib/gitea/{data,indexers,log}
sudo chmod 750 /var/lib/gitea/{data,indexers,log}
sudo mkdir /etc/gitea
sudo chown root:git /etc/gitea
sudo chmod 770 /etc/gitea

La struttura delle directory sopra è consigliata dalla documentazione ufficiale di Gitea.

Le autorizzazioni della directory /etc/gitea vengono impostate con i permessi 770 in modo che la procedura guidata di installazione possa creare i file di configurazione. Una volta completata l'installazione, imposteremo autorizzazioni più restrittive.

Creare un file di unità Systemd

Gitea fornisce un file di unità Systemd configurato per corrispondere alla nostra configurazione.

Scarica il file nella directory /etc/systemd/system/ digitando:

sudo wget https://raw.githubusercontent.com/go-gitea/gitea/master/contrib/systemd/gitea.service -P /etc/systemd/system/

Al termine, abilita e avvia il servizio Gitea:

sudo systemctl daemon-reload
sudo systemctl enable --now gitea

Verifica che il servizio sia avviato correttamente:

sudo systemctl status gitea
● gitea.service - Gitea (Git with a cup of tea)
   Loaded: loaded (/etc/systemd/system/gitea.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2020-08-28 18:39:34 CEST; 3s ago
 Main PID: 4889 (gitea)
    Tasks: 7 (limit: 12210)
   Memory: 150.3M
   CGroup: /system.slice/gitea.service
           └─4889 /usr/local/bin/gitea web --config /etc/gitea/app.ini

Configurare Gitea

Ora che Gitea è attivo e funzionante, è il momento di finalizzare l'installazione tramite l'interfaccia web.

Per impostazione predefinita, Gitea ascolta le connessioni sulla porta 3000 su tutte le interfacce di rete. Dovrai configurare il tuo firewall per abilitare l'accesso all'interfaccia web di Gitea:

sudo firewall-cmd --permanent --zone=public --add-port=3000/tcp
sudo firewall-cmd --reload

Apri il browser, collegati all'indirizzo IP del tuo server oppure al tuo nome dominio: http://TUO_DOMINIO_O_IP:3000/install. Apparirà la pagina delle configurazioni iniziali.

Configurare e installare Gitea

Compila i campi richiesti come segue:

Impostazioni database:

  • Tipo di database: SQLite3
  • Percorso: utilizza un percorso assoluto: /var/lib/gitea/data/gitea.db

Impostazioni generali dell'applicazione:

  • Titolo del sito: inserisci il nome della tua organizzazione.
  • Repository Root Path: lasciare il valore predefinito: /home/git/gitea-repositories.
  • Git LFS Root Path: lascia il valore predefinito: /var/lib/gitea/data/lfs.
  • Esegui come nome utente: git
  • Dominio server SSH: immettere il dominio o l'indirizzo IP del server.
  • Porta SSH: 22, modificala se SSH è in ascolto su un'altra porta.
  • Porta di ascolto HTTP Gitea: 3000
  • URL di base Gitea: utilizza http e il tuo dominio o indirizzo IP del server.
  • Log Path: lascia il valore predefinito: /var/lib/gitea/log

Successivamente, puoi modificare le impostazioni modificando il file di configurazione di Gitea.

Una volta fatto, premi il pulsante "Installa Gitea". L'installazione è istantanea. Al termine verrai reindirizzato alla pagina di accesso.

Fare clic sul collegamento "Registrati ora". Il primo utente registrato viene automaticamente aggiunto al gruppo Admin.

Per rendere l'installazione più sicura, modificare le autorizzazioni del file di configurazione di Gitea in sola lettura utilizzando:

sudo chmod 750 /etc/gitea
sudo chmod 640 /etc/gitea/app.ini

Questo è tutto. Gitea è stato installato sulla tua macchina CentOS.

Configurare Nginx come Reverse Proxy e configurare l'SSL

Questo passaggio è facoltativo, ma è altamente consigliato. Per utilizzare Nginx come proxy inverso, è necessario disporre di un dominio o sottodominio che punta all'IP pubblico del server. In questo tutorial, useremo example.com.

Innanzitutto, installa Nginx e genera un certificato SSL Let's Encrypt gratuito utilizzando le guide seguenti:

Al termine, apri il tuo editor di testo e modifica il file di blocco del server del dominio:

sudo nano /etc/nginx/conf.d/example.com.conf
server {
    listen 80;
    server_name example.com;

    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com;

    proxy_read_timeout 720s;
    proxy_connect_timeout 720s;
    proxy_send_timeout 720s;

    client_max_body_size 50m;

    # Proxy headers
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;

    # SSL parameters
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;


    # log files
    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;

    # Handle / requests
    location / {
       proxy_redirect off;
       proxy_pass http://127.0.0.1:3000;
    }
}
/etc/nginx/conf.d/example.com.conf

Non dimenticare di sostituire example.com con il tuo dominio Gitea e di impostare il percorso corretto per i file del certificato SSL. Il traffico HTTP viene reindirizzato a HTTPS .

Al termine, riavvia il servizio Nginx affinché le modifiche abbiano effetto:

sudo systemctl restart nginx

Successivamente, cambia il dominio Gitea e l'URL di root. Per fare ciò, apri il file di configurazione e modifica le seguenti righe:

sudo nano /etc/gitea/app.ini
[server]
DOMAIN           = example.com
ROOT_URL         = https://example.com/
/etc/gitea/app.ini

Riavvia il servizio Gitea digitando:

sudo systemctl restart gitea

A questo punto, il proxy Gitea è configurato e puoi accedervi da: https://example.com

Configurare le notifiche e-mail

Affinché le e-mail di notifica vengano inviate, puoi installare Postfix o utilizzare un servizio di posta transazionale come SendGrid, MailChimp, MailGun o SES.

Per abilitare le notifiche e-mail, apri il file di configurazione e modifica le seguenti righe:

sudo nano /etc/gitea/app.ini
[mailer]
ENABLED = true
HOST    = SMTP_SERVER:SMTP_PORT
FROM    = SENDER_EMAIL
USER    = SMTP_USER
PASSWD  = YOUR_SMTP_PASSWORD
/etc/gitea/app.ini

Assicurati di utilizzare le informazioni corrette del server SMTP.

Ogni volta che modifichi il file app.ini, devi riavviare il servizio Gitea affinché le modifiche abbiano effetto:

sudo systemctl restart gitea

Per verificare le impostazioni e inviare un'e-mail di prova, accedi a Gitea, clicca in alto a destra sull'avatar del profilo, si aprirà un menu. Clicca su Amministrazione sito > Configurazione > Configurazione mailer SMTP.

Gitea ti consente anche di connetterti a Slack creando un webhook e inviare notifiche ai tuoi canali Slack.

Aggiornare Gitea

L'aggiornamento all'ultima versione di Gitea è un'operazione semplice. Hai solo bisogno di scaricare e sostituire il file binario.

Interrompi il servizio Gitea:

sudo systemctl stop gitea

Scarica l'ultimo binario di Gitea e spostalo nella directory /usr/local/bin:

VERSION=<THE_LATEST_GITEA_VERSION>
wget -O /tmp/gitea https://dl.gitea.io/gitea/${VERSION}/gitea-${VERSION}-linux-amd64
sudo mv /tmp/gitea /usr/local/bin

Rendi eseguibile il binario:

sudo chmod +x /usr/local/bin/gitea

Riavvia il servizio Gitea:

sudo systemctl restart gitea

Conclusione

Abbiamo visto come installare e configurare Gitea su CentOS 8. Ti consigliamo di visitare la pagina della documentazione di Gitea e imparare come configurare la tua installazione e creare il tuo primo progetto.