Description
Forgejo est une forge Git self-hosted légère, issue d'un fork de Gitea début 2023. La séparation d'avec Gitea est intervenue quand la société Gitea Inc. a tenté de basculer certaines éditions en licence propriétaire — la communauté a répondu en forgeant Forgejo pour préserver la liberté du logiciel.
Points clés :
- Gouvernance communautaire : décisions prises par un Forgejo Committee (pas une entreprise)
- 100% open source : licence MIT, pas de "open core"
- Compatibilité Gitea : migration triviale (1 commande), même API REST
- Léger : binaire Go unique, ~512 Mo de RAM pour une instance petite
- Multi-plateforme : Linux, ARM (Raspberry Pi), Windows, macOS
Fonctionnalités :
- Dépôts Git : branches, tags, releases, protection de branches
- Pull/Merge requests : code review, approvals, conversations
- CI/CD : Forgejo Actions (compatible GitHub Actions)
- Container & Package Registry : images OCI, npm, Maven, PyPI…
- Pages statiques, wiki, issue tracker, milestones
- OAuth2, OIDC, LDAP : auth enterprise
- Webhooks : intégration Slack, Discord, [[app-woodpecker-ci]]…
Différence avec Gitea : gouvernance communautaire, pas de risque de basculement propriétaire.
Différence avec GitLab : beaucoup plus léger (1 Go RAM vs 8+), moins de features, mais plus rapide et plus simple.
Installation
Via Docker Compose (recommandé)
# docker-compose.yml
version: '3.8'
services:
forgejo:
image: codeberg/forgejo:8
container_name: forgejo
restart: unless-stopped
environment:
- USER_UID=1000
- USER_GID=1000
- FORGEJO__server__DOMAIN=forgejo.example.com
- FORGEJO__server__SSH_DOMAIN=forgejo.example.com
- FORGEJO__server__ROOT_URL=https://forgejo.example.com
volumes:
- forgejo-data:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "2222:22"
labels:
- "traefik.enable=true"
- "traefik.http.routers.forgejo.rule=Host(`forgejo.example.com`)"
- "traefik.http.routers.forgejo.entrypoints=websecure"
- "traefik.http.services.forgejo.loadbalancer.server.port=3000"
networks:
- proxy
forgejo-db:
image: postgres:15
container_name: forgejo-db
restart: unless-stopped
environment:
- POSTGRES_USER=forgejo
- POSTGRES_PASSWORD=*** - POSTGRES_DB=forgejo
volumes:
- forgejo-db:/var/lib/postgresql/data
networks:
- proxy
volumes:
forgejo-data:
forgejo-db:
networks:
proxy:
external: true
Binaire standalone
wget -O forgejo https://codeberg.org/forgejo/forgejo/releases/download/v8.0.0/forgejo-8.0.0-linux-amd64 chmod +x forgejo sudo mv forgejo /usr/local/bin/
Configuration
- Premier accès :
https://forgejo.example.com→ assistant de configuration - Compte admin : créé via l'UI, ou via CLI
forgejo admin user create - SMTP : configurer dans
app.ini([mailer]) - Auth OIDC : intégration native avec [[app-authentik]] / Keycloak
- Runners Actions : ajouter des runners via docker-compose séparé
- Backups :
forgejo dump(chiffrement inclus) - Migrer depuis Gitea :
forgejo admin user migrate-from-gitea
Alternatives
- [[app-gitea]] — Origine du fork, désormais risc propriétaire (à éviter)
- [[app-gitlab]] — Beaucoup plus lourd, plus de features
- [[app-woodpecker-ci]] + Forgejo — CI/CD externe couplé à la forge
- OneDev — Concurrent Java, all-in-one
- Gogs — Ancêtre, moins maintenu
- Sourcehut — Pas self-hosted
- Radicle — P2P, décentralisé, plus expérimental
Sécurité
- HTTPS obligatoire (Traefik, Let's Encrypt)
- 2FA activable (TOTP, WebAuthn)
- SSH keys par utilisateur (FP de l'empreinte obligatoire)
- GPG signed commits : supporté et vérifiable
- Auth OIDC/SAML : recommandé pour organisations
- Webhooks secrets : signer les payloads sortants
- Backups chiffrés :
forgejo dumppuis chiffrement GPG - Audit log : activable dans
app.ini - Runners Actions isolés : un runner = un conteneur
