Не удалось найти руководство по этому вопросу. Однако я хотел бы «интегрировать» Discourse как «приложение» внутри открытой среды совместной работы Nextcloud. Я полагаю, что это делается путём открытия Discourse — своего рода через iframe — как «внешнего сайта» в Nextcloud. Вот мои шаги:
Обратите внимание, что существует своего рода «приложение для интеграции» для использования единого входа (SSO) между Nextcloud и Discourse: Discourse SSO - Apps - App Store - Nextcloud
В Nextcloud перейдите в раздел + Приложения → Интеграция → Discourse SSO. Установите его и включите.
Я выхожу из системы как в Discourse, так и в Nextcloud. Затем вхожу в Nextcloud (используя тот же адрес электронной почты и в Nextcloud, и в Discourse), но не могу успешно открыть «внешний сайт», чтобы отобразить свой форум Discourse.
Я пробовал отключить SSO, но поддомен, на котором расположен мой форум, по-прежнему не открывается в Nextcloud. Однако мой обычный домен открывается.
Вы имеете в виду под CSP облачного провайдера, где размещён мой Discourse?
Ваши ссылки могут работать корректно, а могут и нет — это зависит от того, как веб-браузеры и веб-сайты обрабатывают HTTP и HTTPS URL-адреса, а также от того, что приложение «Внешние сайты» встраивает внешние ссылки в IFrames.
Discourse не работает внутри тега <iframe>, и ваш сервер Discourse отклонит подключение.
Спасибо! Но тогда почему существует приложение «Интеграция SSO», если интеграция невозможна? Есть ли какое-то обходное решение, позволяющее встроить Discourse в iframe?
Редактирование: Я создал пост на форуме Nextcloud. Сообщу, если получу там какие-либо разъяснения.
Хорошо, так что один пользователь на форуме Nextcloud просто подтверждает, что проблема, похоже, в Discourse, так как он не работает в iframe. Быстрый поиск в Google привёл меня к этому проекту на Github, которому уже 4 года:
После того как я отредактировал app.yml для работы с этим плагином, что делать дальше? Нужно ли пересобрать Discourse, чтобы полностью установить его?
Вы можете отправлять сообщения об ошибках и запросы на новые функции на GitHub проекта. Обратите внимание, что он еще не обновлен для версии 20. Нажмите для получения подробностей.
Извините за поздний ответ. Недавно я изучал варианты интеграции Nextcloud и Discourse. Вы, вероятно, уже во всём разобрались, но мне было бы интересно сравнить наши находки. Вы всё ещё используете Discourse и Nextcloud вместе? Если да, поделитесь, пожалуйста, дополнительной информацией: что именно вы пытаетесь реализовать и как это работает на практике? Буду очень признателен!
Да, как вы уже выяснили, Discourse не любит запускаться внутри iframe. Это было так всегда. Обходной путь — использовать собственную гибкую систему темизации Discourse, чтобы добавить заголовок, соответствующий вашему основному сайту. Затем вы можете использовать систему темизации Nextcloud, чтобы при необходимости обновить его для соответствия. В настройках администратора Nextcloud для внешних сайтов выберите опцию redirect; это означает, что сайт не позволяет встраивание. Ссылка на Discourse будет открываться в той же вкладке браузера, без iframe.
Приложение Nextcloud discoursesso, о котором вы упоминаете, предназначено для аутентификации пользователей вашего сайта Discourse через Nextcloud. Похоже, вы настраиваете его правильно. Вам просто нужно перейти по URL-адресу вашего сайта Discourse и попытаться войти в систему — вы увидите, что вход выполнен с использованием учётных данных Nextcloud.
Обратите внимание: в Discourse функция Discourse SSO была переименована в Discourse Connect. Включение этой функции полностью заменит все другие варианты входа на вашем сайте Discourse, поэтому используйте её с осторожностью.