It’s set in the example configuration block for Vultr in the OP. Copy and paste into your app.yml and adjust the necessary fields.
Thanks, I missed this bit:
This isn’t going smoothly for me, sorry to reply so many times.
If I do the above, should I ignore the admin panel settings for s3 and backups?
Or should admin panel settings be configured as well?
You just need to follow this guide here in the OP and you will get a functional object storage configuration.
Setting those variables makes them unavailable from the UX. You must set them as described here rather than the ux.
I think it’s (mostly?) working now, but is this content security policy script src safe?
I’m using AWS for two S3 containers (for uploads & backups), and two CloudFront CDNs (for files & assets). When I use my own CNAMEs for the CloudFront CDNs, I get a bunch of script-src network errors in my browser when loading Discourse. No more errors after adding those entires to my CSP.
Are those the urls you put in the env variables described in the OP? And are they https?
Yes, I don’t have script-src warnings when I put the two d23whatever.cloudfront.net URLs in the env variables. When I put my custom URLs, i.e. community-cdn.mydomain and files-cdn.mydomain, in the env variables, that’s the time I get these script-src warnings. And apparently the stripe js is still giving me this warning even though it’s in my content security policy script src.
لقد قمت بإعداد تحميلات S3 وتخزين الكائنات كما هو موضح هنا في OP، ولكن بدون شبكة توصيل محتوى (CDN).
بالنسبة للمتغير DISCOURSE_S3_CDN_URL، لدي هذا:
https://my-bucket-uploads.s3.dualstack.us-west-2.amazonaws.com
كل شيء يبدو جيدًا، بما في ذلك النسخ الاحتياطي، ومع ذلك، في وحدة التحكم يظهر هذا الخطأ عند بدء الرد على منشور:
عنوان URL للطلب في الخطأ هو في الواقع سلسلة من عنواني URL، مما يبدو أنه السبب؟
https://mydiscourse.com/t/uploads-test-for-s3/79/https://my-bucket-uploads.s3.dualstack.us-west-2.amazonaws.com/assets/markdown-it-bundle-a7328b73d3e7b030770eab70f10bdb0af655b3d8fa929bc49f1ad04c4cdaa198.br.js
شبكة توصيل المحتوى (CDN) إلزامية لكي تعمل بشكل صحيح.
أنا أيضًا في هذا الموقف مع مخزن كائنات مُعد (minio) ولكن بدون شبكة توصيل محتوى (CDN). هل هذه حالة استخدام يمكن دعمها؟
مما أراه حتى الآن في اختباراتي، فإن ملف markdown-it-bundle جافاسكريبت هو الوحيد الذي يواجه مشكلات لأنه يشير إلى عنوان URL خاطئ - DISCOURSE_HOSTNAME/DISCOURSE_S3_CDN_URL/assets/markdown-it-bundle-HASH.br.js
يبدو في الواقع وكأنه خطأ في هذا الملف، إذا قمت بتعيين المتغير DISCOURSE_CDN_URL، فإنه لا يزال يشير إلى عنوان URL خاطئ بهذا الشكل DISCOURSE_HOSTNAME/DISCOURSE_CDN_URL/assets/markdown-it-bundle-HASH.br.js
يجب أن يشير إلى DISCOURSE_S3_CDN_URL/assets/markdown-it-bundle-HASH.br.js
ملفات جافاسكريبت الأخرى تشير إلى عنوان URL الصحيح.
أعتقد مما تقوله أنني سأواجه مشاكل أخرى لم أكتشفها بعد. ربما يمكنك تزويدي بمزيد من المعلومات حول ما يمكن أن يحدث بشكل خاطئ؟
إذا فهمت بشكل صحيح، فإن ملفات جافاسكريبت موجودة على مخزن الكائنات، ويجب أن تكون أوراق الأنماط على شبكة توصيل محتوى (CDN). بدون شبكة توصيل محتوى (CDN)، هل يمكن تسليم أوراق الأنماط بواسطة التطبيق كالمعتاد؟ (مما أراه هو هذه الحالة)
شكراً لمساعدتك.
هذه ليست حالة استخدام مدعومة وفقًا للمنشور الأصلي:
إلى الجميع،
لقد قمت بإعداد خادم Discourse جديد باستخدام Lightsail، مستخدمًا هذا الدليل لتحميلات S3 والنسخ الاحتياطي setting-up-file-and-image-uploads-to-s3
بعد الإعداد، ظهر لي الخطأ المعروض “لا تسمح الحاوية بـ ACLs” على الشاشة عند تحميل صورة
هذه هي سياستي لـ S3:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:GetObjectVersionTagging",
"s3:CreateBucket",
"s3:GetObjectAcl",
"s3:GetBucketObjectLockConfiguration",
"s3:PutLifecycleConfiguration",
"s3:GetObjectVersionAcl",
"s3:PutObjectTagging",
"s3:DeleteObject",
"s3:DeleteObjectTagging",
"s3:GetBucketPolicyStatus",
"s3:GetObjectRetention",
"s3:GetBucketWebsite",
"s3:ListJobs",
"s3:DeleteObjectVersionTagging",
"s3:GetObjectLegalHold",
"s3:GetBucketNotification",
"s3:PutBucketCORS",
"s3:GetReplicationConfiguration",
"s3:ListMultipartUploadParts",
"s3:PutObject",
"s3:GetObject",
"s3:DescribeJob",
"s3:PutObjectVersionAcl",
"s3:GetAnalyticsConfiguration",
"s3:GetObjectVersionForReplication",
"s3:GetLifecycleConfiguration",
"s3:GetAccessPoint",
"s3:GetInventoryConfiguration",
"s3:GetBucketTagging",
"s3:GetBucketLogging",
"s3:ListBucketVersions",
"s3:ReplicateTags",
"s3:ListBucket",
"s3:GetAccelerateConfiguration",
"s3:GetBucketPolicy",
"s3:GetEncryptionConfiguration",
"s3:GetObjectVersionTorrent",
"s3:AbortMultipartUpload",
"s3:PutBucketTagging",
"s3:GetBucketRequestPayment",
"s3:GetAccessPointPolicyStatus",
"s3:GetObjectTagging",
"s3:GetMetricsConfiguration",
"s3:PutObjectAcl",
"s3:GetBucketPublicAccessBlock",
"s3:ListBucketMultipartUploads",
"s3:ListAccessPoints",
"s3:PutObjectVersionTagging",
"s3:GetBucketVersioning",
"s3:GetBucketAcl",
"s3:GetObjectTorrent",
"s3:GetAccountPublicAccessBlock",
"s3:ListAllMyBuckets",
"s3:GetBucketCORS",
"s3:GetBucketLocation",
"s3:GetAccessPointPolicy",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::mybucket-upload",
"arn:aws:s3:::mybucket-upload/*",
"arn:aws:s3:::mybucket-backup",
"arn:aws:s3:::mybucket-backup/*"
]
}
]
}
وهذا هو إعداد الوصول العام الخاص بي لحاوية S3:
هل يمكن لأحد مساعدتي في حل هذه المشكلة، من فضلك؟
شكرا جزيلا
تحياتي،
كوانغ
هل يجب أن يستخدم موقع الاختبار الخاص بي نفس حاوية S3 مثل موقع الإنتاج الخاص بي؟
لا، سيكون ذلك غير آمن للغاية، ويمكن أن يحذف ملفات يجب أن تظل موجودة في البيئة الأخرى ويغير ملفات من البيئة الأخرى (مما قد يتسبب في فقدان ملفات، أو ملفات خاطئة، وما إلى ذلك).
يجب أن تكون كلتا الحاويتين (buckets) وبيانات الاعتماد مختلفة (ولا يجب أن يكون لبيانات اعتماد المرحلة وصول إلى حاوية الإنتاج، خاصة فيما يتعلق بعمليات الكتابة والحذف).
ربما تكون هناك طريقة لاستخدام مسارات ببيانات اعتماد مختلفة لكل مسار، ولكن احتمالات إلحاق الضرر بنفسك عالية، لذا أنصح باستخدام حاويات منفصلة.
هل يجب أن يكون DISCOURSE_CDN_URL و DISCOURSE_S3_CDN_URL منفصلين أيضًا؟
أفترض ذلك، لأنه إذا كانت نطاقات/عناوين URL الخاصة بالمرحلة والإنتاج مختلفة (وهي كذلك، أليس كذلك؟)، فإن DISCOURSE_CDN_URL (التي تشير في النهاية إلى موفر شبكة توصيل المحتوى، والذي يشير إلى نطاق موقعك على الويب) يُتوقع أن تكون مختلفة للمرحلة والإنتاج. وينطبق المنطق نفسه على DISCOURSE_S3_CDN_URL (لأن الدلاء المختلفة يجب أن يكون لها عناوين URL مختلفة).
مرحباً بالجميع، أنا جديد جداً على S3، لذلك لست متأكداً تماماً من كيفية صياغة هذا، لكنني سأبذل قصارى جهدي. لقد انتقلت للتو إلى استخدام S3 لعمليات التحميل والنسخ الاحتياطي، وكنت أستخدم Discourse Connect للسماح بتسجيل الدخول في أجزاء أخرى من موقعي، ولكن الآن لم تعد صور الملف الشخصي تعمل. أعتقد أن هذا يتعلق بسياسات CORS، لكنني لست متأكداً من أين يمكنني تكوينها. أفضل أن أقوم بإدراجها في القائمة البيضاء لـ forum.domain.tld و domain.tld - أو يمكن أن يعمل رمز بدل على جميع النطاقات الفرعية أيضاً. هل هذا شيء يمكنني تعيينه في Discourse، أم أين بالضبط؟ أنا أستخدم Vultr object storage إذا كان هذا يحدث فرقاً.
هل يمكن تمكين الإصدار على دلو files S3؟ هل النسخ الاحتياطي لـ AWS هو الطريقة الموصى بها لعمل نسخ احتياطية لدلاء S3 لـ Discourse؟
نعم.
يعد استخدام الإصدار، أو المزامنة إلى منطقة مختلفة، كلها استراتيجيات جيدة.



