Skip to main content
Cette fonctionnalité est développée par ayaka-notes/ayakaleaf-pro. Elle est introduite dans la v6.3.2 en avant-première et sera officiellement publiée dans la v6.4.0 : sa configuration et son comportement peuvent donc encore évoluer. Vos retours nous sont précieux si vous rencontrez un problème.
La synchronisation Gitea fonctionne comme la synchronisation GitHub et la synchronisation GitLab : les utilisateurs lient leur compte Gitea, exportent des projets vers de nouveaux dépôts Gitea, importent des dépôts Gitea et synchronisent les modifications dans les deux sens. Elle fonctionne avec Gitea 1.23 ou ultérieur, sur gitea.com ou sur votre propre instance.

Configurer la synchronisation Gitea

Vous devez d’abord activer git-bridge avant d’utiliser la synchronisation Gitea.
config/overleaf.rc
Créez une application OAuth2 sur votre instance Gitea, dans Settings → Applications → Manage OAuth2 applications (ou Site Administration → Integrations → Applications pour une application à l’échelle de l’instance) :
  • Application name : par exemple Overleaf, que les utilisateurs voient lorsqu’ils l’autorisent
  • Redirect URIs : ${OVERLEAF_SITE_URL}/user/gitea-sync/oauth2/callback
  • Confidential client : coché
Copiez le Client ID et le Client Secret, puis ajoutez les paramètres suivants à vos fichiers de variables d’environnement Overleaf.
config/variables.env
Avant de configurer l’URI de redirection de Gitea, assurez-vous que OVERLEAF_SITE_URL est correctement défini.
Overleaf demande tout ce dont une synchronisation a besoin au moment où l’utilisateur lie son compte, afin que les utilisateurs n’aient jamais à refaire la liaison pour une autorisation manquante : Gitea affiche ces scopes lorsque l’utilisateur autorise l’application, et limite le jeton à ceux-ci. Les jetons d’accès Gitea expirent au bout d’une heure ([oauth2] ACCESS_TOKEN_EXPIRATION_TIME). Overleaf les renouvelle grâce au jeton d’actualisation que Gitea émet avec eux, y compris lorsque Gitea invalide les jetons d’actualisation après usage (INVALIDATE_REFRESH_TOKENS = true), de sorte que les utilisateurs restent liés jusqu’à ce qu’ils délient leur compte ou révoquent l’application dans Gitea.

Votre instance Gitea

Définissez GITEA_SYNC_URL sur l’adresse web de votre instance, son ROOT_URL, celle que vous utilisez pour ouvrir les dépôts dans le navigateur. L’API REST en est déduite : Un Gitea servi sous un sous-chemin fonctionne également, par exemple GITEA_SYNC_URL=https://example.com/gitea. Ne définissez GITEA_SYNC_API_URL que si votre instance expose l’API ailleurs, par exemple derrière une passerelle d’API.
  • Créez l’application OAuth2 sur l’instance définie dans GITEA_SYNC_URL : une application créée sur une autre instance ne fonctionne pas.
  • GITEA_SYNC_URL correspond uniquement à l’adresse web. N’y ajoutez pas /api/v1 ni de chemin d’utilisateur ou d’organisation.
  • Overleaf commite au moyen de l’API de fichiers de Gitea, qui nécessite l’éditeur web : laissez [repository.editor] activé (valeur par défaut).
Si votre instance utilise un certificat émis par une autorité de certification privée, montez le certificat de l’autorité dans le conteneur et faites pointer NODE_EXTRA_CA_CERTS vers celui-ci, par exemple NODE_EXTRA_CA_CERTS=/var/lib/overleaf/certs/gitea-ca.pem.
Les comptes et projets liés appartiennent à l’instance avec laquelle ils ont été liés. Avant de faire pointer GITEA_SYNC_URL vers une autre instance, demandez aux utilisateurs de délier leur compte Gitea et leurs projets.
Si vous vous trouvez dans une région où l’accès au réseau est restreint, vous devrez peut-être configurer un proxy pour accéder à Gitea. Définissez la variable d’environnement suivante : GITEA_SYNC_PROXY_URL=http://10.0.0.1:10808. Il doit s’agir d’un proxy direct HTTP/HTTPS standard, et il ne doit pas utiliser 127.0.0.1.

