Prérequis
Overleaf est un projet open source typique reposant sur une architecture de microservices, dont tous les services s’exécutent dans Docker.- Le code source officiel de la Community Edition est disponible sur GitHub Overleaf Official.
- Le code source d’Overleaf-CEP est disponible sur GitHub Yu-i-i/Overleaf.
- Overleaf Pro Edition est disponible sur GitHub Ayaka-notes/overleaf-pro.
Les serveurs dotés de 8 cœurs CPU ou plus étant généralement coûteux, nous vous recommandons vivement d’utiliser votre ordinateur local pour le développement.
- Un serveur ou un ordinateur de bureau puissant pour développer
- Une version Ubuntu LTS récente et stable (par exemple Ubuntu 24.04)
- Un environnement Docker et Git
Tutoriel de configuration
Nous utiliserons ici overleaf-cep comme exemple pour montrer comment configurer un environnement de développement Overleaf.1
Récupérer le code source
Tout d’abord, clonons le dépôt :
bash
2
Synchroniser package-lock.json
Overleaf étant développé dans un dépôt interne, le fichier Si Node.js n’est pas installé, pas d’inquiétude : vous pouvez utiliser directement
package-lock.json risque fort d’être désynchronisé en raison de certains aléas de développement. Nous devons exécuter la commande suivante pour le synchroniser (si vous disposez d’un environnement Node.js local) :bash
docker pour exécuter la même commande. Exécutez-la depuis la racine du dépôt Overleaf :bash
3
Construire l'image de développement
Overleaf fournit un répertoire dédié
/develop contenant les scripts de développement. Il suffit de construire les services :bash
Si Docker manque de RAM lors de la construction parallèle des services, créez un fichier
.env dans ce répertoire contenant COMPOSE_PARALLEL_LIMIT=1.4
Démarrer tous les microservices
Démarrez ensuite les services :Une fois les services lancés, ouvrez http://localhost/launchpad pour créer le premier compte administrateur.
bash
Vous devez exécuter
bin/up avant la commande bin/dev. Sinon, vous risquez de rencontrer une série de problèmes de permissions.Par défaut, les privilèges d’administrateur ne sont pas disponibles. Vous devez ajouter la ligne suivante à
develop/dev.env. Vous aurez ensuite accès au panneau d’administration.TeX Live
La compilation d’un PDF nécessite de construire une image TeX Live pour gérer la compilation dans Docker :.env dans ce répertoire, contenant DOCKER_SOCKET_PATH=/var/run/docker.sock.raw
Vous pouvez également utiliser ayaka-notes/texlive-full, avec le tag base, qui correspond à la version minimale de TeX Live.
Développement
Pour éviter d’exécuterbin/build && bin/up après chaque modification du code, vous pouvez exécuter Overleaf Community Edition en mode développement, dans lequel les services se mettent automatiquement à jour lors des modifications du code.
Pour cela, utilisez le script bin/dev fourni :
node --watch, qui surveille automatiquement le code et redémarre les services si nécessaire.
Pour améliorer les performances, vous pouvez ne démarrer qu’une partie des services en mode développement en passant une liste séparée par des espaces au script bin/dev :
Démarrer le service
web en mode développement ne mettra à jour le service web que lors des modifications du code backend. Pour mettre également à jour automatiquement le code frontend, veillez à démarrer aussi le service webpack en mode développement.Débogage
En mode développement, la plupart des services exposent un port de débogage auquel vous pouvez attacher un débogueur, comme l’inspecteur des Chrome Dev Tools ou celui intégré à un IDE. Le tableau suivant indique le port exposé sur la machine hôte pour chaque service :
Pour vous attacher à un service via le débogage à distance de Chrome, rendez-vous sur chrome://inspect/ et assurez-vous que l’option Discover network targets est cochée. Cliquez ensuite sur Configure… et ajoutez une entrée
localhost:[service port] pour chacun des services auxquels vous souhaitez attacher un débogueur.
Après l’ajout d’une entrée, le service apparaît comme Remote Target, que vous pouvez inspecter et déboguer.
Journalisation
Dans l’environnement de développement, Overleaf fournit un scriptbin/logs ; vous devez toutefois installer une dépendance :

