Our discourse Images are not lightboxed

Согласен, можно ли модифицировать launcher, чтобы он предупреждал об этом или блокировал такое в следующий раз @falco?

У меня возникла та же проблема. Не могли бы вы уточнить, как именно нужно переименовать файл .yml?

Нужно ли включать TLD и поддомен в имя файла .yml? Для этого сайта это было бы meta.discourse.org.yml?

Переименуйте его в meta_discourse_org.yml.

В имени вашего файла должна быть только одна точка, и она должна предшествовать расширению.

Спасибо за уточнение. Я изменил имя файла и выполнил пересборку, но всё ещё не вижу лайтбокс или всплывающую подпись при наведении на изображения.

О каком именно файле журнала идёт речь? Я пытаюсь подтвердить, что это та же самая проблема.

Также у меня включена опция «Принудительно использовать только HTTPS» для сайта, а порт 80 заблокирован в брандмауэре.

cd /var/discourse
./launcher enter app
tail -f /shared/log/rails/production.log

Также см. эту статью о журналах Discourse.

Если проблема возникает только с существующими сообщениями, но новые загруженные изображения отображаются корректно, то мне помогло выполнение следующих команд:

rake uploads:recover_from_tombstone
rake posts:rebake

Также посмотрите это обсуждение.

Всё очень полезно, спасибо.

Похоже, у меня та же проблема с ошибкой can't reach '/uploads/default...

Следующая строка в моём файле журнала:
Started GET "/posts/950" for 127.0.0.1 at 2020-07-07 08:24:05 +0000

Есть какие-то идеи, почему мой запрос идёт через локальный IP-адрес, а не через недавно переименованный контейнер или локальный IP-адрес контейнера?

Похоже, это касается только нестандартных установок, которые одновременно:

  • Не использовали ./discourse-setup и вручную создали файл yml

  • Используют обратный прокси

  • Этот обратный прокси магическим образом настроен с использованием имени контейнера Docker

Я бы не рекомендовал изменять текущее детерминированное имя контейнера для всех, чтобы решить этот пограничный случай, если это также не происходит просто при добавлении лишней точки в имя файла yml.

На самом деле я его использовал, но позже переименовал файл, так как у меня запущены два экземпляра Discourse, и в противном случае оба назывались бы app в одном и том же контейнере Docker.
Считаю разумным переименовывать файл в соответствии с используемым доменом.

Вероятно, это довольно распространённая практика для небольших сообществ, запускающих несколько сайтов на одном сервере.

Проблема с именем возникла не из-за обратного прокси, а из-за самого Docker, который автоматически добавляет имя контейнера в свой внутренний DNS. Проблема заключалась в том, что имя контейнера Discourse в Docker совпадало с его внешним DNS-именем (например, app.ymlmeta.discourse.org.yml).

Я предлагаю выводить хотя бы серьёзное предупреждение, если имя файла совпадает с указанным доменным именем в файле .yml.

У меня всё ещё та же проблема: не удаётся получить доступ к изображению, чтобы узнать его размеры.

Не удаётся получить доступ к ‘/uploads/default/original/1X/9385b0977b09b0f2239c287de980b6fc238d0da0.png’ для определения его размеров.

Это происходит при полностью стандартной установке с помощью ./discourse-setup

Есть ли ещё какие-то идеи, как это исправить?

Что произойдет, если вы попытаетесь загрузить изображение внутри вашего приложения Discourse?

./launcher enter app
wget https://yourdomain.com/uploads/default/original/1X/9385b0977b09b0f2239c287de980b6fc238d0da0.png

Указывает ли разрешение имен на правильный IP-адрес?

apt-get update
apt-get install inetutils-ping
ping yourdiscoursedomain.com

или

apt-get update
apt-get install dnsutils
nslookup yourdiscoursedomain.com

Ещё раз спасибо за помощь, Майкл, это очень ценно.

Я успешно пингую домен, но похоже, что wget пытается работать через веб-прокси.

Я следовал этому руководству и добавил переменную no-proxy во все соответствующие места.

Не упустил ли я что-то? Как настроить контейнер так, чтобы он не использовал веб-прокси сервера? Нужно ли добавлять no-proxy в app.yml?

Я добавил свой домен в параметр no-proxy файла app.yml, пересобрал приложение, и теперь прокси игнорируется, как и требовалось.

Однако при выполнении wget изнутри приложения всё ещё возникают ошибки:

WARNING: The certificate of ‘MYDOMAIN.com’ is not trusted.
WARNING: The certificate of ‘MYDOMAIN.com’ doesn’t have a known issuer.

Это связано с тем, что мой SSL-сертификат выдан внутренним центром сертификации (CA). Когда я запускаю ту же команду wget с флагом --no-check-certificate, всё работает корректно.

Как мне можно либо добавить сертификат в список доверенных, либо добавить флаг для отключения проверки сертификата?

@Michael_Uray, подскажите, куда нужно добавить корневой сертификат CA, чтобы контейнер Discourse начал доверять SSL-сертификату.

Я следовал этому руководству, но, похоже, оно касается самого сервера, а не контейнера, в котором работает Discourse.

Вам обязательно нужно зайти внутрь контейнера и добавить его туда, если вы не используете обратный прокси, но, думаю, таким образом изменения не будут сохранены. Я предполагаю, что вам нужно каким-то образом добавить это в app.yml или обеспечить постоянство соответствующего пути к сертификату CA внутри контейнера через app.yml.