Permissions pour le dossier uploads ?

J’ai d’abord essayé de faire fonctionner Discourse avec des paramètres semi-par défaut et cela a très bien fonctionné, j’ai pu télécharger des fichiers ainsi que faire d’autres choses.

Ensuite, j’ai réalisé que le chemin dans app.yml était /var/discourse et je l’ai mis à jour à /var/www/discourse, j’ai arrêté et détruit le conteneur, j’ai complètement supprimé le dossier précédent. Je l’ai remis en marche… mais j’ai remarqué que je ne pouvais plus télécharger de fichiers.

Quel type de permissions le dossier uploads nécessite-t-il ? Je peux faire quelques modifications manuellement, mais j’aimerais savoir exactement quoi et si c’est acceptable en général (le lanceur ne devrait-il pas s’occuper de définir les bonnes permissions, surtout lorsqu’il est lancé à partir de zéro ?)

Dans les logs, j’ai des erreurs nginx comme

2024/07/12 19:11:23 [crit] 76#76: *160552 stat() « /var/www/discourse/public/uploads/default/original/1X/971c712ff3f1758abc63ac777ad708042cc41ddf.png » a échoué (13: Permission denied), client: 172.17.0.1, serveur: _, requête: « GET /phorum/uploads/default/original/1X/971c712ff3f1758abc63ac777ad708042cc41ddf.png HTTP/1.0 », hôte: « myhost.com », référent: « https://myhost.com/phorum/admin/site_settings/category/branding »

Permissions sur uploads sont comme :

drwxr--r--+ 3 discourse www-data 21 Jul 12 11:47 uploads

C’est ce qui est recommandé.

Le chemin /var/www/discourse est le chemin vers discourse à l’intérieur du conteneur. /var/discourse est le chemin normal pour Discourse_docker à l’extérieur du conteneur.

Puisque vous venez de commencer, je vous recommanderais de recommencer et de ne rien renommer cette fois-ci.

Je suppose que vous n’avez pas mis à jour le chemin dans votre app.yml et qu’il essaie donc d’accéder à quelque chose qui n’existe pas.

J’ai beaucoup d’autres projets sur ce serveur et ils sont tous bien situés dans mon dossier /var/www, donc je préfère garder cela ainsi :slight_smile: Et peu m’importe comment c’est à l’intérieur du conteneur.

Mais je l’ai mis à jour ? Dans les montages, ou où d’autre cela devrait-il aller ?

Désolé, je ne peux pas vous aider. Mais je suis totalement sûr que vous n’avez pas Nginx là-bas :wink: La situation est la même avec le conteneur Docker.

Désolé, je ne comprends pas, quel nginx ? Les logs proviennent du nginx de Discourse, mon nginx qui termine les SSL est au-dessus.

Exactement mon propos. Parce que votre proxy inverse nginx ne se trouve pas dans ce chemin, pourquoi le conteneur Docker le devrait-il ?

Mais un conteneur vit sa propre vie et le chemin vers le conteneur ne devrait pas affecter ce que fait son Nginx. Avez-vous également modifié autre chose ?

J’ai vérifié ce que j’ai :

lrwxrwxrwx 1 root root 15 Jul 12 10:10 uploads -> /shared/uploads

Et comme exemple, une image sur /var/www/discourse/public/uploads/default/original/1X ressemble à ceci :

-rw-r--r-- 1 discourse www-data 7100 May 19 2022 08335563eac3a393e60a902d4d38cffdfa6d967d

Ça, je le sais. Parce que sinon Docker est un très grand mystère pour moi :rofl:

Donc, en gros, accessible en écriture par tout le monde ? N’est-ce pas considéré comme une mauvaise chose pour la sécurité ?

Vous ne voulez vraiment pas courir le risque de servir vos secrets dans votre fichier app.yml au monde entier.

1 « J'aime »

À l’intérieur de Docker ? Je ne pense pas. Et… je m’en fiche car tout cela est planifié et réalisé par CDCK et j’ai confiance en leur savoir-faire :smirking_face:

Bien sûr, mais je ne sers rien :slight_smile:

Les permissions sont les mêmes, que ce soit à l’intérieur ou à l’extérieur. Et le dossier des téléchargements est monté.

Ok, rien n’a fonctionné, j’ai donc fini par changer les permissions du dossier uploads à 755 et tout va bien maintenant. Après la reconstruction, il semble que les téléchargements eux-mêmes allaient bien (du côté du moteur), cependant nginx n’a pas pu les lire.

Je ne comprends pas tout à fait pourquoi vous faites tout cela. C’est votre choix de placer un conteneur dans un chemin qui sera visible mondialement si vous faites une petite erreur, mais c’est votre choix. Mais tout le reste… pourquoi ?

Avoir un proxy inverse devant Discourse est vraiment trivial et sinon votre configuration serait une installation standard sans tous ces tracas. Bien sûr, si vous voulez jouer et que c’est votre passe-temps, mais très bientôt quelqu’un se manifestera et dira que vous ne pouvez obtenir de support que pour une installation standard et le plus gros problème est que personne ne sait vraiment ce que vous avez fait. Ou pourquoi.

Qu’est-ce que « tout cela » ? J’ai une configuration relativement standard :slight_smile: Et j’essaie de résoudre le problème.

Si vous le souhaitez, vous pouvez télécharger un fichier et voir quelles sont ses autorisations et les copier.

Peut-être télécharger quelques fichiers, puis faire

 find uploads -ls |less

Vous corrigez un problème que vous avez rencontré en essayant de faire autre chose, ce dont une personne standard a besoin. Même avec un proxy inverse.

C’est pourquoi vous êtes assez loin du standard :smirking_face: Parce qu’il y a deux options :

  • vous avez un bug entre les mains que personne d’autre n’a
  • vous avez fait quelque chose de drôle

Peut-être que c’est un bug. Et vous l’avez confirmé en faisant une installation standard en utilisant un chemin sûr (à bien des égards) et en connectant en même temps votre proxy inverse de la bonne manière. Parce que si c’est toujours cassé, je peux parier que le problème se situe dans l’hôte virtuel et/ou les ports. Mais si ça marche… alors nous revenons à l’option “drôle” — où personne ne sait ce que vous avez fait.

Voyez-vous le problème ici ?

Dans tous les cas, l’utilisation d’un proxy inverse entraîne aucun support… c’est la politique ici. Mais d’autres utilisateurs peuvent et aideront assez souvent.

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