Gitea su Raspberry Pi: il tuo Git server privato, piccolo ma tutto tuo 🍓🧑‍💻

Gitea su Raspberry

GitHub è comodo, GitLab è ricco di funzionalità, ma a volte per i propri progetti serve semplicemente un posto privato dove conservare repository, documentazione e codice. Per questo ho scelto di sperimentare con Gitea, un servizio Git leggero e self-hosted, installato su un Raspberry Pi.

Il risultato è un piccolo server personale sempre disponibile sulla rete di casa, accessibile dai miei ambienti di sviluppo e sotto il mio controllo. Non sostituisce necessariamente un servizio cloud per ogni scenario, ma offre un modo pratico per ospitare repository privati senza affidare tutto a una piattaforma esterna.

Perché ospitare Git in casa? 🏠

Un server Git personale può essere utile per progetti personali, prototipi, configurazioni, piccoli siti e codice che si preferisce mantenere all’interno della propria rete. Gitea offre un’interfaccia web per gestire repository, utenti, issue e attività, pur restando abbastanza leggero da poter essere eseguito anche su hardware contenuto.

Nel mio caso, il Raspberry Pi 2 fa da nodo dedicato: il computer di sviluppo clona il repository, lavora localmente e invia le modifiche al server con git push. Così il codice non rimane soltanto sul PC e posso consultare la cronologia delle modifiche tramite l’interfaccia web di Gitea.

È importante chiarire una cosa: un repository Git su un Raspberry Pi è una copia utile del progetto, ma non è da solo una strategia di backup completa. Se il dispositivo o il disco si guastano, anche il repository potrebbe andare perso. Conviene quindi prevedere una seconda copia, su un disco esterno o su un’altra destinazione separata.

Preparare il Raspberry Pi ⚙️

Per un servizio Git leggero, un Raspberry Pi può essere sufficiente, soprattutto se il numero di utenti e repository è contenuto. Prima di installare Gitea, è bene preparare il sistema:

  • scegliere un sistema operativo supportato dal modello di Raspberry Pi;
  • aggiornare pacchetti e firmware;
  • assegnare al dispositivo un indirizzo IP stabile o una prenotazione DHCP;
  • abilitare SSH solo se necessario e proteggerlo con chiavi;
  • usare, se possibile, un supporto di archiviazione affidabile invece di affidarsi a una microSD molto sollecitata;
  • configurare backup e monitoraggio dello spazio disponibile.

Un Raspberry Pi 2 ha risorse limitate rispetto ai modelli più recenti: è quindi meglio mantenere l’installazione essenziale, evitare servizi superflui e non aspettarsi prestazioni da server enterprise. Per uso personale e repository di dimensioni ragionevoli può comunque essere un laboratorio self-hosted interessante.

Installare Gitea con Docker 🐳

Se Docker è già disponibile sul sistema, Gitea può essere avviato come container. Prima di eseguire il servizio, crea una cartella persistente per i dati: in questo modo repository e configurazione non dipenderanno dal ciclo di vita del container.

sudo mkdir -p /srv/gitea
sudo chown -R 1000:1000 /srv/gitea

Un esempio essenziale con Docker Compose può essere simile a questo. Le porte e i percorsi vanno adattati alla propria rete e alla configurazione scelta:

services:
  gitea:
    image: gitea/gitea:latest
    container_name: gitea
    restart: unless-stopped
    ports:
      - "3000:3000"
      - "2222:22"
    volumes:
      - /srv/gitea:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro

Salva la configurazione in un file compose.yaml e avvia il servizio:

docker compose up -d

Al primo avvio, apri Gitea dal browser usando l’indirizzo del Raspberry Pi e la porta configurata, ad esempio http://IP-DEL-RASPBERRY:3000. Completa la configurazione iniziale e crea un account amministratore con una password robusta.

Le versioni e le immagini container cambiano nel tempo: prima di aggiornare, controlla la documentazione ufficiale di Gitea e pianifica un backup dei dati persistenti.

Collegare il computer di sviluppo 🔗

Dal computer o dalla macchina virtuale di sviluppo puoi clonare un repository tramite SSH o HTTPS. Con SSH, la porta configurata in Gitea deve essere raggiungibile sulla rete locale.

git clone ssh://git@IP-DEL-RASPBERRY:2222/utente/progetto.git

Per associare al repository la propria identità Git:

git config --global user.name "Nome Cognome"
git config --global user.email "[email protected]"

Il flusso quotidiano rimane quello di Git: modifica i file, controlla le differenze con git status, crea un commit e invialo al server con git push.

git status
git add .
git commit -m "Descrizione delle modifiche"
git push

Il vantaggio non è soltanto avere un’interfaccia web: la cronologia Git permette di capire che cosa è cambiato, quando e con quale commit. È una piccola abitudine che aiuta molto quando si sperimenta o si lavora su più progetti.

Sicurezza: privato non significa automaticamente protetto 🔐

Un servizio raggiungibile solo dalla rete domestica ha un’esposizione inferiore rispetto a uno pubblicato apertamente su Internet, ma non è immune da rischi. Mantieni aggiornati sistema operativo e container, usa credenziali robuste e limita le porte esposte ai dispositivi che ne hanno davvero bisogno.

Se vuoi accedere a Gitea dall’esterno, evita di aprire porte a caso sul router. Una VPN è spesso una scelta più prudente per raggiungere i servizi domestici. In ogni caso, abilita HTTPS quando previsto dalla configurazione e verifica con attenzione utenti, chiavi SSH e permessi dei repository.

Ricorda anche che l’agente di sviluppo o il computer che usa il repository può contenere token e chiavi. Usa credenziali dedicate e con privilegi minimi, e non inserire mai segreti nei file versionati.

Backup: Git aiuta, ma non basta 💾

Git conserva la cronologia delle modifiche, ma non protegge da ogni tipo di perdita. Un errore umano, un guasto del supporto o un problema sul Raspberry Pi possono compromettere sia i file sia il repository.

Una strategia semplice può prevedere:

  • backup periodico della directory persistente di Gitea;
  • copia su un disco esterno o su un secondo dispositivo;
  • una copia conservata separatamente dal Raspberry Pi;
  • verifiche occasionali che assicurino di poter ripristinare davvero i dati.

Il test di ripristino è la parte che spesso viene dimenticata: un backup non verificato è soltanto una speranza con un nome rassicurante 😅

Un piccolo server, molto controllo ✨

Gitea su Raspberry Pi non è la soluzione universale per ospitare qualsiasi progetto o gestire team numerosi. È però un modo concreto per imparare, sperimentare e costruire un flusso Git personale con una buona dose di autonomia.

Il bello del self-hosting è proprio questo: partire da un’esigenza semplice, capire ogni componente e migliorare il sistema un passo alla volta. Il mio Raspberry Pi non è un datacenter, ma per conservare e seguire i miei progetti è diventato un compagno di lavoro sorprendentemente utile 🍓

Vuoi aggiungere qualcosa?

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