Git + Forgejo
Forgejo est une forge logicielle libre et opensource, écrite en langage Go et dont l’interface web contient du JavaScript pour sa partie dynamique, elle présente une interface web complète, et qui à la particularité de proposer la possibilité de fédération d’instance via ActivityPub. Source Wikipédia
Forgejo
Pour installer Forgejo, on a besoin d’un compte système git dédié
Créer compte git avec home
1
sudo adduser --system --shell /bin/bash --group --disabled-password --home /home/git git
Le compte git est essentiel car Forgejo s’exécute sous cet utilisateur pour gérer les dépôts de manière sécurisée.
Cette commande crée :
- Un utilisateur système
git - Un groupe
git - Le répertoire home
/home/git - Pas de mot de passe (accès via SSH uniquement)
Installer Forgejo (binaire)
1
2
3
4
5
cd /tmp
VERSION=15.0.2
wget https://codeberg.org/forgejo/forgejo/releases/download/v$VERSION/forgejo-$VERSION-linux-amd64
chmod +x forgejo-$VERSION-linux-amd64
sudo mv forgejo-$VERSION-linux-amd64 /usr/local/bin/forgejo
Configuration forgejo
Solution : définir explicitement WORK_PATH et APP_DATA_PATH⚠️ Si on ne définit pas explicitement le
WORK_PATH, Forgejo le déduira du chemin du binaire (/usr/local/bin), et doncAPP_DATA_PATHdeviendra/usr/local/bin/data. Le comptegitn’a pas les droits pour créer/écrire dans/usr/local/bin/data, ce qui bloquera l’installation.
Créer les répertoires de données
1
2
3
4
5
6
sudo mkdir -p /var/lib/forgejo/data
sudo mkdir -p /var/lib/forgejo/log
sudo mkdir -p /var/lib/forgejo/custom
sudo chown -R git:git /var/lib/forgejo
sudo chmod -R 750 /var/lib/forgejo
Créer le service systemd /etc/systemd/system/forgejo.service
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[Unit]
Description=Forgejo
After=network.target
[Service]
User=git
Group=git
WorkingDirectory=/var/lib/forgejo
ExecStart=/usr/local/bin/forgejo web -c /etc/forgejo/app.ini
Restart=always
Environment=HOME=/home/git
Environment=GITEA_WORK_DIR=/var/lib/forgejo
Environment=APP_DATA_PATH=/var/lib/forgejo/data
[Install]
WantedBy=multi-user.target
Créer le dossier de configuration
1
2
3
sudo mkdir -p /etc/forgejo
sudo chown root:git /etc/forgejo
sudo chmod 750 /etc/forgejo
Créer app.ini avec l’utilisateur git
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
sudo tee /etc/forgejo/app.ini > /dev/null << 'EOF'
[server]
DOMAIN = forgejo.rnmkcy.eu
ROOT_URL = https://forgejo.rnmkcy.eu/
HTTP_PORT = 3000
WORK_PATH = /var/lib/forgejo
APP_DATA_PATH = /var/lib/forgejo/data
LOG_FILE = /var/lib/forgejo/log/forgejo.log
[database]
DB_TYPE = sqlite3
PATH = /var/lib/forgejo/data/forgejo.db
[log]
MODE = console, file
LEVEL = info
[actions]
ENABLED = false
[service]
DISABLE_REGISTRATION = false
EOF
changer le propriétaire pour que git puisse le lire
1
2
sudo chown git:git /etc/forgejo/app.ini
sudo chmod 640 /etc/forgejo/app.ini
Vérifier que Forgejo peut lire le fichier
1
sudo -u git cat /etc/forgejo/app.ini
Configuration nginx (forgejo.rnmkcy.eu)
Créer le fichier de configuration nginx /etc/nginx/conf.d/forgejo.rnmkcy.eu.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
server {
listen 80;
server_name forgejo.rnmkcy.eu;
# Redirection HTTP vers HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name forgejo.rnmkcy.eu;
# Certificats SSL
include /etc/nginx/conf.d/ssl-modern.inc;
# Logs
access_log /var/log/nginx/forgejo.access.log;
error_log /var/log/nginx/forgejo.error.log;
# Security headers
server_tokens off;
add_header X-Content-Type-Options nosniff always;
add_header X-XSS-Protection "1; mode=block" always;
# Reverse proxy vers Forgejo (port 3000 par défaut)
location / {
proxy_pass http://127.0.0.1:3000;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Url-Scheme $scheme;
proxy_read_timeout 90;
proxy_connect_timeout 10;
proxy_send_timeout 30;
}
# Cache des fichiers statiques
location ~* \.(html|css|js|png|jpg|jpeg|gif|ico|svg|eot|woff|ttf|woff2)$ {
proxy_pass http://127.0.0.1:3000;
expires max;
add_header Cache-Control "public, immutable";
}
}
Vérifier et recharger nginx
1
2
sudo nginx -t
sudo systemctl reload nginx
Démarrer Forgejo
Démarrer Forgejo
1
2
3
sudo systemctl daemon-reload
sudo systemctl enable forgejo --now
sudo systemctl status forgejo
OPTIONNEL mai recommandé, définir APP_DATA_PATH dans app.ini, dans /etc/forgejo/app.ini, ajouter :
1
APP_DATA_PATH = /var/lib/forgejo/data
Cela garantit que Forgejo utilise toujours ce chemin, même si le WORK_PATH change.
Configurer Forgejo
Ouvrir le lien https://forgejo.rnmkcy.eu pour la configuration initiale.
- Type de base de données: SQLite3
- Emplacement:
/var/lib/forgejo/data/forgejo.db - Titre du site: Forgejo
- Slogan de l’instance: Au-delà du codage. Nous forgeons.
- Emplacement racine des dépôts:
/var/lib/forgejo/data/forgejo-repositories - Répertoire racine Git LFS:
/var/lib/forgejo/data/lfs - Exécuter avec le compte d’un autre utilisateur: git
- Domaine du serveur: forgejo.rnmkcy.eu
- Port du serveur SSH: ‘ ‘ Port d’écoute du serveur SSH. Laissez le vide pour le désactiver.
- Port d’écoute HTTP de Forgejo: 3000
- URL de base: https://forgejo.rnmkcy.eu/
- Chemin des journaux:
/var/lib/forgero/log
Se connecter en administrateur (le premier utilisateur est administrateur)

