Закрытие форума (НЕ удаление)

Всем привет,

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

Буду очень признателен за вашу помощь. Спасибо!

Вы рассматривали возможность перевода вашего сайта в режим только для чтения? Эта опция находится в разделе «Резервные копии» настроек администратора your-site-name/admin/backups. Это переведёт ваш сайт в режим только для чтения, и пользователи не смогут, например, публиковать сообщения.

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

Если вы не можете или не хотите этого делать, то, как было предложено, можно перевести его в режим только для чтения.

Также можно выполнить ./launcher stop app, чтобы остановить контейнер.

Привет, Онджей,

Спасибо за ответ. Я прочитал об этом, но это всё равно не мешает пользователям заходить на форум, что уже создаёт проблему, так как в настоящее время он не защищён (нет https в начале ссылки, то есть нет сертификата безопасности).

Если ваша цель — вернуть систему в работу, как только у вас появится время разобраться с SSL, я бы сначала попробовал использовать встроенные шаблоны SSL. Discourse значительно упрощает получение и настройку сертификатов Let’s Encrypt, поэтому имеет смысл попробовать этот вариант, прежде чем отключать систему.

Если вы хотите попробовать, удалите символ # со второй и третьей строк в начале файла app.yml:

## Раскомментируйте эти две строки, если хотите добавить Lets Encrypt (https)
  #- "templates/web.ssl.template.yml"
  #- "templates/web.letsencrypt.ssl.template.yml"

Затем найдите строку #LETSENCRYPT_ACCOUNT_EMAIL: me@example.com ниже в том же файле, снова удалите # и замените пример адреса электронной почты на ваш реальный.

Наконец, пересоберите Discourse, и система должна получить сертификат Let’s Encrypt, настроить HTTPS и перенаправлять весь трафик с HTTP.

cd /var/discourse
./launcher rebuild app

Как вы установили Discourse?

К сожалению, я не знаю, как установить Discourse или как это работает в целом. Мой отец создал форум для своего бизнеса, но в этом году ушел из жизни. У нас есть сервер у Linode, и возможно, что Discourse установлен на нём.

Спасибо, Саймон, за подробное объяснение. Мой отец создал этот сайт, но в этом году он скончался. Я не знаю, как установить и настроить Discourse, и вообще мало разбираюсь в веб-сайтах. Где найти файл appl.yml? Установил ли мой отец Discourse на наш доменный сервер? Мы используем Linode, и там есть «Linode» с названием «Discourse». Я просто не понимаю, что это значит и как получить доступ к установке. Спасибо за вашу помощь.

Сочувствую вашей утрате. :pray:

Прежде всего, настоятельно рекомендую убедиться, что для вашего Linode с «Discourse» включена функция «резервного копирования». Это должен быть ваш первый и немедленный шаг.

Во-вторых, убедитесь, что резервное копирование Discourse также включено по адресу https://yoursitedomain.com/admin/backups

В-третьих, вы можете попробовать запустить обновление из панели администратора прямо в веб-браузере, так как это может решить вашу проблему: https://yoursitedomain.com/admin/upgrade

Это ужасно. Мне очень жаль это слышать. Если вы не знаете, как подключиться к этому серверу через SSH, самое простое — сделать резервную копию, выполнить чистую установку и восстановить эту копию там.

Если у вас есть доступ к серверу через SSH, вы можете выполнить команды, описанные здесь.

Теоретически они должны иметь возможность сбросить пароль SSH для Linode:
https://www.linode.com/docs/guides/accounts-and-passwords/#resetting-the-root-password

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

Я не уверен, что согласен с этим. По умолчанию, согласно включённому образцу app.yml, не используются шаблоны web.ssl или web.letsencrypt.ssl, и отсутствие перенаправления HTTP, о котором упоминает @Mads, говорит о том, что это значение по умолчанию сохранено, то есть SSL никогда не был включён.

Это выглядит многообещающе как сервер, на котором размещён Discourse. Если вы всё же хотите отключить его, вы можете просто выключить этот Linode, но в зависимости от того, как он был настроен, на этом сервере могут быть и другие вещи.

Как сказал @sdpiowa, вы можете сбросить пароль, следуя описанию по ссылке, которую он предоставил. Прокрутите страницу в самый низ до раздела «Сброс пароля root». Вам не нужно этого делать, если у вас уже есть пароль root для этого сервера.

