Come installare Forgejo con Docker Compose e NGINX Proxy Manager: il tuo Git personale senza dipendere da GitHub

Forgejo non è solo un’alternativa open‑source a GitHub: è il tuo spazio personale per gestire repository, creare backup dei tuoi file e organizzare guide e documentazione in totale autonomia. Una piattaforma leggera, self‑hosted e davvero tua.

Dopo anni passati a usare GitHub per i miei progetti personali, ho iniziato a sentire il peso della dipendenza da un servizio centralizzato. Non fraintendermi: GitHub funziona benissimo, è comodo, ha un’interfaccia curata e offre praticamente tutto quello che serve.

Il problema è che i dati non sono davvero miei.

Sono ospitati sui loro server, sotto le loro regole, con le loro policy. E oggi va tutto bene, ma domani? GitHub appartiene a Microsoft, e questo significa che qualsiasi cambiamento nelle condizioni d’uso, nelle funzionalità, nei limiti imposti o nelle integrazioni può arrivare dall’alto, senza che io abbia alcun controllo.

Ed è proprio da qui che nasce la scelta di guardare verso soluzioni self‑hosted come Forgejo.

Forgejo è la risposta a questo problema. È un fork comunitario di Gitea, nato quando la comunità ha deciso di prendere le distanze dalla direzione commerciale che il progetto stava prendendo. Niente aziende dietro, niente interessi commerciali, solo una community che vuole un software Git self-hosted fatto bene. È leggerissimo. Gira tranquillamente su un Raspberry Pi, sul PC di casa o su un VPS da 5€ al mese. E fa tutto quello che ti aspetti: repository, issue, pull request, wiki, e persino le Actions per CI/CD.

Grazie a Docker Compose, l’installazione diventa semplice e veloce, riducendo al minimo i tempi di configurazione.

In questa guida ti spiegherò come installare Forgejo utilizzando Docker Compose e NGINX Proxy Manager semplificando la gestione e l’aggiornamento del servizio.

Link al progetto

Puoi trovare il repository ufficiale di Forgejo su Codeberg all’indirizzo: https://codeberg.org/forgejo

Requisiti necessari

Prima di iniziare, assicurati di avere a disposizione:

  • Un server con Docker e Docker Compose installati. Se non l’hai già installati, ti sarà utile una guida su Come installare Docker e Docker Compose
  • Un nome di dominio configurato attraverso il quale il servizio sarà accessibile, ad esempio: https://forgejo.it/
  • NGINX Proxy Manager già funzionante (se non ce l’hai, segui questa guida)
  • Accesso al server tramite SSH con permessi di amministratore.

Installare Forgejo con Docker Compose e NGINX Proxy Manager

Crea la directory e il docker-compose

Accedi al server tramite SSH

mkdir ~/forgejo && cd ~/forgejo

poi

nano docker-compose.yml

Copia e incolla il seguente contenuto al suo interno:

Importante:

  • Cambia git.tuodominio.com con il tuo dominio vero.
  • Cambia npm_network con il nome esistente della rete di NGINX Proxy Manager
  • SSH è disabilitato volutamente. Ogni porta SSH esposta pubblicamente diventa un bersaglio per bot che tentano accessi non autorizzati. Con HTTPS non hai questo problema, funziona ovunque (anche dietro firewall aziendali) e usi lo stesso certificato SSL del sito.

Avvia Forgejo

docker compose up -d

Aspetta che scarichi l’immagine. Verifica che sia partito:

docker ps | grep forgejo

Dovresti vedere qualcosa come: forgejo Up 30 seconds (healthy) 3000/tcp