Authentification LLDAP (NON UTILISEE)
Un serveur LLDAP est disponible localement: http://127.0.0.1:3890
Sélectionner LDAP (via BindDN)
- Hôte: Le ip/hostname de votre serveur LLDAP,
127.0.0.1 - Port: Port de votre serveur lldap
3890 - Bind DN:
uid=admin,ou=people,dc=rnmkcy,dc=eu - Bind Mot de passe admin lldap
- Base de recherche utilisateur:
ou=people,dc=rnmkcy,dc=eu - Filtre utilisateur: Si vous voulez que tous les utilisateurs puissent se connecter, utilisez
(&(objectClass=person)(|(uid=%[1]s)(mail=%[1]s)))L’utilisateur ‘yann’ est dans le groupe ‘git’ (&(|(objectclass=inetOrgPerson))(|(memberof=cn=git,ou=groups,dc=rnmkcy,dc=eu)))
Pour se connecter, ils peuvent utiliser leur adresse e-mail ou leur nom d’utilisateur.
Si vous voulez seulement des membres un groupe spécifique pour être en mesure de se connecter, dans ce cas le groupe git_user, utiliser
(&(memberof=cn=git_user,ou=groups,dc=rnmkcy,dc=eu)(|(uid=%[1]s)(mail=%[1]s)))
Pour plus d’informations sur le filtre, voir: https://docs.gitea.io/en-us/authentication/#ldap-via-binddn
-
Filtre Admin (facultatif): Utiliser
(memberof=cn=lldap_admin,ou=groups,dc=rnmkcy,dc=eu)si vous voulez que les administrateurs lldap deviennent des administrateurs Gitea. Laissez vide sinon.