С паролем root под рукой самый простой способ получить доступ к серверу — использовать консоль LISH в облачном менеджере Linode.

https://www.linode.com/docs/guides/using-the-lish-console/

На последнем шаге, когда вы увидите login: в консоли, введите root и нажмите Enter, затем введите пароль и снова нажмите Enter. После этого у вас должен быть доступ к оболочке, и вы сможете выполнять команды на сервере. Обратите внимание, что здесь следует быть очень осторожным и не допускать ошибок: скорее всего, ошибка приведёт только к сообщению об ошибке и ничего не произойдёт, но ошибки в оболочке root могут иметь разрушительные последствия.

Прежде чем продолжить, обязательно создайте резервную копию Discourse вручную, а после её завершения сделайте ручную снимок (snapshot) в облачном менеджере Linode. Таким образом, у вас будет всё необходимое для восстановления в случае чего-то непредвиденного.

Начните с перехода в нужную директорию:

cd /var/discourse

Образы Linode обычно имеют установленный nano — это довольно простой текстовый редактор. Отредактируйте файл app.yml:

nano containers/app.yml

Скорее всего, вы не сможете использовать мышь для перемещения курсора, поэтому используйте стрелки для навигации по файлу и внесите описанные ранее изменения. Когда закончите, нажмите CTRL+X, чтобы выйти. Система спросит, хотите ли вы сохранить изменения — нажмите Y для подтверждения. Затем вас спросят имя файла — просто нажмите Enter, и файл будет сохранён, а nano закроется.

Наконец, пересоберите Discourse и не закрывайте окно LISH после запуска:

./launcher rebuild app

Если всё пройдёт успешно, через 10–20 минут Discourse снова будет работать с SSL.

Прошло уже довольно много времени с тех пор, как HTTPS был включён по умолчанию. Скорее всего, операционная система также вышла из срока поддержки.

На мой взгляд, самым простым и безопасным решением для новичка будет чистая установка, но вы щедро предоставили инструкции, которые, вероятно, помогут ему разобраться с этим!

Спасибо всем за вашу помощь и подробные объяснения! Возможно, я нашёл человека, который сможет помочь мне с этим, и обязательно покажу ему ваши советы. Я очень это ценю :slight_smile:

Вы все потрясающие!

Спасибо за всю эту информацию.

Здесь Мэтт, помогаю Мэдс. Я довольно опытный системный администратор, хорошо чувствую себя в *nix, Docker заставил меня копать чуть глубже, но я справился.

В логе Letsencrypt было написано:

The CA is processing your order, please just wait. (1/30)
community.fruityknitting.com:Verify error:Fetching https://community.fruityknitting.com/.well-known/acme-challenge/9NEyZhZzZQ9FwGrqGqDNblLiwtOQQGlYr-9nSFUwKhw: Connection refused**

В конфигурации Nginx было немедленное перенаправление с порта 80 на https, и, как я полагаю, Эндров настроил проверку валидности учётной записи через Patreon в Discourse. Это перенаправление с порта 80 вместе с перенаправлением Patreon, вероятно, помешало Letsencrypt проверить локальный файл.

Я отключил перенаправление Nginx на порт 80, перезапустил Nginx и снова выполнил:

/shared/letsencrypt/acme.sh --cron --home /shared/letsencrypt

и всё получилось.

Очень ценю все ваши полезные комментарии.

Всего наилучшего.

Перенаправление Patreon не было на https?

Кажется, речь о Роберте, если точнее:

Безусловное перенаправление Nginx с порта 80 на 443, после чего приложение Discourse сразу пересылает запрос на Patreon для проверки сессии, cookie или чего-то подобного, как я полагаю…

Этого достаточно, чтобы нарушить валидацию Let’s Encrypt.

Звучит правильно?

Полагаю, это стандартная настройка для принудительного использования HTTPS для всего трафика, поступающего через HTTP.

Вся история с Patreon звучит немного «странно»?

Что именно оно пытается сделать, чего нельзя было реализовать на уровне приложения полностью через HTTPS?

Почему обратный прокси должен об этом заботиться?

Попробуй, Роберт…
https://community.fruityknitting.com/