In questo tutorial, vi mostreremo come eseguire Forgejo su un Raspberry Pi o altre board simili, ma va bene per qualsiasi altro computer con Docker installato.

Forgejo è un servizio Git leggero e ospitante che offre molti dei servizi e delle funzionalità che ti aspetti da servizi cloud come GitHub.

Questo particolare pacchetto software è in realtà un fork del popolare progetto Gitea, nato dopo alcuni cambiamenti chiave nel modo in cui Gitea viene gestita.

Essendo leggero, Forgejo è una soluzione eccellente per il self-hosting dei vostri repository di codice sul vostro Raspberry Pi. Può facilmente funzionare con l’hardware limitato del Pi senza consumare tutte le risorse, lasciandoci margine per poter installare anche altri software, come ad esempio Pi-Hole.

N.B: Dal momento che il container di Forgejo che stiamo utilizzando ha solo build per ARM64, è necessario eseguire un sistema operativo a 64 bit. Conseguentemente, occorrerà almeno un Raspberry Pi 3 o più recente.

Requisiti

  • Raspberry PI (dal modello 3 in poi, poiché è richiesto il supporto per ARM64, con OS a 64 bit);
  • Scheda Micro-SD (da minimo 8 GB, trovate facilmente da 32 GB a pochi euro);
  • Connettività ethernet o Wi-Fi;
  • Docker installato sul Raspberry PI, seguendo la nostra guida.

Installare Forgejo su un Raspberry Pi

Nei passaggi successivi, ti guideremo passo-passo per far funzionare Forgejo sul tuo Raspberry Pi.

Prima di procedere, ricorda che devi eseguire un sistema operativo a 64 bit per questa guida e aver già installato Docker. Inoltre, dovresti assegnare un indirizzo IP statico al tuo Raspberry PI.

Preparare il Raspberry Pi per Forgejo

1. Assumendo di avere Docker già installato, il nostro primo passo è quello di creare una directory per memorizzare il file di Docker Compose per Forgejo sul nostro Raspberry Pi.

Per creare questa directory, utilizzeremo il comando mkdir con l’opzione “-p“.

sudo mkdir -p /opt/stacks/forgejo

2. Dopo aver creato la directory, entriamoci usando il comando cd:

cd /opt/stacks/forgejo

Scrivere un file di Docker Compose per Forgejo

3. Ora che siamo nella directory che abbiamo creato, possiamo passare a scrivere il file di Docker Compose per Forgejo sul nostro Raspberry Pi.

Un file di Docker Compose è un insieme di istruzioni che Docker seguirà per installare uno o più contenitori. useremo l’editor di testo nano per scrivere questo file in quanto è relativamente facile da usare.

sudo nano docker-compose.yaml

4. All’interno di questo file, è necessario inserire le righe sottostanti. Useremo questo file sia per eseguire sia Forgejo che Postgres (il database su cui verranno salvate le varie impostazioni, account, ecc.) sul nostro Raspberry Pi.

All’interno di questo file, c’è una variabile che devi sostituire.

  • <DBPASSWORD>: Sostituisci questo segnaposto con la password che Forgejo utilizzerà per collegarsi al database Postgres. Puoi usare una password generata casualmente, ricordati però di sostituire tale voce all’interno di tutto il file (ci sono 2 punti in cui dovrai farlo).

Se vuoi archiviare i tuoi repository in un posto diverso dalla scheda Micro-SD del tuo Raspberry Pi, ad esempio, poiché tieni collegato al Raspberry un Hard Disk Esterno, sostituisci “./forgejo” con tutto il percorso specifico, ad esempio /mnt/mio-hdd/forgejo.

services:
  server:
    image: codeberg.org/forgejo/forgejo:7
    container_name: forgejo
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - FORGEJO__database__DB_TYPE=postgres
      - FORGEJO__database__HOST=db:5432
      - FORGEJO__database__NAME=forgejo
      - FORGEJO__database__USER=forgejo
      - FORGEJO__database__PASSWD=<DBPASSWORD>
    restart: always
    networks:
      - forgejo
    volumes:
      - ./forgejo:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "222:22"
    depends_on:
      - db
  db:
    image: postgres:14
    restart: always
    environment:
      - POSTGRES_USER=forgejo
      - POSTGRES_PASSWORD=<DBPASSWORD>
      - POSTGRES_DB=forgejo
    networks:
      - forgejo
    volumes:
      - ./postgres:/var/lib/postgresql/data
networks:
  forgejo:
    external: false