- Attribut nom d’utilisateur:
uid - Attribut Prénom:
givenName - Attribut Nom de famille :
sn - Email Attribute:
mail - Avatar Attribute:
jpegPhoto
Forgejo authentification OAuth2
Authelia client oidc forgejo
Générer un secret client (insecure_secret) via la commande suivante :
1
authelia crypto hash generate pbkdf2 --variant sha512 --random --random.length 72 --random.charset rfc3986
La commande précédente renvoie 2 lignes
1
2
Random Password: -G3xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Digest: $pbkdf2-sha512xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
⚠️ Veuillez noter le mot de passe en clair (
Random Password) ainsi que le hachage $pbkdf2 (Digest) du mot de passe pour une utilisation ultérieure.
- Application Root URL:
https://forgejo.rnmkcy.eu/ - Authelia Root URL:
https://auth.rnmkcy.eu/ - ID du client:
forgejo - Secret du client:
insecure_secret - Nom de l’authentification (Forgejo):
authelia:- Cette option détermine l’URI de redirection dans le format de
https://forgejo.rnmkcy.eu/user/oauth2/<Authentication Name>/callback. Cela signifie que si vous modifiez cette valeur, vous devez mettre à jour l’URI de redirection.
- Cette option détermine l’URI de redirection dans le format de
Ajouter la configuration client forgejo au fichier authelia dans la rubrique identity_providers oidc
1
2
3
4
5
6
7
identity_providers:
oidc:
## The other portions of the mandatory OpenID Connect 1.0 configuration go here.
## See: https://www.authelia.com/c/oidc
clients:
- client_id: 'immich'
#-------------------------------------
Le client oidc forgejo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
- client_id: 'forgejo'
client_name: 'Forgejo'
client_secret: '$pbkdf2-xxxxxxxxxxxxxxx' # The digest of 'insecure_secret'.
public: false
authorization_policy: 'two_factor'
require_pkce: true
pkce_challenge_method: 'S256'
redirect_uris:
- 'https://forgejo.rnmkcy.eu/user/oauth2/authelia/callback'
scopes:
- 'openid'
- 'email'
- 'profile'
- 'groups'
response_types:
- 'code'
grant_types:
- 'authorization_code'
access_token_signed_response_alg: 'none'
userinfo_signed_response_alg: 'none'
token_endpoint_auth_method: 'client_secret_post'
Redémarrer authelia
1
sudo systemctl restart authelia
Forgejo source authentification OAuth2
Pour configurer Forgejo avec Authelia en tant que fournisseur OpenID Connect 1.0
Se connecter en administrateur, administration du site

Ajouter Une Source D’authentification:
Type d’authentification: OAuth2
Configurez les options suivantes:
1
2
3
4
5
6
- Nom de l'authentification: `authelia`
- Fournisseur OAuth2: `OpenID Connect`
- ID client (clé): `forgejo`
- Secret du client: `insecure_secret` (random password)
- URL de découverte OpenID Connect: `https://auth.rnmkcy.eu/.well-known/openid-configuration`
- Champs d'application supplémentaires: `email profile groups`
Mettre à jour éventuellement le paramètre suivant pour spécifier quels groupes d’oids ont accès admin à Forgejo - Nom de la revendication fournissant des noms de groupe pour cette source. (facultatif)
LLDAP + Authelia
LLDAP
Il faut ajouter Utilisateur/MotPasse: https://lldap.home.arpa/
Authelia
keepassxc permet de mémorisier le code secret TOTP et donc de générer le code- Dupliquer dans keepassxc
Utilisateur/MotPasseavec un lien différent https://auth.rnmkcy.eu - Ouvrir le lien https://auth.rnmkcy.eu et créer une authentification 2 facteurs TOTP
Connexion Forgejo via OAuth2
A la première connexion, “Se connecter avec authelia”, il faudra saisir le code TOPT, login/mot de passe pour créer la liaison
Paramètres utilisateur
- Se connecter avec son compte forgejo
- Accédez aux Paramètres utilisateur en cliquant sur Configuration

Jetons d’accès (token)
Créer des jetons d’accès pour pousser des paquets vers Forgejo
Section “Configuration”, “Applications” et sélectionnez “Nouveau jeton d’accès”. Nommez le jeton et assurez-vous de sélectionner les options “Lecture et écriture” pour la gestion de paquets.

Dès la génération, copiez le jeton immédiatement, comme il ne sera plus affiché. Ce jeton est essentiel pour pousser les paquets à Gitea:
{ .normal}
La connexion git se fait de la façon suivante:
1
2
3
git clone https://github.com/username/repo.git <--- HTTPS, pas SSH
# Username: votre_nom_d'utilisateur
# Password: your_token <-------- LE JETON (TOKEN), pas votre mot de passe
















