Installazione e configurazione di base di Gitea su container LXC con Debian 12

by | Dic 4, 2023

Gitea permette di gestire on premise un ambiente molto simile a Github.
Tramite Gitea è possibile effettuare il versioning del codice e gestire alcune attività collaborative come il tracciamento dei bug e la code review.
L’installazione di Gitea verrà effettuata su un container LXC con Debian 12.

ARCHITETTURA

I tre server sono stati installati su container LXC con Debian 12.

PREREQUISITI

Un server MySQL che verrà utilizzato come DB per Gitea ed un server HAProxy su cui verrà configurato l’SSL offloading (opzionale).

PORTE UTILIZZATE

Server Gitea

: TCP/3000 HTTP

Server HAProxy: TCP/443 HTTPS

Server MySQL: TCP/3306 MySQL

FLUSSI DA ABILITARE

Server Gitea -> Server MySQL TCP/3306
Server HAProxy -> Server Gitea TCP/3000
Client -> Server HAProxy TCP/443 HTTPS

PREPARAZIONE DEL SISTEMA OPERATIVO

Aggiornare il sistema operativo con i seguenti comandi:

Modificare l’entry relativa al localhost nel file hosts e inserire:

INSTALLAZIONE DI GITEA

Scaricare il binario di Gitea con i seguenti comandi:

Installare git con il comando:

PREPARAZIONE DI GITEA

Aggiungere l’utente di gitea con il comando:

Creare la struttura di directory con i seguenti comandi in sequenza:

Per permettere la configurazione di Gitea tramite web UI, abilitare momentaneamente la modifica su /etc/gitea per il gruppo git con il comando:

Aggiungere il file per l’autocompletion con il comando:

Aggiungere il file gitea.service per gestire Gitea tramite systemd con il comando:

INSTALLAZIONE DEL SERVER REDIS

Installare il Redis server con il comando:

Aggiungere o modificare le seguenti righe nel file /etc/redis/redis.conf:

Riavviare redis-server con il comando:

Aggiungere le seguenti righe in /etc/systemd/system/gitea.service

CONFIGURARE GITEA PER SALVARE IL PROPRIO PID IN UN FILE

ATTENZIONE:

Questo step non è necessario se non si necessita di leggere il PID del processo di Gitea tramite una lettura sul filesystem.

Aggiungere nel file /etc/systemd/system/gitea.service:

Specificando la RuntimeDirectory, all’avvio di Gitea, viene creata la directory /var/run/gitea/ con i permessi corretti.

Modificare nel file /etc/systemd/system/gitea.service:

ABILITARE ED AVVIARE IL SERVIZIO GITEA

Ricaricare il file gitea.service con il comando:

Abilitare e far partire il servizio di Gitea con i seguenti comandi:

È probabile che quando si cerca di avviare il servizio, systemctl rimanga in attesa e che dopo qualche decina di secondi, esso vada in errore.
In questo caso, è necessario ignorare l’errore e verificare che il servizio sia in ascolto con ss (o software analoghi)

ATTENZIONE: Se il servizio è in ascolto, è possibile proseguire con la configurazione tramite web UIt. Al termine dell’installazione iniziale, systemd dovrebbe iniziare a funzionare correttamente.
Questo bug è dato dal fatto che il binario di Gitea non notifica correttamente con sd_notify() l’avvio del servizio prima che la fase di installazione sia stata completata.

CONFIGURAZIONE DEL DATABASE MYSQL

È possibile utilizzare un MySQL locale (la cui installazione e configurazione non verrà discussa in questa guida), oppure utilizzare un server dedicato.

Connettersi alla shell del MySQL con il comando:

Creare l’utenza di Gitea con il comando:

oppure con il comando:

Creare il database di Gitea con il comando:

Aggiungere le grants all’utenza di Gitea con il comando:

oppure con il comando:

Quindi fare il flush con il comando:

Collegarsi al server di Gitea ed installare il client MariaDB con il comando:

Verificare che l’utente gitea possa  accedere al DB digitando il seguente comando:

CONFIGURARE L’SSL OFFLOADING SU HAPROXY (OPZIONALE)

Collegarsi al server HAProxy ed aggiungere a /etc/haproxy/haproxy.cfg il seguente output:

Verificare la configurazione di HAProxy con il comando:

Eseguire il Reload di HAProxy con il comando:

CONFIGURAZIONE PRELIMINARE DALLA WEB UI

ATTENZIONE:

È necessario inserire un record DNS o una riga sul file hosts, affiché il client possa risolvere correttamente gitea.pizza.local
Nel caso in cui si abbia configurato l’SSL offloading, sarà necessario che il record punti all’IP di HAProxy, invece nel caso in cui non lo si abbia fatto, il record dovrà puntare all’IP del server di Gitea.

Navigare su https://gitea.pizza.local/ oppure http://gitea.pizza.local:3000/ (se non si è configurato l’SSL offloading)

È possibile specificare l’FQDN al posto dell’IP come host del DB.
Il campo “Server Domain” può essere completato con il dominio (pizza.local) o l’FQDN usato nel base url (gitea.pizza.local).

In questa guida verrà omessa la funzionalità SSH di Gitea, perciò il relativo campo verrà lasciato vuoto

Se si necessitasse di utilizzare git tramite SSH, sarà necessario modificare la porta utilizzata dal servizio di sistema sshd oppure configurare Gitea per utilizzare una porta diversa dalla 22/TCP.

Configurare il base URL ed eventualmente attivare le notifiche quando sono disponibili degli aggiornamenti

Se non si ha configurato l’SSL offloading, utilizzare come base url: http://gitea.pizza.local:3000/

Abilitare o disabilitare le funzionalità di Gitea ed impostare il dominio email come mostrato nell’imamgine sottostante

Creare un’utenza amministrativa come mostrato nell’imamgine sottostante

CONFIGURAZIONE TRAMITE TERMINALE

Aggiungere o modificare in /etc/gitea/app.ini:

Se si ha configurato l’SSL offloading, modificare in /etc/gitea/app.ini:

Riavviare Gitea con il comando:

CONCLUSIONE DELL’INSTALLAZIONE

Aggiungere un soft link (opzionale)

Rimuovere i permessi di scrittura su /etc/gitea all’utente git

Scritto da Marco Valle

Mi chiamo Marco Valle e da sempre sono appassionato di Cybersicurezza e Linux.
Per lavoro implemento soluzioni open source.

Articoli Recenti

Veeam Backup

Monitoring

Friends

  • My English Lab  English School
  • ChrSystem   Infrastrutture IT
  • ACT For Cange  Mental Coach
  • Since 01  Kreative Graphics

Database

Networking

Autori

  • Raffaele Chiatto  Amministratore
  • Marco Valle  Autore Collaboratore

Related Post

0 Comments

Submit a Comment

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Virtualizzazione

Linux

Microsoft

Apple

Backup

Database

Security

Automazione