5. Una volta che hai impostato la password per il Database ed eventualmente un percorso diverso per i dati, salva ed esci premendo CTRL + X quindi Y e poi ENTER.

Avviare Forgejo sul tuo Raspberry Pi

6. Ora che abbiamo tutto configurato, possiamo avviare Forgejo sul nostro Raspberry Pi eseguendo il comando qui sotto.

Il processo di avvio può richiedere alcuni minuti poiché il Pi ha bisogno di scaricare sia le immagini docker di Forgejo che di Postgres.

docker compose up -d

Accesso all’interfaccia Web Forgejo

7. Con Forgejo in esecuzione sul Raspberry Pi, vorrai sapere come accedere alla sua interfaccia web.

Per accedere all’interfaccia web, devi conoscere l’indirizzo IP del tuo Raspberry Pi. È possibile ottenere facilmente questo indirizzo utilizzando il comando hostname.

hostname -I

8. Una volta che conosci l’IP del tuo Raspberry Pi, vai al seguente indirizzo per accedere a Forgejo.

Assicurati di sostituire “<INDIRIZZO-IP>” con l’IP del tuo Pi:

http://<INDIRIZZO-IP>:3000

Configurazione inziale di Forgejo

9. Quando accederai per la prima volta a Forgejo, dovrai completare alcuni passaggi iniziali di configurazione. La maggior parte di queste impostazioni deve essere lasciata come impostazione predefinita; tuttavia, ci sono un paio di opzioni che vorrai modificare.

  1. La prima opzione che potresti voler modificare è il “Dominio Server” (1).
    Questa opzione specifica da quale indirizzo accederemo a Forgejo, può essere un Indirizzo IP (quello del Raspberry Pi) o un dominio, ad esempio se hai installato Pi-Hole, di default, potresti mettere “pi.hole“.In questo tutorial, stiamo eseguendo Forgejo  sulla nostra rete locale, quindi utilizzeremo l’indirizzo IP del Raspberry Pi.
  2. L’altra opzione che vorrai cambiare è l’“URL di Base” (2).
    Questo URL verrà utilizzato per creare percorsi per le notifiche e-mail e per fornirti l’URL per raggiungere i repository in fase di clonazione.In genere, questo inizierà con il protocollo (httpohttps), seguito dall’IP o dal dominio che si prevede di utilizzare per accedere all’installazione di Forejo.
    Raspberry PI + Forgejo - Configurazione iniziale

10. Adesso dovrai configurare il nome utente e la password dell’amministratore. Facciamo quindi click su “Impostazioni profilo amministratore“.

Da qui, comprariranno diverse caselle di testo per assegnare un nome utente, una password e un indirizzo e-mail per l’account dell’amministratore.

Una volta inseriti, clicca su “Installa Forgejo“  per completare l’installazione.
Forgejo Setup Admin

11. A questo punto, hai installato con successo Forgejo sul tuo Raspberry Pi. Ora puoi iniziare ad aggiungere repository e memorizzare il tuo codice, visualizzerai infatti la pagina della dashboard, come qui di seguito.

Forgejo - Dashboard

Aggiornare Forgejo sul tuo Raspberry Pi

In questa sezione, ti mostreremo alcuni semplici passaggi per aggiornare il container Forgejo all’ultima versione sul tuo Raspberry Pi.

1. Prima di aggiornare Forgejo alla versione più recente, è necessario passare alla directory in cui abbiamo originariamente scritto il file di Docker Compose.

Se hai seguito questa guida in precedenza, puoi passare alla directory corretta usando il seguente comando.

cd /opt/stacks/forgejo

2.  Una volta che sei nel posto giusto, puoi far scaricare l’ultima versione di Forgejo a Docker usando il comando qui sotto nel terminale.

Questo comando scaricherà una nuova immagine ma non aggiornerà i container in esecuzione.

docker compose pull

3. Fortunatamente, Docker semplifica la transizione dei vari container a una nuova immagine.

Utilizzando il comando sottostante, Docker controllerà tutti i container menzionati nel file di Docker Compose e se nota che una nuova immagine è disponibile per un container, lo fermerà e lo avvierà utilizzando la nuova versione.

docker compose up -d

A questo punto dovresti avere il server Forgejo Git attivo e funzionante sul tuo Raspberry Pi.

Forgejo è un’ottima soluzione per l’hosting dei tuoi repository di codice, in quanto è leggero pur rimanendo ricco di funzionalità.

Se hai domande o dubbi in merito, lascia un commento qui sotto o dai un’occhiata al nostro forum!

E ricorda di dare un’occhiata ai vari progetti che periodicamente pubblichiamo in questa sezione!