No problem. I wish I could help you more, but unfortunately, I do not have enough knowledge on the subject. Hopefully someone that knows more will respond soon. I would also watch the topic that I linked to. It might eventually have a solution posted.
In the mean time, you might want to take a look at your logs and see if there are similarities to the logs posted in that topic. I’m pretty sure the logs you would be interested in can be found by adding /logs to your forum’s base URL. So it would look something like https://example.com/logs The user in that topic also mentions a proxy. Are you using a proxy?
If you can provide this type of information, it should be helpful to someone that reads this topic and has a better understanding on the subject.
We’d prefer if you could upload to try first (try.discourse.org), that way we don’t start getting image uploads all over the place. If the image fails to lightbox on try, then feel free to upload it here so the example doesn’t get deleted when try is reset each day. If the image lightboxes on try then the issue is specific to your configuration as @schungx stated.
أنا أستخدم الإصدار 2.5.0.beta6 وأواجه نفس المشكلة.
خيار “إنشاء صور مصغرة” مفعل، لكنه لا ينشئ نافذة منبثقة للصور (lightbox)، بغض النظر عن حجم الصورة.
لدي نسخة أخرى من Discourse قديمة منذ بضعة أشهر، وهناك تعمل نافذة الـ lightbox في المنشورات القديمة، لكنها لا تعمل في المنشورات الجديدة.
ربما تكون هذه مشكلة مرتبطة بحدث تحديث؟
إذا قمت برفع نفس الصورة إلى try.discourse.org، فإنها تعمل بشكل صحيح هناك مع نافذة الـ lightbox.
هذا يشير إلى وجود مشكلة في إعداداتك في مكان ما. هل يمكنك التحقق من وحدة تحكم المتصفح (browser console) بحثًا عن أخطاء، أو مشاركة رابط الموقع الذي تواجه فيه مشكلة؟
لقد أنشأت للتو موضوع اختبار هناك على نسخة جديدة من discourse قمت بإعدادها الأسبوع الماضي.
الصورة بحجم 1920x1050، لكنها لا تفتح في نافذة منبثقة (lightbox). https://dis.ctb.co.at/t/test-image-lightbox/44
في التثبيت الثاني الذي كان يعمل فيه صندوق الضوء (lightbox) سابقًا، كان المسار في البداية “”/var/docker"" ثم قمت بتغييره إلى موقع آخر.
قد يكون مشكلة صندوق الضوء قد بدأت عند تغيير المسار. - لست متأكدًا من ذلك.
هل فاتني أي إعداد للمسار الجديد؟
السطور المذكورة أعلاه كانت هي السطور الوحيدة التي وجدت أنها تشير إلى الدليل الأصلي “”/var/docker"".
إذا لم يكن المسار هو السبب، فماذا يمكن أن يتسبب في هذه المشكلة المتعلقة بمربع الحوار المنبثق؟
لقد أعيدت تحريكه إلى “/var/docker/dis.ctb.co.at”.
هذا هو تكوين yml الحالي (تم تغيير البيانات الشخصية فقط). هل يمكن أن يكون هناك خطأ هناك، أم أن هذه مشكلة في Discourse؟
## هذا هو قالب حاوية Docker المستقلة الشاملة لـ Discourse
##
## بعد إجراء تغييرات على هذا الملف، يجب عليك إعادة البناء
## /var/discourse/launcher rebuild app
##
## كن *حذرًا جدًا* عند التعديل!
## ملفات YAML حساسة للغاية للأخطاء في المسافات البادئة أو المحاذاة!
## قم بزيارة http://www.yamllint.com/ للتحقق من صحة هذا الملف حسب الحاجة
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## قم بإلغاء التعليق عن هذين السطرين إذا كنت ترغب في إضافة Lets Encrypt (https)
# - "templates/web.ssl.template.yml"
# - "templates/web.letsencrypt.ssl.template.yml"
## ما هي منافذ TCP/IP التي يجب أن تعرضها هذه الحاوية؟
## إذا كنت تريد لـ Discourse مشاركة منفذ مع خادم ويب آخر مثل Apache أو nginx،
## راجع https://meta.discourse.org/t/17247 للحصول على التفاصيل
expose:
# - "80:80" # http
# - "443:443" # https
- "127.0.0.1:3041:80"
docker_args:
- "--network=nginx-br"
params:
db_default_text_search_config: "pg_catalog.english"
## قم بتعيين db_shared_buffers إلى أقصى 25% من إجمالي الذاكرة.
## سيتم تعيينها تلقائيًا بواسطة bootstrap بناءً على ذاكرة الوصول العشوائي المكتشفة، أو يمكنك تجاوزها
db_shared_buffers: "4096MB"
## يمكن أن يحسن أداء الفرز، لكنه يزيد من استخدام الذاكرة لكل اتصال
#db_work_mem: "40MB"
## أي إصدار Git يجب أن تستخدم هذه الحاوية؟ (الافتراضي: tests-passed)
#version: tests-passed
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## كم عدد طلبات الويب المتزامنة المدعومة؟ يعتمد على الذاكرة وأنوية المعالج.
## سيتم تعيينها تلقائيًا بواسطة bootstrap بناءً على المعالجات المكتشفة، أو يمكنك تجاوزها
UNICORN_WORKERS: 8
## TODO: اسم النطاق الذي ستستجيب له هذه النسخة من Discourse
## مطلوب. لن يعمل Discourse مع عنوان IP عاري.
DISCOURSE_HOSTNAME: dis.ctb.co.at
## قم بإلغاء التعليق إذا كنت تريد بدء الحاوية بنفس اسم المضيف (-h option) المحدد أعلاه (الافتراضي "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: قائمة عناوين البريد الإلكتروني المفصولة بفواصل سيتم تعيينها كمسؤول ومطور
## عند التسجيل الأولي مثال 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'nothing@nothing.com'
## TODO: خادم البريد SMTP المستخدم للتحقق من الحسابات الجديدة وإرسال الإشعارات
## مطلوب عنوان SMTP واسم المستخدم وكلمة المرور
## تحذير: قد يتسبب حرف '#' في كلمة مرور SMTP في حدوث مشاكل!
DISCOURSE_SMTP_ADDRESS: mailserver.nothing.com
DISCOURSE_SMTP_PORT: 25
DISCOURSE_SMTP_USER_NAME: nothing@nothing.com
DISCOURSE_SMTP_PASSWORD: "secret"
DISCOURSE_SMTP_ENABLE_START_TLS: false # (اختياري، الافتراضي true)
DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none
## إذا قمت بإضافة قالب Lets Encrypt، قم بإلغاء التعليق أدناه للحصول على شهادة SSL مجانية
# LETSENCRYPT_ACCOUNT_EMAIL: me@example.com
## عنوان CDN http أو https لهذه النسخة من Discourse (مُهيأ للسحب)
## راجع https://meta.discourse.org/t/14857 للحصول على التفاصيل
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
VIRTUAL_HOST: dis.ctb.co.at
VIRTUAL_PORT: 9002
LETSENCRYPT_HOST: dis.ctb.co.at
LETSENCRYPT_EMAIL: nothing@nothing.com
## حاوية Docker عديمة الحالة؛ يتم تخزين جميع البيانات في /shared
volumes:
- volume:
host: /var/docker/dis.ctb.co.at/shared/standalone
guest: /shared
- volume:
host: /var/docker/dis.ctb.co.at/shared/standalone/log/var-log
guest: /var/log
## تذهب الإضافات هنا
## راجع https://meta.discourse.org/t/19157 للحصول على التفاصيل
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
## أي أوامر مخصصة للتشغيل بعد البناء
run:
- exec: echo "Beginning of custom commands"
## إذا كنت تريد تعيين عنوان البريد الإلكتروني 'من' للتسجيل الأول، قم بإلغاء التعليق وتغيير:
## بعد الحصول على أول بريد إلكتروني للتسجيل، قم بإعادة التعليق على السطر. يجب تشغيله مرة واحدة فقط.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- exec: echo "End of custom commands"
- replace:
filename: /etc/nginx/conf.d/discourse.conf
from: "types {"
to: |
set_real_ip_from 172.18.0.0/16;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
types {
لقد اكتشفت الآن أن هذه المشكلة تحدث فقط إذا كانت إعدادية “فرض استخدام HTTPS فقط لموقعك” مفعلة عند إنشاء المنشور الذي يحتوي على الصورة.
كانت هذه الإعدادية مفعلة في التثبيت الآخر منذ البداية، لكنها توقفت فجأة عن العمل، ربما بسبب تحديث لـ nginx أو Discourse.
لا يظهر nginx أي سلوك غريب حتى الآن كما أستطيع أن أرى.
أقوم بتشغيل نسختين منفصلتين من Discourse عبر وكيل nginx هذا، بالإضافة إلى مثيل Nextcloud. في أول تثبيت لـ Discourse، كان عمل النافذة المنبثقة (lightbox) يعمل من قبل ثم توقف فجأة. في الواقع، لم أقم بأي تغييرات على إعدادات الوكيل منذ أن كان يعمل.
من المثير للاهتمام أنه لا يزال ينشئ بعض الملفات والمجلدات في /var/discourse، حتى لو قمت بإعداد وحدات التخزين (volumes) لتكون مختلفة عن هذا المجلد.
لم يحدث أبدًا أن تم إنشاء ملفات في /var/discourse، ربما رأيت بعض الملفات القديمة.
لقد قمت الآن بالتغيير من nginx إلى traefik للتأكد من أن المشكلة ليست من nginx، لكن المشكلة لا تزال قائمة. وهذا يعني لي أن هناك مشكلة على جانب Discourse وليس على جانب الوكيل.
نفس الوضع مع traefik، إذا تم تعطيل “فرض https” عند نشر الصورة، فإن صندوق العرض الخفيف يعمل بشكل جيد، حتى لو قمت بتفعيل “فرض https” لاحقًا.
ما الذي يمكنني التحقق منه بعد ذلك؟
يظهر لي خطأ في ملف السجل (log file) مفاده أنه لا يمكنه الوصول إلى /uploads/....
لا يمكن الوصول إلى '/uploads/default/original/1X/fe2af548af4a22f4802ddaa54afa557ae557417c.png' للحصول على أبعادها.
يمكنني الوصول إلى الصورة دون مشاكل إذا أدخلت الرابط في متصفح ويب: https://domain.com/uploads/default/original/1X/fe2af548af4a22f4802ddaa54afa557ae557417c.png
تم الإنجاز بنجاح 200 OK خلال 23 مللي ثانية (Views: 0.3ms | ActiveRecord: 0.0ms | Allocations: 3000)
تم الإنجاز بنجاح 200 OK خلال 318 مللي ثانية (Views: 1.2ms | ActiveRecord: 0.0ms | Allocations: 50347)
لا يمكن الوصول إلى '/uploads/default/original/1X/fe2af548af4a22f4802ddaa54afa557ae557417c.png' للحصول على أبعادها.
بدأت عملية GET "/posts/96" من عنوان 84.115.50.36 في 2020-07-04 14:15:14 +0000
معالجة بواسطة PostsController#show بصيغة JSON
المعاملات: {"id"=>"96"}
لا يظهر لي أي خطأ عند عدم فرض استخدام HTTPS.
تم الإنجاز بنجاح 200 OK خلال 18 مللي ثانية (Views: 0.3ms | ActiveRecord: 0.0ms | Allocations: 3050)
تم الإنجاز بنجاح 200 OK خلال 296 مللي ثانية (Views: 0.5ms | ActiveRecord: 0.0ms | Allocations: 49562)
بدأت عملية GET "/posts/97" من عنوان 84.115.50.36 في 2020-07-04 14:17:43 +0000
معالجة بواسطة PostsController#show بصيغة JSON
المعاملات: {"id"=>"97"}
يبدو لي أن Discourse يقوم بتحميل الصورة مرة أخرى من خادم الويب لسبب ما للقيام ببعض عمليات عرض الصور (lightbox).
إذا قمت بتحميل هذه الصورة يدويًا داخل حاوية Docker الخاصة بـ Discourse، فإنها تحاول الوصول إلى خادم الويب مباشرةً عبر عنوان IP الداخلي بدلاً من الوصول إليه عبر الوكيل (proxy). وهذا يعمل عبر HTTP، لكنه لا يعمل عبر HTTPS.
خادم الويب نفسه يدعم HTTP فقط، لكنه يحاول الوصول إليه عبر HTTPS مما يؤدي إلى الفشل.
أتساءل لماذا يقوم Discourse بتحميل الصورة مرة أخرى من خادم الويب بدلاً من الوصول إليها داخليًا دون استخدام HTTP/HTTPS.
تعديل: اكتشفت أنني قمت بإعادة تسمية ملف app.yml إلى domain.name.yml، مما تسبب في تغيير Docker لاسم النطاق (DNS name) الخاص بـ domain.name إلى عنوان IP الداخلي الخاص به. قمت بإعادة تسميته إلى domain_name.yml، وعمل كل شيء بشكل جيد الآن.