⌂ Self-hosting

Forgejo: un server Git personale per progetti e configurazioni

Forgejo in casa per ospitare repository privati, fare mirror dei progetti pubblici, tenere sotto Git le configurazioni e automatizzare con le Actions.

Chi scrive codice, script o anche solo file di configurazione prima o poi sente il bisogno di un posto dove versionarli. Le piattaforme pubbliche sono comode, ma non tutto ciò che si scrive dovrebbe stare sui server di qualcun altro: le configurazioni del server di casa, per esempio, contengono indirizzi, nomi e dettagli che è meglio tenere privati. Forgejo è una forgia software libera, leggera e completa, perfetta per un server domestico.

Che cos'è Forgejo

Forgejo è nato come fork di Gitea ed è sviluppato da una comunità che fa capo all'associazione senza scopo di lucro che gestisce Codeberg. Offre ciò che ci si aspetta da una piattaforma Git moderna: repository, interfaccia web per navigare il codice, segnalazioni (issue), richieste di modifica (pull request), wiki, rilasci e un registro di pacchetti. È scritto in Go, si distribuisce come un singolo eseguibile o come immagine container e gira senza problemi anche su hardware modesto.

Installazione: le scelte importanti

La versione container è la più semplice da mantenere. Le decisioni da prendere al primo avvio sono poche ma durature:

  • Database: SQLite è sufficiente per un uso personale o familiare; PostgreSQL è preferibile se si prevedono molti utenti o automazioni intense.
  • Accesso SSH: Forgejo può gestire le connessioni Git via SSH. Se il server di casa usa già la porta 22 per l'amministrazione, conviene esporre quella di Forgejo su un'altra porta, per esempio 2222.
  • Indirizzo pubblico: il campo con l'URL radice deve corrispondere al nome con cui ci si collegherà, altrimenti i link di clonazione mostrati nell'interfaccia saranno sbagliati.
  • Registrazioni: per un'istanza privata è bene disattivare l'iscrizione libera e creare gli account a mano.

Una configurazione per la clonazione via SSH su porta diversa, lato client, si sistema una volta sola nel file ~/.ssh/config:

Host git.casa
  HostName git.casa.esempio
  Port 2222
  User git

Da quel momento basta git clone git.casa:famiglia/script.git.

Cosa ospitare

Un server Git personale diventa utile in modi che non sempre si immaginano all'inizio.

Configurazioni dei servizi

Tutti i file di composizione dei container, le regole del reverse proxy e gli script di backup trovano posto in un repository. Ogni modifica ha una data e una descrizione, ed è possibile tornare indietro quando un cambiamento crea problemi. I file con password e chiavi vanno esclusi con .gitignore o cifrati con strumenti dedicati, anche se il repository è privato.

Mirror dei progetti da cui si dipende

Forgejo può creare mirror di repository esterni e aggiornarli a intervalli regolari. È utile per conservare una copia dei progetti di cui ci si fida: se un repository pubblico sparisce o cambia licenza, la propria copia resta.

Documentazione e appunti tecnici

Un wiki o un semplice repository di file Markdown è un ottimo posto per la documentazione del server di casa: dove si trova ogni servizio, come si ripristina, quali sono le password di emergenza e dove sono custodite.

Forgejo Actions

Forgejo include un sistema di automazione chiamato Actions, con una sintassi dei flussi di lavoro molto simile a quella di GitHub Actions. I lavori vengono eseguiti da un componente separato, il runner, che si installa a parte e si registra presso l'istanza.

Alcuni usi pratici in casa:

  1. Controllare la sintassi dei file YAML a ogni modifica del repository delle configurazioni.
  2. Generare e pubblicare un sito statico personale quando si modifica il contenuto.
  3. Costruire immagini container per i propri piccoli progetti.

Il runner esegue codice: va trattato con attenzione, preferibilmente isolato in un container o in una macchina virtuale, e registrato solo per i propri repository.

Sicurezza e backup

Un'istanza Forgejo contiene spesso codice e configurazioni importanti, quindi merita le stesse attenzioni degli altri servizi critici:

Aspetto Indicazione pratica
Esposizione Solo rete di casa o VPN, se non serve collaborare con esterni
Autenticazione Chiavi SSH per Git, secondo fattore per l'interfaccia web
Backup Comando forgejo dump o copia di dati e database a servizio fermo
Aggiornamenti Leggere le note di rilascio, come per ogni servizio con database

Il comando di dump produce un archivio con repository, database e configurazione, comodo da includere nel backup notturno.

Collegarsi al resto del mondo

Ospitare in casa non significa isolarsi. Si può tenere il lavoro privato su Forgejo e pubblicare i progetti destinati agli altri su una piattaforma pubblica, usando i push mirror: ogni modifica inviata al proprio server viene replicata automaticamente sul repository pubblico. Così la copia principale resta sotto il proprio controllo.

In sintesi

  • Forgejo è una forgia Git libera e leggera, adatta anche a hardware modesto.
  • Al primo avvio contano database, porta SSH, URL radice e registrazioni chiuse.
  • Configurazioni, mirror e documentazione del server sono gli usi più utili in casa.
  • Le Actions automatizzano controlli e pubblicazioni, con un runner da isolare.
  • Backup con dump e push mirror verso piattaforme pubbliche completano il quadro.
MM
Marco Marzaduri

Marco Marzaduri si occupa di cybersecurity, informatica forense e sviluppo web. Laureato in informatica, unisce il rigore dell'analisi tecnica all'attenzione per le persone che usano la tecnologia.

Leggi anche