Хорошо…
Первая проблема — путь к аватару указывал на IP-адрес 127.0.0.1, тогда как все остальные URL использовали localhost. Имело ли это значение? Я всё равно исправил это, зайдя в консоль Rails (так как параметры, переданные в командной строке при запуске Discourse (FORCE_HOST=localhost и т. д.), не подхватывались, и в Rails они были пустыми).
rails c
SiteSetting.force_hostname = "localhost"
SiteSetting.port = 4200
exit
После перезапуска сайта пути к аватарам стали указывать на localhost, а не на IP-адрес. Однако аватары всё ещё не работали.
Дальнейшее изучение логов сразу после импорта аватара:
tail -n 200 log/development.log
показало:
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">
После некоторого поиска я выяснил, что причина была в том, что я установил ImageMagick, но не установил сначала библиотеки-обёртки для JPEG. Я удалил ImageMagick, установил библиотеки для JPEG (и другие):
sudo apt install -y libpng-dev libtiff-dev libwebp-dev libheif-dev liblcms2-dev zlib1g-dev libjpeg-turbo8 libjpeg-turbo8-dev
а затем переустановил ImageMagick из исходного кода:
./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
Перезапустил сервер Discourse, и аватары сразу заработали ![]()
Я сам на себя зол за то, что зациклился на ссылках с IP/localhost, вместо того чтобы проверить основы… но в итоге я многому научился за последние пару дней, и теперь всё работает ![]()