
Nel panorama dello sviluppo software moderno, la gestione del codice sorgente è un elemento fondamentale per garantire collaborazione, controllo delle versioni e integrazione continua.
Tra le alternative self-hosted più leggere e performanti, Gitea si distingue per semplicità, efficienza e facilità di configurazione.
In questo articolo vedremo passo dopo passo come installare e configurare Gitea su Ubuntu Server 24.04, partendo dai prerequisiti di sistema fino alla messa online dell’interfaccia web.
Grazie alla sua architettura minimale, Gitea può essere eseguito anche su server con risorse limitate, offrendo al tempo stesso tutte le funzionalità essenziali di una piattaforma Git completa: repository, pull request, issue tracking, wiki e integrazione CI/CD.
PREREQUISITI
- Un server Ubuntu con accesso amministratore (utente con sudo) oppure root.
- Sistema operativo aggiornato: esegui sudo apt update && sudo apt upgrade.
- Installazione di Git (versione ≥ 2.0).
- Un database supportato, scegliendo tra:
- SQLite (per installazioni piccole)
- PostgreSQL (raccomandato)
- MySQL o MariaDB
AGGIORNAMENTO DEL SISTEMA
Aggiornare il sistema con i seguenti comandi:
|
0
1
|
sudo apt update && sudo apt -y upgrade
sudo apt -y install curl gnupg
|
INSTALLAZIONE DI SQLITE
In questo tutorial utilizzerò SQLite come database per Gitea.
È possibile selezionare uno qualsiasi dei database supportati nell’installazione in base alle esigenze.
Installare SQLite usa il seguente comando:
|
0 |
sudo apt install sqlite3
|
Verificare la versione con il seguente comando:
|
0 |
sqlite3 --version
|
Dovremmo visualizzare un output simile al seguente:
|
0 |
3.45.1 2024-01-30 16:01:20 e876e51a0ed5c5b3126f52e532044363a014bc594cfefa87ffb5b82257ccalt1 (64-bit)
|
INSTALLAZIONE DI GIT
Gitea è un servizio Git self-hosted indolore. Con funzionalità simili a quelle di GitHub, Bitbucket o GitLab.
Git è lo standard per i sistemi di controllo di versione distribuiti e può essere installato su sistemi Ubuntu utilizzando .apt
Installare il pacchetto Git utilizzando il seguente comando:
|
0 |
sudo apt install git
|
Controllare la versione di Git installata con il seguente comando:
|
0 |
git --version
|
Dovremmo visualizzare un output simile al seguente:
|
0 |
git version 2.43.0
|
Creare un utente Git con nome utente come git con privilegi limitati con il comando:
|
0 |
adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git
|
DOWNLOAD DEL BINARIO DI GITEA
La prima cosa da fare è verificare l’utlima versione stabile di Gitea al seguente link:
ATTENZIONE: durante la stesura del seguente articolo l’ultima versione stabile disponibile è la 1.25.1
Scaricare il binario con il seguente comando:
|
0 |
sudo wget -O /tmp/gitea https://dl.gitea.com/gitea/1.25.1/gitea-1.25.1-linux-amd64
|
Spostare il file binario Gitea in /usr/local/bin con il comando:
|
0 |
sudo mv /tmp/gitea /usr/local/bin
|
Rendere eseguibile il file binario con il comando:
|
0 |
chmod +x /usr/local/bin/gitea
|
Creare la struttura di directory e impostare le autorizzazioni e la proprietà necessarie con i seguenti comandi:
|
0
1
2
3
4
5
6
7
8
9
10
|
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
|
Creare un file di unità Systemd da utilizzare per eseguire il gitea in background e controllare con .systemctl
Scaricare il file nella directory /etc/systemd/system/ utilizzando il seguente comando:
|
0 |
sudo wget https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/systemd/gitea.service -P /etc/systemd/system/
|
Ricaricare il servizio Gitea con il comando:
|
0 |
sudo systemctl daemon-reload
|
Avviare il servizio Gitea con il comando:
|
0 |
sudo systemctl start gitea
|
Abilitare il servizio Gitea con il comando:
|
0 |
sudo systemctl enable gitea
|
Controlla lo stato del servizio Gitea con il comando:
|
0 |
systemctl status gitea
|
Se è tutto OK dovremmo visualizzare il seguente output:
|
0
1
2
3
4
5
6
7
8
|
● gitea.service - Gitea (Git with a cup of tea)
Loaded: loaded (/etc/systemd/system/gitea.service; enabled; preset: enabled)
Active: active (running) since Thu 2025-11-13 13:39:02 UTC; 10s ago
Main PID: 17979 (gitea)
Tasks: 8 (limit: 2267)
Memory: 69.6M (peak: 69.8M)
CPU: 366ms
CGroup: /system.slice/gitea.service
└─17979 /usr/local/bin/gitea web --config /etc/gitea/app.ini
|
CONFIGURAZIONE DI GITEA DA WEB GUI
Da un qualsiasi browser richiamare il link:
http://FQDN-SERVER-O-IP:3000
In questa schermata modificare solo la tipologia del database e accertarsi che il path del DB sia /var/lib/gitea/data/gitea.db
Selezionare Email Settings
Inserire tutte le info relative al server SMTP quindi cliccare su Server and Third-Party Service Settings
Configurare tutti i parametri necessari quindi cliccare su Administrator Account Settings
Creare l’utente amministratore inserendo il nome, password e email quindi cliccare Install Gitea
Attendere qualche secondo
Se è andato tutto a buon fine dovremmo visualizzare la Dashboard di Gitea
AGGIORNAMENTO DI GITEA
I passaggi seguenti mostrano come eseguire l’aggiornamento a una versione più recente di Gitea quando sarà disponibile.
Per eseguire l’aggiornamento a una nuova versione per prima cosa interrompere il servizio Gitea con il comando:
|
0 |
systemctl stop gitea
|
Scaricare il binario Gitea dalla pagina di download con il comando:
|
0 |
wget -O /tmp/gitea https://dl.gitea.io/gitea/VERSION/gitea-VERSION-linux-amd64
|
Spostare il file binario Gitea con il comando:
|
0 |
mv /tmp/gitea /usr/local/bin
|
Quindi renderlo eseguibile con il comando:
|
0 |
chmod +x /usr/local/bin/gitea
|
Riavviare il servizio di Gitea con il comando:
|
0 |
systemctl restart gitea
|
Per verificare che la versione di Gitea sia cambiata eseguire il comando:
|
0 |
gitea --version
|
Dovremmo visualizzare un output simile al seguente:
|
0 |
gitea version 1.25.1 built with GNU Make 4.3, go1.25.3 : bindata, sqlite, sqlite_unlock_notify
|
FUNZIONALITA DI GITEA
Gitea è una piattaforma self-hosted per la gestione del codice simile a GitHub o GitLab, ma leggera, open source e facile da installare.
Di seguito un elenco di tutte le principali funzionalità suddivise per categoria
1. Gestione dei repository Git
Creare, clonare, importare e cancellare repository Git.
Supporto per SSH, HTTPS e Gitea Actions.
Gestione di branch, tag, commit e merge.
Supporto per submodule e LFS (Large File Storage).
Protezione dei branch (branch protetti, regole di merge, revisioni obbligatorie).
Sistema di web editor: modifica file direttamente via interfaccia web.
Repository template e fork per clonare progetti esistenti.
2. Collaborazione e sviluppo
Pull request (PR) con code review, commenti e approvazioni.
Issue tracking integrato (bug, feature request, ecc.).
Milestones, labels e progetti kanban per organizzare il lavoro.
Assignees e mention (@utente) per coordinare il team.
Wiki per la documentazione del progetto.
Release e changelog automatici.
Notifiche e watch per ricevere aggiornamenti sui progetti.
⚙️ 3. Automazione e CI/CD
Gitea Actions (simili a GitHub Actions):
- esecuzione di workflow CI/CD basati su YAML (.gitea/workflows/).
- Integrazione con sistemi esterni di CI (Jenkins, Drone, Woodpecker, ecc.).
- Webhook personalizzati per eventi (push, PR, issue, ecc.).
- API REST e GraphQL per automazioni avanzate.
4. Gestione utenti e permessi
Autenticazione tramite:
- utente/password locali
- LDAP / Active Directory
- OAuth2 / OpenID Connect
- PAM / SMTP
Ruoli e permessi granulari per organizzazioni, team e repository.
Gestione di organizzazioni e team (come su GitHub).
Collaboratori per repository singoli.
️ 5. Amministrazione del sistema
Dashboard amministrativa con monitoraggio dei job, code, attività recenti.
Gestione utenti e organizzazioni.
Configurazione SMTP per email di notifica.
Backup e migrazione dei dati integrati.
Supporto per database multipli: SQLite, MySQL/MariaDB, PostgreSQL, MSSQL.
Log di sistema e auditing delle operazioni.
6. Interfaccia e accessibilità
Interfaccia web moderna e leggera.
Tema scuro / chiaro, traduzioni in decine di lingue.
Editor Markdown con preview integrata.
API pubblica per interagire con Gitea da script o app esterne.
Compatibilità con Visual Studio Code, Git CLI, e altri client Git.
7. Integrazioni e estensioni
Webhooks per notifiche e integrazioni con:
- Slack, Discord, Mattermost, Matrix
- Jenkins, Drone CI, Woodpecker, ArgoCD, ecc.
- OAuth provider: Gitea può fungere da server OAuth2.
- Gitea può servire pacchetti software (Gitea Packages):
- npm, Maven, PyPI, Docker, NuGet, Go modules, etc.
️ 8. Gitea Packages (registry integrato)
Permette di pubblicare e distribuire pacchetti:
- Docker images
- npm / NodeJS
- Maven / Java
- NuGet / .NET
- PyPI / Python
- RubyGems / Ruby
- Go Modules
- Debian / RPM
9. Strumenti DevOps aggiuntivi
Task runner con cron job integrati.
Mirror automatici da GitHub, GitLab, Bitbucket.
Import/export progetti in formato Git.
Statistiche repository (commit activity, linguaggi, ecc.).
10. Deployment e hosting
Esecuzione su:
- Linux, macOS, Windows
- Docker, Podman, Kubernetes
Facile da integrare in ambienti self-hosted o cloud.
Consumo di risorse estremamente ridotto (funziona anche su Raspberry Pi).

0 commenti