developer tools

Come migrare da GitHub a Codeberg

GitHub Codeberg
Difficoltà: Facile Tempo stimato: 1-2 ore per repository (in gran parte automatizzato)

Guida passo-passo per spostare i tuoi repository da GitHub a Codeberg, la piattaforma tedesca non-profit di hosting Git. Gratuita per l'open source, sotto giurisdizione UE e costruita su Forgejo.

Prerequisiti

  • Account GitHub con accesso admin ai repository
  • Account Codeberg (gratuito)
  • Chiave SSH configurata localmente
  • Familiarità con la gestione dei remote Git

Passaggi

  1. Crea un account Codeberg

    Registrati su codeberg.org con email o migra direttamente da GitHub usando l'opzione signup OAuth.

  2. Decidi quali repo migrare

    Progetti open source: migra completamente. Progetti personali: migra o mirror. Codice proprietario commerciale: considera invece Forgejo self-hosted su Hetzner.

  3. Usa l'import GitHub di Codeberg

    Nuovo Repository > Migration > GitHub. Si autentica via OAuth e importa issue, pull request, wiki ed etichette.

  4. Aggiorna i riferimenti CI/CD

    Codeberg supporta Woodpecker CI (simile a GitHub Actions). Traduci i tuoi .github/workflows/ in .woodpecker.yml o usa CI esterno.

  5. Configura le chiavi SSH e i remote Git

    Aggiungi la tua chiave SSH a Codeberg e aggiorna i remote Git locali da github.com a codeberg.org.

  6. Aggiorna badge README e riferimenti esterni

    Sostituisci i badge GitHub (build status, versione) con equivalenti compatibili Codeberg.

  7. Imposta mirror GitHub (opzionale)

    Mantieni GitHub come mirror in sola lettura per la visibilità mentre Codeberg diventa la fonte di verità.

  8. Archivia o elimina i repo GitHub

    Dopo 30 giorni di sicurezza, archivia (soft delete) o elimina completamente la copia GitHub.

Perché migrare da GitHub a Codeberg?

GitHub è la piattaforma di hosting Git dominante nel 2026. È anche di proprietà di Microsoft, ospitato su infrastruttura USA soggetta al CLOUD Act e si sta sempre più trasformando in una fonte di dati di training AI, che tu abbia acconsentito o meno. Per progetti open source europei, sviluppatori individuali e organizzazioni che vogliono il proprio codice sotto giurisdizione UE, Codeberg è l’alternativa credibile.

Codeberg è un servizio di hosting Git tedesco non-profit costruito su Forgejo (il fork mantenuto dalla community di Gitea). Gratuito per progetti open source, finanziato da donazioni, residente in UE e costruito esplicitamente attorno ai valori di sostenibilità FOSS e sovranità digitale. La cosa più vicina a un ‘GitHub ma europeo’ che la community open source abbia.

Per il codice proprietario commerciale, l’alternativa naturale è Forgejo self-hosted su Hetzner — stesso software, ospitato sulla tua infrastruttura, a un costo di circa 5-30 €/mese in totale indipendentemente dalla dimensione del team. Questa guida si concentra specificamente su Codeberg, ma i passi di migrazione funzionano identicamente per Forgejo self-hosted.

Passi dettagliati per la migrazione

Passo 1: Crea un account Codeberg

Visita codeberg.org e crea un account. Gratuito, richiede solo l’email. Nessuna carta di credito.

Per le organizzazioni che migrano, crea un account organization dopo la registrazione individuale — questo ti permette di trasferire o forkare repository sotto il namespace dell’organizzazione.

Passo 2: Decidi cosa migrare

Sii selettivo. La migrazione è più veloce quando non porti con te dieci anni di repository morti.

Migra completamente:

  • Progetti open source attivi
  • Progetti personali che ti dispiacerebbe perdere se GitHub diventasse ostile
  • Repository con codice sensibile o logica di business

Considera il mirroring (sync read-only GitHub → Codeberg):

  • Repo inattivi ma referenziati
  • Progetti pubblici dove la visibilità su GitHub ancora conta

Salta / archivia:

  • Esperimenti personali da tempo morti
  • Repo che esistono solo come riferimenti o fork

Per il codice proprietario commerciale, valuta Forgejo self-hosted su Hetzner invece di Codeberg. La missione di Codeberg è l’hosting della community open source; i repo commerciali sono accettati ma il carattere della piattaforma si adatta meglio al lavoro FOSS.

Passo 3: Usa l’import GitHub di Codeberg

