Overleaf est le successeur de ShareLaTeX, il résulte de la fusion de l'ancienne version d'Overleaf avec ShareLaTeX.
Il permet d'éditer des documents LaTeX en collaboratif [1].
L'interface se divise en trois parties. Un bandeau pour naviguer dans les fichiers du projet, un éditeur de texte avec coloration syntaxique, et suggestion de commandes LaTeX au fur et à mesure de la saisie, et enfin, un visionneur de pdf pour voir le rendu du code source.
Comment installer Overleaf sur son serveur ?
Overleaf se présente comme un conteneur docker. Je prendrais l'exemple d'une installation sur Debian et distributions GNU/Linux dérivées avec Nginx et Systemd.
Vous pouvez retrouver la documentation de l'installation sur le dépôt GitHub du projet [2].
Comment installer le conteneur ?
Pour utiliser Overleaf, il faut installer quelques dépendances.
1 2 3 4 5 |
# Installer Docker et Docker compose sudo apt install -y docker docker-compose # Lancer Docker sudo systemctl daemon reload sudo systemctl enable –now docker.service |
1 2 3 4 5 |
# Cloner le dépôt toolkit git clone https ://github.com/overleaf/toolkit.git ./overleaf-toolkit cd overleaf-toolkit # Copier les fichiers de conf ./bin/init |
Il vous faut dorénavant modifier la config dans config/variables.env et config/overleaf.rc, pour s'adapter à votre situation et personnaliser l'instance.
Parmis les paramètres important à configurer se trouvent notamment le port d'écoute d'Overleaf.
Si il y a déjà un serveur http sur votre machine, il faudra le changer, car le port 80 est déjà occupé.
1 2 |
# Télécharger et lancer le conteneur ./bin/up |
Comment configurer le daemon systemd ?
Si la commande précédente lance overleaf correctement, il est temps de créer un service daemon systemd dans /etc/systemd/system/overleaf.service.
1 2 3 4 5 6 7 8 9 10 |
[Unit] Description=Overleaf Community Edition [Service] User=root WorkingDirectory=/opt/overleaf-toolkit ExecStart=/opt/overleaf-toolkit/bin/up Restart=always RestartSec=10 [Install] WantedBy=multi-user.target |
Vous pouvez désormais lancer le service avec les commandes systemctl habituelles…
1 2 3 4 5 6 7 8 9 10 11 12 |
systemctl daemon-reload # recharger les fichier de configuration précédemment édités # deux en une : lancer le service et ajouter ce lancement au démarrage # automatique lors des reboot systemctl enable –now overleaf.service # respectivement stopper, lancer ou relancer le service systemctl stop / start / restart overleaf.service # verifier l'état du service systemctl status overleaf.service # regarder les log émis par le service en continu (utile pour vérifier # le bon fonctionnement du service). journalctl -feu overleaf |
Il faut dorénavant installer les paquets LaTeX, avec TeX Live.
1 2 3 4 |
docker exec sharelatex tlmgr update –self # Mise à jour de texlive manager docker exec sharelatex tlmgr install scheme-full # Installation complète de texlive |
Bon, maintenant, vous pouvez aller vous chercher un café…
… Parce qu'il y a plus de 4000 paquets à installer, et ça va prendre du temps.
Je vous conseille donc d'ouvrir un autre terminal ssh, pour qu'on avance pendant ce temps.
Comment accéder à Overleaf depuis son nom de domaine ?
En principe, vous pouvez déjà accéder à votre install' depuis http://<ADRESSE_IP_DE_VOTRE_SERVEUR>:8877, si tant est que vous ayez ouvert le port ; mais vous conviendrez que ce n'est pas des plus pratiques…
Je vous conseille donc d'ajouter une entrée dans votre DNS qui pointe vers l'IP publique de votre serveur, à partir d'un sous-domaine, par exemple.
Pour que ce nom de domaine redirige vers le port d'écoute d'Overleaf, nous allons utiliser un proxy Nginx (cela fonctionne de façon similaire avec Apache2 / httpd).
Comment configurer Nginx en proxy ?
La configuration du serveur Nginx reprends le même fonctionnement que celle utilisée lors de l'install' de JupyterHub.
1 2 |
sudo apt install nginx # si vous n'avez pas encore installé nginx sur votre serveur |
Elle se passe dans /etc/nginx/sites-available/overleaf.conf [3].
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 |
server { listen 80 ; server_name sharelatextest.com ; return 302 https ://$host$request_uri ; } server { listen 443 ssl ; server_name sharelatextest.com ; ssl_certificate /etc/letsencrypt/live/sharelatextest.com/fullchain.pem ; ssl_certificate_key /etc/letsencrypt/live/sharelatextest.com/privkey.pem ; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 ; ssl_prefer_server_ciphers on ; # used cloudflares ciphers https ://github.com/cloudflare/sslconfig/blob/master/conf ssl_ciphers EECDH+CHACHA20 :EECDH+AES128 :RSA+AES128 :EECDH+AES256 :RSA+AES256 :EECDH+3DES :RSA+3DES :!MD5 ; # config to enable HSTS(HTTP Strict Transport Security) https ://developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security # to avoid ssl stripping https ://en.wikipedia.org/wiki/SSL_stripping#SSL_stripping add_header Strict-Transport-Security "max-age=31536000 ; includeSubdomains;"; server_tokens off ; add_header X-Frame-Options SAMEORIGIN ; add_header X-Content-Type-Options nosniff ; client_max_body_size 50M ; location / { proxy_pass http ://localhost :8877 ; # change to whatever host/port the docker container is listening on. proxy_set_header X-Forwarded-Proto $scheme ; proxy_http_version 1.1 ; proxy_set_header Upgrade $http_upgrade ; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; proxy_read_timeout 3m ; proxy_send_timeout 3m ; } } |
Dans cet exemple, on a considéré que votre nom de domaine était sharelatextest.com, n'oubliez pas de modifier ce paramètre, ainsi que le port dans http://localhost:8877, si vous n'avez pas choisi le même que moi.
Dès lors, il faut faire un lien symbolique dans /etc/nginx/sites-enabled/ pour que la configuration précédente soit prise en compte :
1 |
ln -s /etc/nginx/sites-available/overleaf.conf /etc/nginx/sites-enabled/overleaf.conf |
Enfin, il est nécessaire de relancer nginx, avec les commandes systemd habituelles :
1 2 3 4 5 6 7 |
nginx -t # vérifie la syntaxe du fichier de conf. systemctl restart nginx.service # redémare le serveur nginx systemctl enable –now nginx.service # si vous voulez autorisé le démarrage automatique de nginx, # en même temps que le redémarrage. |
Et voilà !
Rendez-vous dès maintenant sur https://sharelatextest.com/launchpad pour configurer les identifiants administrateur de votre instance, connectez-vous, et vous pouvez commencer à rédiger vos documents, et inviter vos collaborateurs à travailler avec vous ;-)…
Malheureusement les nouvelles versions d'Overleaf Community Edition n'intègrent plus le module d'inscription, ça se passe par invitation via l'interface admin. Il doit y avoir un moyen de se bricoler un formulaire, avec la ligne de commande en backend.…
Bonus :
Comment installer Pygmentize pour inclure des morceaux de codes stylés ?
Dans l'instance officielle d'Overleaf [1], il est possible d'utiliser le package >minted pour obtenir une coloration syntaxique du code source inclus plutôt sympathique :
1 2 3 4 5 |
\usepackage{minted} [...] \begin{minted}{python} import this \end{minted} |
Il est possible, pour nous aussi, d'installer le paquets python pygmentize, pour obtenir le même résultat.
1 2 3 4 5 6 7 8 9 10 |
docker ps -a # retrouver le nom du conteneur docker exec -it sharelatex sh # entrer dans le conteneur docker en ligne de commande apt update apt-get upgrade apt-get install python3-pip pip install pygments # installer l'outil pygmentize # mettre à jour les paquets et installer pygmentize vim /usr/local/texlive/2022/texmf.cnf # ouvrir un éditeur de texte pour éditer la conf de pdflatex |
Et ajouter la ligne suivante dans /usr/local/texlive/2022/texmf.cnf (dans le conteneur).
1 |
shell_escape = t |
Plus qu'à relancer le service overleaf, et à vous les coloration syntaxique dans vos pdf LaTeX !
Et voilà, c'est tout pour moi ;-).
Merci beaucoup au relecteurs (ZaZo0o, Pierre Marijon, David Picard, et Yoann) pour leur conseils et suggestions !
Références
- [1] Overleaf <https://www.overleaf.com>
- [2] Documentation de l'installation <https://github.com/overleaf/toolkit/blob/master/doc/quick-start-guide.md>
- [3] Documentation de la configuration de Nginx pour Overleaf <https://github.com/overleaf/overleaf/wiki/HTTPS-reverse-proxy-using-Nginx>
Laisser un commentaire