Avatar-Upload-Problem (Ubuntu)

Dies wurde aus dem Thread zur Einrichtung der WSL-Entwicklungsumgebung unter Win 11 herausgetrennt.

Meine Probleme beziehen sich auf eine (Nicht-Docker-) Entwicklungsumgebung, die auf Ubuntu 22.04.3 installiert wurde.

…Vielen Dank dafür, ich musste jedoch einige zusätzliche manuelle Schritte durchführen, da der bearbeitete Installer anscheinend nicht die neuesten Versionen von npm oder Ruby installiert hat.

Verwende auch ubuntu-22.04

Neuestes npm installieren mit (Option 2): https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-22-04

pnpm installieren: npm install -g pnpm

Neuestes Ruby installieren (Methode 3): https://ubuntuhandbook.org/index.php/2024/01/install-ruby-ubuntu-24-04/

Dies zu bash.rc hinzufügen:

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

ImageMagick manuell installieren, die neueste Version (stellen Sie sicher, dass Sie zum Abschnitt „Install latest version of ImageMagick from the source code (for advanced and desperate users)“ gehen): https://itsfoss.com/install-imagemagick-ubuntu

Erst nach all dem konnte ich mich bei der Instanz anmelden….

Nachdem ich den ganzen Tag damit verbracht hatte, die Entwicklungsinstanz zum Laufen zu bringen, war ich ziemlich zufrieden… alles scheint in Ordnung zu sein, außer beim Hochladen von Avataren. Genauer gesagt, als Benutzer kann ich einen Avatar hochladen und er wird im Avatar-Upload-Feld korrekt angezeigt, aber wenn ich auf Speichern klicke, wird nur der Platzhalter-Avatar angezeigt… keine Fehler im Protokoll…

Das ist für mich ziemlich wichtig, da ich die Entwicklungsinstanz eingerichtet habe, um eine Migration zu testen, und einer dieser Tests ist, dass Avatare abgerufen werden :smiley:… ich möchte also sicherstellen, dass sie funktionieren, bevor ich mit einem Testimport fortfahre.

Hochgeladene Bilder in Themen werden korrekt angezeigt, kein Problem

Hat jemand eine Idee? Jede Hilfe wird sehr geschätzt

URLs für Bilder können lokal etwas knifflig sein.

Stellen Sie sicher, dass Sie Ihren lokalen Server mit FORCE_HOSTNAME=localhost:4200 bin/ember-cli -u starten.

Es ist besser, eine Testinstanz in der Cloud zu verwenden, um Ihr endgültiges Ziel zu simulieren … tatsächlich würde ich Ihnen empfehlen, Migrationen letztendlich in der Cloud zu testen.

1 „Gefällt mir“

Das habe ich versucht, leider ohne Erfolg.

Ich bin so müde, nachdem ich den ganzen Tag damit verbracht habe, diese lokale Entwicklungsumgebung so weit zu bringen, dass ich mir nicht vorstellen kann, dass es jetzt alles sinnlos war :stuck_out_tongue: ich dachte, ich wäre so weit!

Mein Gedankengang für eine lokale Entwicklungsumgebung war:

Das Importskript lokal ausführen, Discord sichern, es auf die richtige Cloud-Produktionsinstanz übertragen, wenn alles gut aussieht…

Sie können die URLs der Avatare in den Browser-Entwicklertools überprüfen und feststellen, dass sie möglicherweise nicht korrekt sind

Lokale Installationen sind sehr nützlich für die Entwicklung und das Testen … aber nicht perfekt für die Bearbeitung von Bildern

1 „Gefällt mir“

Was wahrscheinlich passiert, ist, dass WSL 127.0.0.1 nicht für Windows verfügbar macht, sodass ein Windows-Browser dies nicht erkennt.

Versuchen Sie stattdessen, es aus Chrome innerhalb von WSL2 zu starten und dies zu verwenden?

Ich vermute, dass die Avatare mit einer 127.0.0.1-Adresse angezeigt werden …