Configurazione NGINX Proxy Manager

  1. Apri NGINX Proxy Manager
  2. Clicca “Proxy Hosts”“Add Proxy Host”
  3. Compila così:
    • Domain Names: git.tuodominio.com
    • Scheme: http
    • Forward Hostname/IP: forgejo
    • Forward Port: 3000
    • Abilita: Cache Assets, Block Common Exploits, Websockets Support
  4. Vai nella tab SSL:
    • Seleziona “Request a new SSL Certificate”
    • Abilita Force SSL, HTTP/2 Support, HSTS Enable
    • Inserisci la tua email
    • Accetta i termini di Let’s Encrypt
  5. Clicca “Save”

NGINX Proxy Manager farà tutto da solo: configurerà il proxy, richiederà il certificato SSL e lo rinnoverà automaticamente. Se riscontri problemi dai un occhiata a questa guida https://emanuelegori.uno/come-impostare-il-proxy-inverso-con-nginx-proxy-manager-npm/

Prima configurazione via web

Apri il browser e vai su https://git.tuodominio.com. Vedrai la pagina di setup iniziale.

Impostazioni Database: Lascia tutto com’è (SQLite3 va benissimo per uso personale/piccoli team).

Impostazioni Generali:

  • Titolo sito: “Git” o quello che vuoi
  • URL base: https://git.tuodominio.com (deve corrispondere esattamente)
  • SSH: Già disabilitato, lascia così

Account Amministratore:

  • Scegli username, password sicura ed email
  • Questo sarà l’utente admin con pieni poteri

Impostazioni Server:

  • Disabilita registrazione: Sì (se è solo per te, eviti spam)
  • Richiedi login per vedere pagine: A tua scelta (io lo lascio disabilitato per condividere link pubblici)

Clicca “Installa Forgejo” e aspetta qualche secondo.

Come usare Git con HTTPS (invece di SSH)

1. Genera un Personal Access Token
  • Vai su Impostazioni profiloApplicazioniGestisci Token
  • Clicca Genera Nuovo Token
  • Dai un nome (tipo Desktop Ubuntu) e seleziona tutti i permessi su lettura e scrittura
  • Copia il token (lo vedrai solo questa volta!)

2. Configura Git sul tuo PC

Nome e email (una volta sola)

git config --global user.name 
tuo username

git config --global user.email 
tua@email

Salva le credenziali (così non le chiede ogni volta)

git config --global credential.helper store

3. Crea il tuo primo repository da shell

Puoi creare repository direttamente con Git senza passare dall’interfaccia web:

mkdir mio-progetto && cd mio-progetto

Questo crea una cartella chiamata mio-progetto sul tuo computer e ti sposta dentro. È qui che metterai il codice del tuo progetto. Puoi chiamarla come vuoi, il nome non deve per forza coincidere con quello del repository su Forgejo (anche se è più comodo).

git init

Questo dice a Git che questa cartella è un repository Git e creerà una sottocartella nascosta .git dove terrà traccia di tutte le modifiche. Da questo momento, Git sa che deve monitorare i file in questa directory.

echo "# Mio Progetto" > README.md

Crea un file chiamato README.md con dentro scritto “# Mio Progetto”. Il README è il file che appare come descrizione del progetto su Forgejo (e su GitHub, GitLab, ecc.). Il simbolo # in Markdown significa “titolo”. Ovviamente puoi scrivere quello che vuoi al posto di “Mio Progetto”. Al posto del comando echo puoi usare un editor di testo come nano, gedit, Blocco Note su Windows. Salvalo come README.md nella cartella mio-progetto.

git add README.md

Questo dice a Git di preparare il file per il commit. Puoi aggiungere più file con git add nomefile o tutti i file modificati con git add .

git commit -m "Initial commit"

Qui Git salva effettivamente le modifiche nella cronologia del progetto. Il -m "Initial commit" è il messaggio che descrive cosa hai fatto. “Initial commit” è la convenzione per il primissimo commit di un progetto. Da qui in poi, ogni volta che modifichi qualcosa e fai un commit, avrai uno snapshot del progetto in quel momento.

git remote add origin https://git.tuodominio.com/username/mio-progetto.git

Questo collega il tuo repository locale (la cartella mio-progetto sul tuo PC) a un repository remoto su Forgejo. “origin” è semplicemente il nome standard che si dà al server remoto. Stai dicendo a Git: “Quando ti dico di inviare i file, mandali a questo indirizzo”.

Nota: sostituisci tuodominio.com con il tuo dominio vero e username con il tuo username su Forgejo. Il repository si chiamerà mio-progetto (o come l’hai chiamato tu).

git push -u origin master

Git ti chiederà username e token (il token che hai generato prima, NON la password dell’account). Dalla seconda volta in poi non chiederà più nulla perché le credenziali sono salvate.

Boom!(come dice Booth nel telefilm Bones): il repository viene creato automaticamente su Forgejo. Il comando fa tre cose:

  • push: invia i commit dal tuo PC al server
  • -u origin master: dice “da ora in poi, quando faccio push, invia sempre al branch master su origin”. Il -u serve solo la prima volta per impostare il collegamento
  • crea il repository su Forgejo: grazie a quella configurazione nel docker-compose, se il repository non esiste, viene creato automaticamente!

4. Workflow quotidiano

Una volta che hai dei repository, il workflow è questo:

  • nano file.txt (o altro editor di testo) modifichi uno o più file
  • git status vedi cosa hai modificato
  • git add . aggiungi tutte le modifiche
  • git commit -m “Descrizione modifiche”
  • git push invia al server (non chiede più credenziali!)

Per tutti i dettagli, comandi avanzati e troubleshooting, leggi la mia guida Git HTTPS in Italiano

5. Backup

I vostri repository e configurazioni sono dentro ~/forgejo/forgejo-data. Fate il backup di quella directory e siete a posto.

Perché mi piace Forgejo

Dopo qualche mese di utilizzo, questi sono i vantaggi che trovo più evidenti:

  • Controllo totale: I repository sono miei, sul mio server.
  • Veloce: Carica istantaneamente anche su un VPS da 1 GB RAM.
  • Actions integrate: Build e deploy automatici senza pagare GitHub/GitLab.
  • Privacy: Niente analytics, niente tracking, niente scan del codice.
  • Community-driven: Nessuna azienda dietro che può decidere di cambiare rotta.
  • Nessun limite: Spazio, repository, utenti… fai come ti pare.

Conclusione

Forgejo è solido, leggero e fa il suo lavoro perfettamente. Io lo uso per progetti personali e configurazioni di sistema.

GitHub è stato, per anni, quello che Facebook era stato per i social: un luogo sereno d’incontro. Un posto dove gli sviluppatori si trovavano, collaboravano, condividevano codice. Era la piazza del software libero, il bar dove si discuteva di progetti a mezzanotte.

Poi Microsoft l’ha comprato. E come Facebook si è trasformato in una macchina pubblicitaria che ti vende come prodotto, GitHub sta lentamente diventando qualcos’altro. Copilot che addestra i suoi modelli sul tuo codice. Telemetria ovunque. Funzionalità “enterprise” che spingono verso piani a pagamento. Non fraintendetemi: GitHub funziona ancora benissimo, ma non è più quello che conoscevo.

È lo stesso motivo per cui molti hanno lasciato Twitter/X per Mastodon. Per cui scelgono Nextcloud invece di Google Drive. Per cui preferiscono Matrix a WhatsApp. È una scelta consapevole sul futuro che vogliamo costruire.

Forgejo è la risposta a questo. Per ora funziona, fa quello che deve, e i dati sono dove devono stare: sul mio VPS

emanuelegori
emanuelegori

emanuelegori è un blogger appassionato di FOSS e autore di questo blog.

Su Homelab Notes trovi guide pratiche, spunti e consigli per scoprire il mondo del software libero, delle soluzioni self-hosted e delle alternative open source ai servizi commerciali più diffusi.
Quando non scrive, è online nel Fediverso con spirito indipendente e tanta voglia di condividere conoscenza.

Lascia una risposta

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

Leave the field below empty!