Impossible de téléverser des images sur Overleaf/Unable to upload images on Overleaf

What app is this about, and its version: Overleaf, 2025.09.19~ynh1
What YunoHost version are you running: 12.1.25
What type of hardware are you using: Old laptop or computer

Describe your issue

(English below)

Bonjour,

J’ai installé une instance d’Overleaf sur mon serveur. Tout fonctionne, excepté l’importation d’images dans un document LaTeX.

En effet, lorsque j’importe l’image avec l’outil d’importation, je reçois simplement le message “Upload failed” sans plus de détails. L’importation de fichiers texte, en revanche, semble fonctionner.

Lorsque je regarde les logs du service “overleaf-history-v1”, une erreur semble revenir à chaque fois que j’essaye d’importer une image : “jwt missing”.

Je vous remercie d’avance pour votre aide.

English version:

Hello,

I installed Overleaf on my server, and everything seems to be working, except for importing images to a LaTeX document.

When I try to upload an image using the import tool, I only receive the message “Upload failed” without further details. Importing text files however seems to be working.

When looking at the logs of the service “overleaf-history-v1”, an error appears every time I try to import an image : “jwt missing”.

Thank you in advance for your help.

Share relevant logs or error messages

/

Bonjour, j’ai aussi le problème (même versions logicielles sur un VPS Debian 12)
Il y a apparemment une erreur 422.

De même lors de l’upload d’un projet (fichier zip), seuls les fichiers *.tex sont réellement ajoutés.

Sur le serveur, dans le dossier /var/www/overleaf/tmp/uploads/26e9216d4a9f5bab674bd796769dc725-1359316215432/, tous les fichiers du zip sont visibles.

Donc a priori ils sont bien envoyés, mais rejetés par overleaf au moment de les inclure au projet…

EDIT : Le message ci-dessous ne résoud pas le problème, ne pas prendre en compte.

@otm33 avait envoyé la réponse suivante, avant qu’elle ne se fasse supprimer :

Hi @antux18

For authentication, the JS refers to two variables that do not exist in the environment file.

As a temporary workaround, you can fix this by editing your variables.env file.

sudo nano /var/www/overleaf/variables.env

Add those two lines below OT_JWT_AUTH_KEY with same value:

OVERLEAF_SESSION_SECRET=<same value as OT_JWT_AUTH_KEY>
STAGING_PASSWORD=<same value as OT_JWT_AUTH_KEY>

then restart overleaf

sudo systemctl restart overleaf-*

It should work.
@Tho : j’ouvre une issue sur github au cas où.

Je l’ai essayée, et à présent, les fichiers sont bien importés, mais le compilateur ne parvient pas à les trouver :

File `image.png' not found on input line 11.
The compiler cannot find the file you want to include. Make sure that you have uploaded the file and specified the file location correctly.

Bonjour @antux18 @Ailurus
C’est moi-même qui l’ai supprimée (mais je n’ai pas été assez rapide…) après avoir regardé le code plus en détail car elle ne résout en rien le problème et en crée d’autres.

OVERLEAF_SESSION_SECRET n’est pas indispensable.
Définir STAGING_PASSWORD donne l’impression de rendre l’insertion d’images fonctionnelle mais elles ne sont pas trouvées et d’autres problèmes appraissent : la création d’une nouvelle page, la consultation de l’historique, etc. deviennent impossibles.
Solution à oublier, donc (@antux18 tu peux même l’effacer de ton message pour ne pas donner de faux espoirs :wink: )
Je vais de nouveau regarder mais sans conviction…

Ah oui, en effet…

Je n’ai pas encore les permissions de modifier mon message, mais je le ferai dès que possible.

Merci !

Bon, déjà, si on change la méthode d’authentification de v1_history pour passer à un jw token, ça permet d’insérer les images sans dommage collatéral dans l’éditeur et de les rendre visibles dans l’éditeur visuel.
settings.js

    v1_history: {
      url: process.env.V1_HISTORY_URL || 'http://127.0.0.1:3100/api',
      jwtSecret: process.env.OT_JWT_AUTH_KEY,
      requestTimeout: parseInt(
        process.env.OVERLEAF_HISTORY_V1_HTTP_REQUEST_TIMEOUT || '300000', // default is 5min
        10
      ),
    },

Par contre, elles restent signalées en erreur et “introuvables” :
Package pdftex.def Error: File image.png’ not found: using draft setting.`

Bonsoir et merci, le changement pour jwt ne résoud malheureusement pas chez moi.

J’ai oublié de préciser de relancer le serveur :
sudo systemctl restart overleaf-*
Le problème de compilation reste entier par contre.

Oui je l’avais fait… Mystère

Hello all! Sorry you encounter some troubles with the package! Could you please try to upgrade to the testing version?

Hi @Tho
Thanks for helping. I upgraded to testing version : same issues… but it was much easier to resolve the second issue with it.