Qui peut lier et synchroniser

Comme sur Overleaf Cloud, seul le propriétaire du projet peut lier un projet à un dépôt Gitea. Une fois le projet lié, chaque collaborateur disposant d’un accès en modification peut le synchroniser.
  • Overleaf communique avec Gitea au moyen du compte Gitea de l’utilisateur qui synchronise : chaque collaborateur qui synchronise lie donc son propre compte Gitea et doit être autorisé à pousser sur la branche par défaut du dépôt.
  • Les collaborateurs en lecture seule ne peuvent pas utiliser la synchronisation Gitea pour le projet.
  • Délier le compte dans Overleaf supprime son jeton ; Gitea ne dispose d’aucune API pour le révoquer, révoquez donc également l’autorisation dans Settings → Applications de Gitea si vous le souhaitez.

Fonctionnement de la synchronisation avec Gitea

  • Autorisations : les utilisateurs doivent être autorisés à pousser sur la branche par défaut du dépôt lié. Lorsqu’une règle de protection de branche ne permet pas à l’utilisateur d’y pousser, Overleaf lui demande de contacter le propriétaire du projet, comme pour un dépôt auquel il n’a plus accès.
  • Fusion : lorsqu’un projet a été modifié à la fois dans Overleaf et dans Gitea, Overleaf commite ses modifications dans une branche temporaire nommée overleaf-YYYY-MM-DD-HHMMSS et la fusionne au moyen d’une pull request avec le style de fusion par défaut du dépôt, car Gitea ne dispose d’aucune API permettant de fusionner des branches sans en passer par une. Après la fusion, Overleaf supprime la branche temporaire ; la pull request fusionnée reste dans le dépôt pour mémoire.
  • Règles de fusion : Overleaf ne contourne jamais la protection de branche du dépôt. Lorsque la pull request présente un conflit, ou nécessite des approbations ou des vérifications d’état réussies, elle reste ouverte et Overleaf demande à l’utilisateur de la fusionner dans Gitea, puis de poursuivre la synchronisation.
  • Workflows CI : Overleaf n’affiche pas les fichiers cachés tels que .gitea/workflows/ et les laisse tels quels dans le dépôt. Les commits provenant d’Overleaf déclenchent Gitea Actions comme n’importe quel autre commit.

Q&A

Réponse : Veuillez laisser les push forcés désactivés sur la branche par défaut, par exemple au moyen d’une règle de protection de branche. Overleaf peut reprendre une branche réécrite, mais la synchronisation Gitea est conçue pour une branche par défaut dont l’historique ne fait que croître.
Réponse : Non. Overleaf continue de se synchroniser avec la branche à laquelle le projet a été lié, si bien que les synchronisations échouent dès que cette branche est renommée ou supprimée. Pour synchroniser avec une autre branche, déliez le projet, puis importez le dépôt dans un nouveau projet, qui utilisera la branche par défaut actuelle.
Réponse : Non. Les projets Overleaf ne prennent pas en charge Git Large File Storage. Les fichiers suivis par Git LFS apparaissent dans Overleaf sous forme de fichiers pointeurs LFS, et non avec leur contenu. Commitez plutôt les images et les PDF directement dans le dépôt.
Réponse : Pas encore. Overleaf compare les fichiers par leurs identifiants SHA-1 : dans un dépôt créé avec le format d’objet SHA-256, chaque récupération réécrit donc tous les fichiers, même ceux qui n’ont pas changé. Rien n’est perdu, mais veuillez utiliser le format SHA-1 par défaut.
Réponse : La synchronisation Gitea est conçue et testée uniquement avec Gitea.
Dernière modification le 24 octobre 2026