Berechtigungen für den uploads-Ordner?

Zuerst habe ich versucht, Discourse mit halbwegs Standardeinstellungen auszuführen, und es funktionierte ziemlich gut. Ich konnte Dateien hochladen und andere Dinge tun.

Dann habe ich festgestellt, dass der Pfad in app.yml /var/discourse war, und habe ihn zu /var/www/discourse geändert, den Container gestoppt und zerstört, den vorherigen Ordner komplett entfernt. Und ich habe ihn wieder am Laufen… aber ich habe festgestellt, dass ich jetzt keine Dateien mehr hochladen kann.

Welche Art von Berechtigungen benötigt der Ordner uploads? Ich kann einige Änderungen manuell vornehmen, aber ich würde gerne wissen, was genau und ob das im Allgemeinen in Ordnung ist (sollte der Launcher nicht dafür sorgen, die richtigen Berechtigungen festzulegen, insbesondere wenn er von Grund auf neu gestartet wird?).

In den Logs habe ich Nginx-Fehler wie

2024/07/12 19:11:23 [crit] 76#76: *160552 stat() „/var/www/discourse/public/uploads/default/original/1X/971c712ff3f1758abc63ac777ad708042cc41ddf.png“ fehlgeschlagen (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“

Berechtigungen für uploads sind wie:

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

Das ist das, was empfohlen wird.

Der Pfad /var/www/discourse ist der Pfad zu Discourse innerhalb des Containers. /var/discourse ist der normale Pfad für Discourse_docker außerhalb des Containers.

Da Sie gerade erst angefangen haben, würde ich Ihnen wahrscheinlich empfehlen, einfach neu anzufangen und diesmal nichts umzubenennen.

Ich vermute, dass Sie den Pfad in Ihrer app.yml nicht aktualisiert haben und er daher versucht, auf etwas zuzugreifen, das nicht existiert.

Ich habe viele andere Projekte auf diesem Server und sie sind alle schön in meinem Ordner /var/www untergebracht, daher möchte ich das gerne so beibehalten :slight_smile: Und es ist mir egal, wie es im Container aussieht.

Aber das habe ich doch? In Mounts, oder wo sonst sollte es hin?

Entschuldigung, kann nicht helfen. Aber ich bin mir absolut sicher, dass Sie dort kein Nginx haben :wink: Die Situation ist die gleiche mit Docker-Containern.

Entschuldigung, ich verstehe nicht, welches Nginx? Die Protokolle stammen von Discourse Nginx, mein SSL-terminierender Nginx befindet sich darüber.

Genau mein Punkt. Da Ihr Reverse-Proxy Nginx nicht in diesem Pfad liegt, warum sollte es dann ein Docker-Container sein.

Aber ein Container lebt sein eigenes Leben und der Pfad zum Container sollte nicht beeinflussen, was sein Nginx tut. Haben Sie auch etwas anderes geändert?

Ich habe überprüft, was ich habe:

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

Und als Beispiel sieht ein Bild unter /var/www/discourse/public/uploads/default/original/1X so aus:

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

Das weiß ich. Denn sonst ist Docker ein riesiges Rätsel für mich :rofl:

Also grundsätzlich beschreibbar? Gilt das nicht als schlecht für die Sicherheit?

Sie wollen wirklich nicht riskieren, Ihre Geheimnisse in Ihrer app.yml der Welt preiszugeben.

1 „Gefällt mir“

Innerhalb von Docker? Ich glaube nicht. Und… es ist mir egal, weil das alles von CDCK geplant und gemacht wird und ich vertraue darauf, dass sie wissen, was sie tun :smirking_face:

Sicher, aber ich gebe nichts preis :slight_smile:

Die Berechtigungen sind unabhängig davon, ob sie sich innerhalb oder außerhalb befinden, dieselben. Und der Upload-Ordner ist gemountet.

Okay, nichts hat funktioniert, also habe ich schließlich die Berechtigungen für den Ordner uploads auf 755 geändert und jetzt ist es in Ordnung. Nach dem Neuerstellen scheinen die Uploads selbst in Ordnung gewesen zu sein (von der Engine-Seite), jedoch konnte nginx diese nicht lesen.

Ich verstehe nicht ganz, warum Sie das alles tun. Es ist Ihre Entscheidung, einen Container an einem Ort zu platzieren, der weltweit sichtbar ist, wenn Sie einen kleinen Fehler machen, aber das ist Ihre Entscheidung. Aber alles andere… warum?

Einen Reverse-Proxy vor Discourse zu schalten ist wirklich trivial und ansonsten wäre Ihre Einrichtung eine Standardinstallation ohne all diesen Aufwand. Sicher, wenn Sie spielen wollen und das Ihr Hobby ist, aber bald wird jemand auftauchen und sagen, dass Sie nur für eine Standardinstallation Unterstützung erhalten und das größte Problem ist, dass niemand wirklich weiß, was Sie getan haben. Oder warum.

Was „das“? Ich habe eine relativ Standard-Einrichtung :slight_smile: Und ich versuche, das Problem zu beheben.

Wenn Sie möchten, können Sie eine Datei hochladen und sehen, welche Berechtigungen sie hat und diese kopieren.

Laden Sie vielleicht ein paar hoch und führen Sie dann

 find uploads -ls |less

Sie beheben ein Problem, das Sie hatten, als Sie etwas anderes zu tun begannen, was ein Standardbenutzer benötigt. Selbst mit einem Reverse-Proxy.

Deshalb sind Sie weit vom Standard entfernt :smirking_face: Denn es gibt zwei Optionen:

  • Sie haben einen Fehler, den sonst niemand hat.
  • Sie haben etwas Seltsames getan.

Vielleicht ist es ein Fehler. Und Sie haben dies bestätigt, indem Sie eine Standardinstallation auf einem (in vielerlei Hinsicht) sicheren Pfad vorgenommen und gleichzeitig Ihren Reverse-Proxy ordnungsgemäß verbunden haben. Denn wenn es immer noch kaputt ist, wette ich, dass das Problem beim virtuellen Host und/oder den Ports liegt. Aber wenn es funktioniert… dann sind wir wieder bei Option “seltsam” - wo niemand weiß, was Sie getan haben.

Sehen Sie hier das Problem?

In jedem Fall führt die Verwendung eines Reverse-Proxys zu keinem Support… das ist hier die Richtlinie. Aber andere Benutzer können und werden oft helfen.

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