À quoi ça sert

Forgejo (prononcé « for-djé-jo », l'esperanto pour « forge ») est une forge logicielle — c'est-à-dire l'équivalent fonctionnel de GitHub ou GitLab que tu installes sur ton propre serveur. Tu y héberges tes dépôts Git, gères les Pull Requests, suis tes issues, et exécutes ta CI/CD :

  • Hébergement de tes dépôts Git, sur ton infrastructure.
  • Pull Requests (mêmes terminologie et flux que GitHub).
  • Issues, milestones, kanban, wiki par projet.
  • Forgejo Actions : CI/CD avec une syntaxe quasi-identique à GitHub Actions (la plupart des actions sont réutilisables).
  • Package Registry : conteneurs Docker, paquets Python / npm / Maven, etc.
Forgejo, Gitea, Codeberg : qui est qui

Gitea est une forge Go légère, créée en 2016. En 2022, après que Gitea Ltd. ait pris la main sur la marque, une partie de la communauté a forké le code pour garantir une gouvernance ouverte : c'est Forgejo. Le projet est porté par Codeberg e.V., une association allemande à but non lucratif. Codeberg.org est une instance Forgejo hébergée par cette même asso, ouverte gratuitement aux projets logiciels libres. Forgejo n'a pas de SaaS commercial — c'est volontaire.

Pourquoi c'est léger

Forgejo est livré comme un unique binaire Go (≈ 200 Mo) qui inclut tout : serveur web, moteur Git, base de données SQLite par défaut. Il tourne sur un Raspberry Pi sans transpirer, là où GitLab demande plusieurs Go de RAM et un Postgres dédié.

Un exemple d'usage

Tu es dans une asso d'étudiants, vous voulez héberger vos projets sans dépendre de GitHub, sans payer GitLab, et sans qu'un VPS à 5 €/mois suffoque. Tu lances Forgejo via Docker en quelques minutes, chacun s'y crée un compte, et le workflow Git reste strictement identique à GitHub ou GitLab :

bash
# Récupérer la dernière version
git pull origin main

# Créer une branche pour ta feature
git checkout -b feat/ma-fonctionnalite

# Coder, puis committer
git add .
git commit -m "Ajoute la fonctionnalité X"

# Pousser et ouvrir une Pull Request
git push origin feat/ma-fonctionnalite

Sur l'instance Forgejo, tu cliques « New Pull Request », tu décris ton changement, ton co-équipier relit, c'est merged. Les Forgejo Actions configurées relancent les tests à chaque push. Aucun compte tiers, aucune télémétrie, tout est sur votre serveur.

How-to : utiliser Forgejo

Deux voies : utiliser Codeberg.org (instance publique gratuite, pour projets libres uniquement) ou auto-héberger Forgejo avec Docker. Cette dernière voie est le cas d'usage principal de Forgejo.

  1. Voie A — Créer un compte sur Codeberg.org

    Si ton projet est libre (les CGU de Codeberg l'exigent), c'est l'option la plus rapide pour tester.

    1. Va sur codeberg.org/user/sign_up.
    2. Choisis un username, une adresse e-mail durable.
    3. Lis et accepte les conditions d'utilisation (rappel : projets libres / open source uniquement).
    4. Active la 2FA (Settings → Security).
    Codeberg n'accepte pas tout

    Codeberg.org est financée par dons et a une politique stricte : pas de projets propriétaires, pas de hosting opportuniste, pas de mining, pas de spam. Pour un projet privé ou commercial, c'est auto-hébergement obligatoire (voie B).

  2. Voie B — Auto-héberger Forgejo avec Docker

    Le cas d'usage typique. Tu as un VPS / Raspberry Pi / serveur perso :

    yaml
    # docker-compose.yml minimal pour démarrer
    services:
      forgejo:
        image: codeberg.org/forgejo/forgejo:9
        restart: unless-stopped
        environment:
          - USER_UID=1000
          - USER_GID=1000
        volumes:
          - ./data:/data
          - /etc/timezone:/etc/timezone:ro
          - /etc/localtime:/etc/localtime:ro
        ports:
          - "3000:3000"   # UI web
          - "222:22"     # SSH Git (port interne 22)
    bash
    docker compose up -d

    Ouvre http://localhost:3000 — un assistant d'installation web te demande la base de données (laisse SQLite pour démarrer, suffisant jusqu'à quelques dizaines d'utilisateurs), l'URL publique et le compte admin. Puis tu es opérationnel.

    Pour la prod

    Mets Forgejo derrière un reverse proxy Traefik ou Caddy pour le HTTPS automatique, passe sur Postgres si tu dépasses 50 utilisateurs, et configure les sauvegardes du volume data/ (le seul état persistant).

  3. Créer ton premier dépôt

    Le vocabulaire est identique à GitHub (Repository, Organization, Pull Request) — pas de renommage façon GitLab.

    1. En haut à droite, clique « + » → New Repository.
    2. Donne un nom au dépôt (ex. devia-tp1).
    3. Choisis Private ou Public.
    4. Coche « Initialize Repository » et choisis éventuellement un .gitignore Python.
    5. Clique « Create Repository ».
  4. Installer Git sur ton PC

    Étape strictement identique à GitHub / GitLab — Git est l'outil local, indépendant de la forge. Si déjà installé, passe.

    bash
    # macOS
    brew install git
    
    # Linux (Debian / Ubuntu)
    sudo apt install git
    
    # Windows
    winget install --id Git.Git -e
    
    git --version
  5. Configurer ton identité Git

    Indépendant du service. Si déjà fait pour GitHub / GitLab, c'est OK.

    bash
    git config --global user.name "Ton Prénom"
    git config --global user.email "ton-email@example.fr"
    git config --global init.defaultBranch main
  6. Authentifier ton PC (clé SSH)

    Tu peux réutiliser ta paire de clés id_ed25519 existante.

    bash
    # Si pas de clé existante
    ssh-keygen -t ed25519 -C "ton-email@example.fr"
    
    cat ~/.ssh/id_ed25519.pub

    Sur ton instance Forgejo (ou Codeberg) : Settings → SSH / GPG Keys → Add Key. Colle la clé publique. Vérifie :

    bash
    # Sur Codeberg
    ssh -T git@codeberg.org
    
    # Sur une instance auto-hébergée (port SSH 222 dans l'exemple Docker)
    ssh -T -p 222 git@<ton-domaine>
  7. Cloner et travailler avec un dépôt

    Sur la page du dépôt, clique « Use SSH » en haut à droite et copie l'URL.

    bash
    git clone git@codeberg.org:<username>/<repo>.git
    cd <repo>
    
    git status
    git add .
    git commit -m "Mon premier commit"
    git push
  8. VS Code avec Forgejo

    Forgejo n'a pas d'extension VS Code officielle (la communauté est encore jeune). En pratique tu travailles avec :

    1. Le support Git natif de VS Code (clone, commit, push, branches) — déjà tout ce qu'il faut côté code.
    2. GitLens (eamodio.gitlens) — annotations blame, historique, comparaisons.
    3. L'interface web de Forgejo pour gérer les Pull Requests et les issues — elle est rapide et claire, le va-et-vient avec VS Code n'est pas pénalisant.
    Astuce

    Forgejo expose une API REST quasi compatible avec celle de Gitea (et globalement inspirée de GitHub). Si tu veux scripter (créer des issues, fermer des PR…), regarde la doc : /api/v1/... avec un Personal Access Token.

  9. Bonus : un workflow Forgejo Actions minimal

    Forgejo Actions reprend la syntaxe de GitHub Actions. Le fichier va dans .forgejo/workflows/ci.yml (ou .gitea/workflows/, accepté par compatibilité) :

    yaml
    name: CI
    
    on:
      push:
        branches: [main]
      pull_request:
    
    jobs:
      test:
        runs-on: docker
        steps:
          - uses: actions/checkout@v4
          - uses: actions/setup-python@v5
            with:
              python-version: "3.12"
          - run: pip install -r requirements.txt
          - run: pytest

    Pour que ça tourne sur ton instance auto-hébergée, il te faut un runner Forgejo (un petit binaire Go qui exécute les jobs, à installer une fois). La doc officielle décrit l'install runner en quelques minutes.

Pourquoi choisir Forgejo en particulier

Forgejo joue dans une catégorie spécifique : la forge légère, libre, et auto-hébergée. Il ne cherche pas à remplacer GitHub ou GitLab sur tous les terrains — il occupe un créneau précis où il est même meilleur que ses concurrents.

Les 5 raisons qui le différencient

  1. Légèreté radicale — un binaire Go ≈ 200 Mo, SQLite suffit pour une petite équipe, tourne confortablement sur un Raspberry Pi ou un VPS à 3 €/mois. Pour la même charge, GitLab CE veut au moins 4 Go de RAM et un Postgres dédié.
  2. Logiciel libre fort (AGPL-3.0+) — la licence copyleft garantit que toute fork hébergée publiquement devra rester libre. C'est une protection contre la captation propriétaire que la licence MIT de Gitea n'offrait pas (et qui a mené au fork de 2022).
  3. Gouvernance associative — Codeberg e.V. est une asso allemande à but non lucratif, financée par dons, sans investisseurs. Pas de risque de pivot commercial, pas de monétisation des données, pas de feature gardée derrière un paywall.
  4. Compatibilité GitHub Actions — Forgejo Actions reprend la syntaxe et une bonne partie des actions de l'écosystème GitHub. Tu apprends une chose, tu sais écrire un pipeline pour les deux.
  5. Souveraineté complète — sur ton serveur, sur ton domaine, sous tes sauvegardes. Aucune télémétrie, aucun appel sortant. Pertinent en milieu institutionnel, scolaire, ou simplement par hygiène.

Forgejo vs GitHub / GitLab CE — quand choisir quoi

Forgejo vs GitHub

GitHub gagne sur : la communauté open source (immense), la visibilité (portfolio, recrutement), le marketplace d'Actions, GitHub Copilot. Forgejo gagne sur : l'auto-hébergement, la privacy, la souveraineté, l'absence de vendor lock-in, et la possibilité de continuer à fonctionner même si le projet upstream change radicalement de politique.

Forgejo vs GitLab CE

Les deux sont auto-hébergeables et libres. GitLab gagne sur : l'intégration DevOps tout-en-un (security scan, monitoring, kanban avancé), l'écosystème d'entreprise, les fonctionnalités EE pour grands déploiements. Forgejo gagne sur : la simplicité (un seul binaire), les ressources requises (Pi vs VM puissante), la rapidité de l'UI, la gouvernance associative (vs entreprise commerciale).

Les limites qu'il faut connaître

  • Pas de SaaS commercial. Codeberg.org existe mais n'accepte que des projets libres. Pour héberger un projet privé / pro, tu dois auto-héberger — donc gérer un serveur.
  • Communauté plus petite que GitHub et GitLab. Tu trouveras moins de tutos en français, moins de réponses sur Stack Overflow, moins de templates prêts à l'emploi.
  • Pas de marketplace équivalent à celui de GitHub. La majorité des actions GitHub fonctionnent, mais sans le côté découverte UI.
  • Pas d'IA intégrée de niveau Copilot. Tu peux brancher des outils externes mais il n'y a pas d'offre native.
  • Fédération en cours : l'idée d'envoyer une PR depuis ton instance vers une autre est en développement (codename F3 / ActivityPub). Pas encore production-ready.

Cas d'usage où Forgejo est la bonne réponse

  • Asso étudiante / hackerspace / collectif qui veut un Git interne sans payer ni dépendre de GitHub. C'est le cas d'école.
  • Projets libres qui veulent une alternative éthique à GitHub : code chez Codeberg.org, miroir public sur GitHub pour la visibilité.
  • Petites équipes / freelances qui veulent leur propre forge sans la complexité de GitLab.
  • Souveraineté : organismes publics, écoles, ONGs qui ne veulent pas que leur code transite par des services étrangers.
  • Apprentissage de l'auto-hébergement : Forgejo est un excellent premier service à auto-héberger — léger, retour visuel immédiat, peu de pièges.
Garde l'angle ouvert

Comme pour GitLab, rien n'empêche d'utiliser Forgejo en plus de GitHub. Beaucoup de projets gardent leur code source de référence sur Codeberg et exposent un miroir GitHub pour la visibilité. git remote add github … et un push double, c'est la solution la plus simple.

Aide-mémoire Git

Toujours les mêmes commandes Git — la forge ne change rien. Voir les fiches GitHub et GitLab pour le détail. Spécificité Forgejo : si ton instance auto-hébergée écoute SSH sur un port non standard (ex. 222), il faut le préciser dans l'URL ou dans ~/.ssh/config.

bash
# Cycle de base (identique partout)
git clone <url>
git status
git add .
git commit -m "message"
git push
git pull

# Cloner depuis une instance Forgejo avec port SSH non standard
git clone ssh://git@mon-forgejo.fr:222/user/repo.git

# Ou configurer une fois dans ~/.ssh/config :
#   Host mon-forgejo.fr
#     Port 222
#     User git
# Puis : git clone git@mon-forgejo.fr:user/repo.git

# Avoir plusieurs remotes (Codeberg + miroir GitHub par ex.)
git remote -v
git remote add github git@github.com:user/repo.git
git push github main

Pour aller plus loin