Кто-нибудь использовал SeaweedFS? В связи с неопределённостью вокруг MinIO я рассматриваю этот вариант и планирую протестировать его, чтобы проверить, нет ли проблем совместимости с Discourse.
Я смог правильно настроить R2, используя этот набор правил:
## Этот набор строк позволяет загружать и скачивать файлы, размещенные в R2 S3..
DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: auto
DISCOURSE_S3_ACCESS_KEY_ID: access-key-id
DISCOURSE_S3_SECRET_ACCESS_KEY: access-key
DISCOURSE_S3_CDN_URL: https://eufiles.technospider.com
DISCOURSE_S3_BUCKET: exotics-unlimited
DISCOURSE_S3_BACKUP_BUCKET: exotics-unlimited-backups
DISCOURSE_BACKUP_LOCATION: s3
# DISCOURSE_CDN_URL: https://eufiles.technospider.com
DISCOURSE_S3_ENDPOINT: https://71*****5d4976.r2.cloudflarestorage.com
# DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS: true
DISCOURSE_S3_INSTALL_CORS_RULE: false
Как только я закомментировал строку с CDN_URL, всё заработало. Думаю, из-за того, что R2 автоматически создаёт CDN, эта строка не нужна, и её добавление, наоборот, ломает работу.
Я закомментировал строку с включением изображений, чтобы уменьшить размер резервных копий. Я использую бесплатный тариф R2 и не хочу превышать свой лимит.
Верно. Вам действительно не следует использовать DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS, если только вы не планируете отказываться от S3. Нет смысла скачивать все изображения из S3, чтобы включить их в резервную копию, которая хранится… в S3. Я однажды оставил эту опцию включённой для бакета AWS и получил огромный счёт за загрузку каждого изображения каждый день.
Это должен быть отдельный CDN, указывающий на ваш сервер Discourse, а не на бакет S3. Некоторые данные, например аватары (и, возможно, что-то ещё), обслуживаются с вашего сервера. Причина, по которой это не сработало, в том, что вы указали CDN для S3, а не CDN для сайта.
Вы имеете в виду, если использовать две разные компании? Одну для бакета, а другую для CDN? Я не очень разбираюсь в этом, поэтому мне нужно объяснение так, будто я в третьем классе…
Я знаю, что при создании «пользовательского домена» в интерфейсе R2 он действует как CDN, поэтому я изначально добавил эту строку.
В любом случае, у меня на тестовом сайте всё работает идеально, и если нет ничего ещё, что должно работать, но не работает, я бы рекомендовал обновить исходный пост, указав, что Cloudflare теперь работает с Discourse.
Нет, так нельзя. Существует только один ключ и секрет S3. Я пытался придумать повод для использования include s3 uploads, но такого повода нет.
Это относится к S3 Bucket, а не к вашему сайту. Существуют две разные переменные: DISCOURSE_S3_CDN_URL и DISCOURSE_CDN_URL. Вы обращаетесь с ними так, будто они одинаковы. Вы не можете использовать CDN для сайта, но причина, по которой это не сработало, когда вы установили эту переменную, заключается в том, что вы указали неверный CDN.
Хорошо, я думал, что немного разбираюсь в том, что делаю, но теперь чувствую себя совершенно потерянным.
Так в чём же разница между S3 CDN и CDN?
Продолжит ли это работать, если я поменяю местами эти два элемента, которые сейчас закомментированы?
Я также заметил странную проблему с фоновым изображением моего баннера приветствия. Есть ли какая-то связь с этим?
14 сообщений были перенесены в новую тему: Проблемы с AWS CDN и S3
Всем привет — просто хотел сообщить, что объектное хранилище Hetzner работает довольно хорошо. Вот настройки, которые я добавил в свой app.yaml:
DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: whatever
DISCOURSE_S3_INSTALL_CORS_RULE: false
DISCOURSE_S3_ENDPOINT: https://nbg1.your-objectstorage.com
DISCOURSE_S3_ACCESS_KEY_ID: xxxx
DISCOURSE_S3_SECRET_ACCESS_KEY: xxxx
DISCOURSE_S3_CDN_URL: xxxx
DISCOURSE_S3_BUCKET: discourseuploads
DISCOURSE_S3_BACKUP_BUCKET: discoursebackups
DISCOURSE_BACKUP_LOCATION: s3
Очевидно, замените следующие параметры на свои собственные:
DISCOURSE_S3_ENDPOINT: (используйте URL из панели управления Hetzner для региона, в котором вы создали бакет объектного хранилища)
DISCOURSE_S3_ACCESS_KEY_ID: (говорит само за себя)
DISCOURSE_S3_SECRET_ACCESS_KEY: (говорит само за себя)
DISCOURSE_S3_CDN_URL: (используйте URL CDN, который подтягивает данные из URL вашего бакета Hetzner)
Буду следить за работой в течение следующих нескольких недель/месяцев на моём тестовом сервере, но пока всё отлично.
Просто хочу отметить, что это уже не так — Cloudflare исправила эту проблему, и теперь бакеты R2 совместимы с S3. У меня есть внешние резервные копии в Cloudflare R2, и я только что успешно выполнил полное восстановление на другой сервер. (К тому же это бесплатно до 10 ГБ в месяц).
Вам понадобятся имя бакета (для s3 backup bucket), access key ID, secret access key и конечная точка, специфичная для юрисдикции из объектного хранилища Cloudflare R2, чтобы ввести их в настройках S3 для Discourse или в файлах app.yml/web_only.yml и т. д.
Это отличные новости! Кто-нибудь должен отредактировать исходный пост соответствующим образом.
я не знаю, как работает обновление документации (новенькой или нет) — вроде бы она где-то здесь хранится? discourse/docs at main · discourse/discourse · GitHub, но я не вижу документации по самостоятельному размещению. всё равно, я вижу ссылку на предлагаемые правки на странице редактирования вики. я предложу обновление.![]()
редактирование: обновление для объектного хранилища Cloudflare R2 отправлено