What I’ve done :

  1. upgraded to testing version

  2. In /var/www/overleaf/settings.js, changed authentication method for v1-history to jwt

    v1_history: {
      url: process.env.V1_HISTORY_URL || 'http://127.0.0.1:3100/api',
      jwtSecret: process.env.OT_JWT_AUTH_KEY,
      requestTimeout: parseInt(
        process.env.OVERLEAF_HISTORY_V1_HTTP_REQUEST_TIMEOUT || '300000', // default is 5min
        10
      ),
    },
  1. In /var/www/overleaf/settings.js, in fs block, changed the folder that project_blobs points to (and, in the process, created overleaf-global-blobs directory in /home/yunohost.app/overleaf/history/o, which didn’t exist on my server even though its absence wasn’t blocking)
        project_blobs:
          process.env.OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET ||
          '/home/yunohost.app/overleaf/history/overleaf-project-blobs',
        global_blobs:
          process.env.OVERLEAF_HISTORY_BLOBS_BUCKET ||
          '/home/yunohost.app/overleaf/history/overleaf-global-blobs',

Finally,

sudo systemctl restart overleaf-*

@antux18 @Ailurus
Je peux maintenant ajouter une image et la voir dans le document compilé ainsi que dans l’export pdf


J’ai ouvert une issue sur github.

Excellent, it works like a charm now !

Thank you so much !

EDIT: J’ai écrit trop vite, l’upload fonctionne, pas l’affichage…

L’image png est pourtant bien trouvéé par l’éditeur :

EDIT2: trouvé

/var/www/overleaf/settings.js contient deux endroits où il faut faire la modification et voici la version finale:

type or paste code here// filestore
switch (process.env.OVERLEAF_FILESTORE_BACKEND) {
  case 's3':
    settings.filestore = {
      backend: 's3',
      stores: {
        template_files:
          process.env.OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME,
        //project_blobs: process.env.OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET,
        //global_blobs: process.env.OVERLEAF_HISTORY_BLOBS_BUCKET,
        project_blobs:
          process.env.OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET ||
          '/home/yunohost.app/overleaf/history/overleaf-project-blobs',
        global_blobs:
          process.env.OVERLEAF_HISTORY_BLOBS_BUCKET ||
          '/home/yunohost.app/overleaf/history/overleaf-global-blobs',
      },
      s3: {
        key:
          process.env.OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID ||
          process.env.AWS_ACCESS_KEY_ID,
        secret:
          process.env.OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY ||
          process.env.AWS_SECRET_ACCESS_KEY,
        endpoint: process.env.OVERLEAF_FILESTORE_S3_ENDPOINT,
        pathStyle: process.env.OVERLEAF_FILESTORE_S3_PATH_STYLE === 'true',
        region:
          process.env.OVERLEAF_FILESTORE_S3_REGION ||
          process.env.AWS_DEFAULT_REGION,
      },
    }
    break
  default:
    settings.filestore = {
      backend: 'fs',
      stores: {
        template_files: Path.join(DATA_DIR, 'template_files'),

        // NOTE: The below paths are hard-coded in server-ce/config/production.json, so hard code them here as well.
        // We can use DATA_DIR after switching history-v1 from 'config' to '@overleaf/settings'.
        // YunoHost, adapt it as we adapt it in production.json
        project_blobs:
          process.env.OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET ||
          '/home/yunohost.app/overleaf/history/overleaf-project-blobs',
        global_blobs:
          process.env.OVERLEAF_HISTORY_BLOBS_BUCKET ||
          '/home/yunohost.app/overleaf/history/overleaf-global-blobs',
      },
    }
}

J’étais bloqué à ce stade-là jusqu’à l’installation de la version testing et le changement du dossier des blobs.
As-tu ces deux dossiers sur ton serveur:

project_blobs:
          process.env.OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET ||
          '/home/yunohost.app/overleaf/history/overleaf-project-blobs',
        global_blobs:
          process.env.OVERLEAF_HISTORY_BLOBS_BUCKET ||
          '/home/yunohost.app/overleaf/history/overleaf-global-blobs',

Pour en savoir plus, tu peux mettre le niveau de log sur debug dans le fichier des variables variables.env, redémarrer overleaf et poster les logs de overleaf filestore.

Oui, c’est de ma faute: le changement est à faire uniquement dans la partie fspuisque par défaut on ne part pas sur un stockage s3. Ça me semblait évident mais ça ne l’est pas.

J’aurais dû mieux regarder aussi, parce que tu as raison c’est évident :slight_smile:

Pouvez-vous expliciter le changement opéré dans le settings.js? Je pensais avoir mis ces valeurs justement: quelle était la valeur ?

Le problème est résolu dans la dernière version (2025.09.19~ynh2)

Bonjour,

Super, ça fonctionne pour moi, merci !

Je clôture le sujet.

This topic was automatically closed 15 days after the last reply. New replies are no longer allowed.