Приложение Defaultish не собирается заново

Привет! Я настроил стандартный Discourse на машине с Linux, используя это руководство. Всё прошло очень гладко, и сайт запустился без проблем.

Я решил разрешить пользователям подключаться через Facebook, поэтому прошёл по инструкциям от Facebook, на которые есть ссылка в вышеупомянутом руководстве (снова ссылку дать не могу, так как новые пользователи, видимо, могут публиковать только две ссылки). В итоге это не сработало, но сам сайт продолжал работать (я не помню точную ошибку, возникшую при попытке входа через Facebook).

Изучая документацию Facebook, я заметил, что необходимо включить HTTPS, поэтому начал следовать этим инструкциям. Всё шло хорошо, пока не дошло до команды ./launcher rebuild app, где возникла ошибка PostgreSQL. Это меня удивило, так как я ничего не менял в конфигурации PostgreSQL (насколько мне известно). Первая ошибка выглядит так:

INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
rake aborted!
PG::ConnectionBad: could not connect to server: No such file or directory
	Is the server running locally and accepting
	connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

Я не останавливал службу PostgreSQL, но попытался запустить service start postgres, и система сообщила, что она не установлена. Предполагаю, что она устанавливается автоматически каким-то другим способом, к которому я не привык. Есть ли у кого-нибудь идеи, что я мог сделать неправильно? Спасибо.

Мой файл container/app.yml:

templates:
  - "templates/web.template.yml"
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"

expose:
  - "80:80"   # http
  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  db_shared_buffers: "128MB"

env:
  LANG: en_US.UTF-8
  LETSENCRYPT_ACCOUNT_EMAIL: 'myotheremail@gmail.com'
  UNICORN_WORKERS: 2

  DISCOURSE_HOSTNAME: mysite.com

  DISCOURSE_DEVELOPER_EMAILS: 'myemail@gmail.com'

  DISCOURSE_SMTP_ADDRESS: smtp.gmail.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: myemail@gmail.com
  DISCOURSE_SMTP_PASSWORD: "myPa$$word"

  ## The http or https CDN address for this Discourse instance (configured to pull)
  ## see https://meta.discourse.org/t/14857 for details
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

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: echo "End of custom commands"

Если вы следовали официальному руководству, HTTPS должен был быть настроен автоматически. Обратите внимание на самое начало указанного вами руководства:

Да, это верно. И я следовал этим инструкциям. Сначала я перешел к руководству по подключению через вход в Facebook, но сомневаюсь, что проблема в этом. Я прошел по руководству, которое вы опубликовали, перешел к HTTPS, и теперь у меня возникают проблемы, перечисленные выше.

Хорошо, давайте на минуту остановимся и соберёмся с мыслями.

Вам понадобятся только эти два руководства:

Это руководство вам не нужно, так как HTTPS включён по умолчанию:

Если возможно, начните всё заново, а затем сообщите о любых ошибках, которые возникнут при попытке входа через Facebook.

Хорошо, когда я закончил первый гайд, сайт уже был доступен, но без HTTPS. Я предположил, что HTTPS появится только после его включения. Я ещё раз пройдусь по инструкциям — возможно, я что-то не так понял — и затем сообщу вам.

Хорошо, я снова запустил приложение, но в этих инструкциях я не вижу ничего, что могло бы настроить сайт на HTTPS, поскольку здесь нет упоминания о сертификатах, кроме метода Let’s Encrypt в самом низу. Что я упускаю? Можете указать, где именно в этих инструкциях настраивается HTTPS?

Всё происходит незаметно для вас. Когда вы вводите свой адрес электронной почты на последнем этапе настройки:

Скорее всего, я нажал ENTER, чтобы пропустить шаг, даже не заметив этого. Если так, то лучше ли просто перезапустить конфигурацию или следовать инструкциям Let’s Encrypt? Учитывайте, что на сайте уже есть немного контента, и я не хочу его потерять. (Ещё раз спасибо за помощь)

Просто снова выполните команду discourse-setup и укажите адрес для Let’s Encrypt.

Какая замечательная функция. Я чувствую себя таким глупым, что не заметил этого в первый раз. Спасибо вам обоим и команде за реализацию.

Может быть, есть способ изменить слова, которые помогли бы вам понять это раньше?

Думаю, что да. У меня довольно большой опыт работы с серверами, но я не был особенно активен с момента появления Let’s Encrypt, поэтому просто предположил, что в документации будет раздел о получении сертификата, если это можно сделать «из коробки». Поскольку такого раздела не было, я решил, что это нужно делать отдельным шагом. На той странице вообще ничего не упоминает Let’s Encrypt, кроме вывода команды ./disource-setup. Возможно, стоит добавить в раздел «Редактирование конфигурации Discourse» (перед запуском команды) указание: если вы хотите использовать HTTPS, то необходимо заполнить поле Let’s Encrypt. Я знал, где искать информацию о HTTPS, но не нашёл ни одного совпадения по строке «https» (используя Ctrl+F), поэтому предположил, что этого там нет. Я искал «https» и «cert», и поскольку ничего не нашёл, решил, что это отдельный процесс.

Честно говоря, если бы я чаще занимался хостингом веб-сайтов, я бы наверняка сразу заметил Let’s Encrypt и понял, что происходит. Возможно, стоит добавить раздел «Что вам понадобится», включающий, например, адрес электронной почты для Let’s Encrypt?

Не хочу, чтобы это звучало как оскорбление: документация отличная, а проблема возникла из-за человеческой ошибки (моей собственной).

Справедливо. Какие слова?

Не знаю, видели ли вы остальную часть моего ответа, но, возможно, я просто открою PR с исправлениями, которые, как мне кажется, будут полезны. Но действительно было бы хорошо просто упомянуть, что в документации учтены сертификаты.

А, так в документации по установке в облаке это неясно? Похоже, что так.

Я посмотрю на формулировки в разделе discourse-setup, чтобы понять, стоит ли сделать более понятным, что такое Let’s Encrypt. Действительно, не следует предполагать, что пользователь это знает.

Спасибо