Codeberg ha un import GitHub integrato:

  1. Clicca su + → Nuova migrazione
  2. Scegli GitHub
  3. Autenticati con GitHub OAuth (o usa un personal access token)
  4. Seleziona il repository da importare
  5. Scegli cosa migrare:
    • Wiki
    • Issue
    • Etichette
    • Pull Request (come Issue, poiché PR GitHub ↔ PR Codeberg non sono compatibili 1:1)
    • Release
    • Milestone
  6. Clicca su Migrate Repository

Per repository con migliaia di issue, la migrazione può richiedere 30-60 minuti. Non preoccuparti di fare altro lavoro durante questa fase — Codeberg gestisce tutto in modo asincrono.

Passo 4: Aggiorna i riferimenti CI/CD

Codeberg usa Woodpecker CI (analogo a GitHub Actions). Traduci i tuoi .github/workflows/*.yml in .woodpecker.yml:

# Esempio: .woodpecker.yml
steps:
  build:
    image: node:20
    commands:
      - npm install
      - npm run build
      - npm test

Per workflow GitHub Actions complessi, la traduzione può essere non banale. Alternative pragmatiche:

  • Provider CI esterni che supportano Codeberg: Drone Cloud, CircleCI (con la loro integrazione Git generica)
  • CI self-hosted su Hetzner: GitLab Runner puntato a Codeberg, o Woodpecker self-hosted

Per la maggior parte dei progetti, la traduzione del workflow richiede poche ore e produce una configurazione CI più semplice e leggibile.

Passo 5: Configura chiavi SSH e remote Git

Aggiungi la tua chiave SSH:

  1. Codeberg → Impostazioni utente → Chiavi SSH/GPG
  2. Incolla la tua chiave pubblica

Aggiorna i remote Git locali:

# Cambia il remote da GitHub a Codeberg
git remote set-url origin git@codeberg.org:username/repo-name.git

# Oppure aggiungi Codeberg come remote aggiuntivo (per il periodo di parallel-run)
git remote add codeberg git@codeberg.org:username/repo-name.git
git push codeberg --all
git push codeberg --tags

Passo 6: Aggiorna README e badge

Badge e link specifici di GitHub necessitano aggiornamento:

  • Badge di build status → usa i badge Woodpecker CI
  • Badge di versione → Codeberg supporta i pattern shields.io
  • Conteggi di download → le release di Codeberg hanno API simili
  • Link a issue nei doc → aggiorna da github.com/user/repo/issues a codeberg.org/user/repo/issues

Passo 7: Imposta mirror GitHub (opzionale)

Per progetti dove la visibilità su GitHub conta ancora (progetti open source scoperti tramite la ricerca GitHub), mantieni GitHub come mirror in sola lettura:

# Codeberg ha una funzione integrata 'Push Mirror'
# Repository Settings > Repository > Push Mirror
# Aggiungi github.com/user/repo con personal access token

Questo mantiene Codeberg come tua fonte di verità mantenendo la presenza su GitHub.

Passo 8: Archivia o elimina i repo GitHub

Dopo 30 giorni di sicurezza:

  • Archivia (consigliato): Impostazioni repository → Archivia questo repository. Sola lettura, preserva la storia, segnala ‘spostato’ ai visitatori.
  • Elimina (se sei certo): Impostazioni → Danger Zone → Elimina questo repository.

Entrambe le opzioni funzionano. L’archiviazione è il default più sicuro — preserva la traccia di migrazione e ti dà un fallback se scopri qualcosa che non è stato migrato.

Consigli per una migrazione fluida

  • Migra prima un repository come test. Scegli un repo a basso rischio per validare il workflow prima di impegnarti nella migrazione bulk.
  • La complessità di GitHub Actions è il principale attrito della migrazione. Se i tuoi workflow usano molto Actions di terze parti, pianifica tempo per tradurli o sostituirli.
  • L’API di Codeberg è simile ma non identica a quella di GitHub. Strumenti personalizzati che chiamano l’API GitHub dovranno essere aggiornati per usare l’API compatibile Forgejo di Codeberg.
  • I limiti di risorse di Codeberg sono pensati per il FOSS. Se hai repo molto grandi o esegui CI estesa, considera Forgejo self-hosted su Hetzner — stesso software, le tue risorse.
  • Dona. Codeberg è finanziato da donazioni. Se lo usi a lungo termine, contribuisci per mantenerlo sostenibile. 5-10 €/mese è significativo per il progetto.
  • Per organizzazioni che migrano grandi codebase: considera Forgejo self-hosted come primario con mirror Codeberg per i progetti della community. Il meglio di entrambi — pieno controllo + visibilità dove conta.
  • Non migrare tutto in una volta. La maggior parte delle aziende che ha migrato con successo a Codeberg l’ha fatto progetto per progetto in 3-6 mesi, validando ciascuno prima di procedere.

Ti è stato utile?