¿Permisos para la carpeta uploads?

Primero intenté ejecutar Discourse con configuraciones semi-predeterminadas y funcionó bastante bien, pude subir archivos y hacer otras cosas.

Luego me di cuenta de que la ruta en app.yml era /var/discourse y la actualicé a /var/www/discourse, detuve y destruí el contenedor, eliminé completamente la carpeta anterior. Y lo volví a poner en marcha… pero noté que ahora ya no puedo subir archivos.

¿Qué tipo de permisos necesita la carpeta uploads? Puedo hacer algunos cambios manualmente, pero me gustaría saber exactamente qué y si está bien en general (¿no debería el lanzador encargarse de establecer los permisos correctos, especialmente cuando se inicia desde cero?)

En los registros tengo errores de nginx como

2024/07/12 19:11:23 [crit] 76#76: *160552 stat() “/var/www/discourse/public/uploads/default/original/1X/971c712ff3f1758abc63ac777ad708042cc41ddf.png” failed (13: Permission denied), client: 172.17.0.1, server: _, request: “GET /phorum/uploads/default/original/1X/971c712ff3f1758abc63ac777ad708042cc41ddf.png HTTP/1.0”, host: “myhost.com”, referrer: “https://myhost.com/phorum/admin/site_settings/category/branding

Permisos en uploads son como:

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

Eso es lo que se recomienda.
La ruta /var/www/discourse es la ruta de discourse dentro del contenedor. /var/discourse es la ruta normal para Discourse_docker fuera del contenedor.
Dado que acabas de empezar, te recomendaría que empieces de nuevo y no renombres nada esta vez.
Supongo que no actualizaste la ruta en tu app.yml y por eso está intentando acceder a algo que no existe.

Tengo muchos otros proyectos en este servidor y todos están muy bien ubicados en mi carpeta /var/www, ¡así que prefiero mantenerlo así! :slight_smile: Y no me importa cómo esté dentro del contenedor.

¿Pero no lo actualicé? En mounts, ¿o dónde más debería ir?

Lo siento, no puedo ayudarte. Pero estoy totalmente seguro de que no tienes Nginx allí :wink: La situación es la misma con el contenedor de Docker.

Lo siento, no entiendo, ¿qué nginx? Los registros son del nginx de Discourse, mi nginx que termina SSL está encima de él.

Exactamente mi punto. Como tu proxy inverso nginx no está en esa ruta, ¿por qué debería estarlo el contenedor de docker?

Pero un contenedor vive su propia vida y la ruta al contenedor no debería afectar lo que hace su Nginx. ¿Cambiaste algo más también?

Ya revisé lo que tengo:

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

Y como ejemplo, una imagen en /var/www/discourse/public/uploads/default/original/1X se ve así:

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

Eso es lo que sé. Porque de lo contrario, Docker es un misterio muy grande para mí :rofl:

¿Básicamente escribible por todos? ¿No se considera malo para la seguridad?

Realmente no querrás correr el riesgo de exponer tus secretos en tu archivo app.yml al mundo.

1 me gusta

¿Dentro de Docker? No lo creo. Y… no me importa porque todo eso está planeado y hecho por CDCK y confío en que saben lo que hacen :smirking_face:

Claro, pero no estoy exponiendo nada :slight_smile:

Los permisos son los mismos, independientemente de si está dentro o fuera. Y la carpeta de subidas está montada.

De acuerdo, nada funcionó, así que terminé cambiando los permisos de la carpeta uploads a 755 y ahora está bien. Después de la reconstrucción, parece que las cargas en sí estaban bien (desde el lado del motor), sin embargo, nginx no pudo leerlas.

No entiendo del todo por qué estás haciendo todo esto. Es tu elección poner un contenedor en una ruta que será visible a nivel mundial si cometes un pequeño error, pero esa es tu elección. Pero, ¿todo lo demás… por qué?

Tener un proxy inverso delante de Discourse es realmente trivial y, de lo contrario, tu configuración sería una instalación estándar sin todo ese alboroto. Claro, si quieres jugar y ese es tu pasatiempo, pero muy pronto alguien aparecerá y dirá que solo puedes obtener soporte para una instalación estándar y el mayor problema es que nadie sabe realmente lo que has hecho. O por qué.

¿Qué “esto”? Tengo una configuración relativamente estándar :slight_smile: Y estoy tratando de solucionar el problema.

Si quieres, puedes subir un archivo y ver cuáles son sus permisos y copiarlos.

Quizás subas algunos y luego hagas

 find uploads -ls |less

Estás solucionando un problema que surgió al intentar hacer otra cosa, lo que necesita una configuración estándar. Incluso con un proxy inverso.

Por eso estás bastante lejos de lo estándar :smirking_face: Porque hay dos opciones:

  • Tienes un error en tus manos que nadie más tiene
  • Hiciste algo gracioso

Quizás sea un error. Y lo has confirmado haciendo una instalación estándar usando una ruta segura (en muchos sentidos) y al mismo tiempo conectando tu proxy inverso de la manera correcta. Porque si todavía está roto, puedo apostar que el problema está en el host virtual y/o en los puertos. Pero si funciona… entonces volvemos a la opción “gracioso”, donde nadie sabe lo que hiciste.

¿Ves el problema aquí?

De cualquier manera, usar un proxy inverso lleva a ninguna asistencia… esa es la política aquí. Pero otros usuarios pueden y con bastante frecuencia ayudarán.

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