Ahh, entschuldigung, ich benutze Ubuntu, auf einer Ubuntu VM. Ich wollte diesen Win 11 Thread nicht kapern.

1 „Gefällt mir“

Hier ist das genaue Verhalten.

Bild-Uploads in Beiträgen funktionieren einwandfrei.

Das Ändern des Benutzer-Avatars scheint zu funktionieren, wenn Sie das Bild zum ersten Mal hochladen und sich noch im Dialogfeld zum Auswählen des Bildes befinden:

aber wenn Sie auf „Änderungen speichern“ klicken, wird das hochgeladene Bild nicht angezeigt und das Standardbild wird angezeigt:

Das Bild wurde hochgeladen und kann durch Aufrufen der Quelle angezeigt werden:

und wenn Sie die URL in den Entwicklertools ändern, wird sie auf der Einstellungsseite korrekt angezeigt:

Also… der Unterschied ist die URL – der hochgeladene benutzerdefinierte Avatar hat eine „http://127.0.0.1:4200/uploads/default/original…..“, aber die Seite möchte anzeigen

„/user_avatar/127.0.0.1/user1/…….“

….was übersehe ich hier?

Hinweis: In Themen/Beiträgen wird das Bild mit der URL korrekt angezeigt: http://localhost:4200/uploads/default/original/……….etc

Jede Hilfe wird geschätzt!

Okay, ich glaube, ich komme der Sache auf den Grund, zwei Probleme, ich melde mich zurück, wenn es funktioniert.

Ok…

Erstes Problem – der Avatar-Pfad war die IP-Adresse 127.0.0.1, während alle anderen URLs localhost waren – hätte das einen Unterschied gemacht? Ich habe es trotzdem geändert, indem ich in die Rails-Konsole gegangen bin (da es die Parameter von der Befehlszeile zum Starten von Discourse (FORCE_HOST=localhost usw.) anscheinend nicht übernommen hat), sie waren in Rails leer.

rails c
SiteSetting.force_hostname = "localhost"
SiteSetting.port = 4200
exit

Danach waren die Avatar-Pfade localhost und nicht die IP-Adresse, nachdem ich die Seite neu gestartet hatte. Avatare funktionierten jedoch immer noch nicht.

Weitere Untersuchung der Protokolle, sobald ich einen Avatar-Import durchgeführt habe:

tail -n 200 log/development.log

ergab:

convert: no decode delegate for this image format jpeg:/home/bob/discourse/public/uploads/default/original/1X/92bb0d46e6a4b8a1333505b9d2da59a5ed1721ec.jpeg[0]' @ error/constitute.c/ReadImage/752.\nconvert: no images defined jpeg:/tmp/discourse-thumbnail20260202-4096-qjyo93.jpeg' @ error/deprecate.c/ConvertImageCommand/3368.\n"

und nach etwas Recherche fand ich heraus, dass es daran lag, dass ich Imagemagick installiert hatte, aber nicht zuerst die JPEG-Delegates. Ich habe Imagemagick deinstalliert und die JPEG-Delegates (und andere) installiert:

sudo apt install -y libpng-dev libtiff-dev libwebp-dev libheif-dev liblcms2-dev zlib1g-dev libjpeg-turbo8 libjpeg-turbo8-dev

und dann Imagemagick aus dem Quellcode neu installiert:

./configure \
  --prefix=/usr/local \
  --with-modules \
  --disable-static \
  --with-quantum-depth=16 \
  --with-jpeg=yes \
  --with-png=yes \
  --with-tiff=yes \
  --with-webp=yes \
  --with-heic=yes \
  --with-lcms=yes

make -j"$(nproc)"
sudo make install
sudo ldconfig

Ich habe den Discourse-Server neu gestartet und die Avatare funktionierten sofort :slight_smile:

Ich ärgere mich über mich selbst, dass ich mich auf die IP/localhost-URL-Referenzen fixiert habe, anstatt die Grundlagen zu überprüfen… aber so ist das, ich habe in den letzten zwei Tagen eine Menge gelernt und es funktioniert jetzt :slight_smile: