La aplicación por defecto no se vuelve a compilar

Hola, configuré Discourse predeterminado en una máquina Linux usando esta guía. Todo fue súper fluido y el sitio se levantó perfectamente.

Decidí permitir que los usuarios se conecten mediante Facebook, así que seguí las instrucciones de Facebook enlazadas desde el enlace anterior (no puedo volver a enlazar porque parece que los nuevos usuarios solo pueden publicar 2 enlaces). Eso terminó no funcionando, pero el sitio seguía activo (no recuerdo el error que obtuve al intentar iniciar sesión con Facebook).

Mientras revisaba la documentación de Facebook, vi algo sobre la necesidad de tener HTTPS habilitado, así que comencé a seguir esta documentación. Todo fue bien hasta el comando ./launcher rebuild app, donde obtuve un error de PostgreSQL. Lo cual me sorprendió, porque no había tocado la configuración de PostgreSQL (al menos que yo sepa). El primer error es el siguiente:

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"?

No detuve el servicio de PostgreSQL, pero intenté ejecutar service start postgres y me dijo que no estaba instalado. Así que asumo que se instala automáticamente de alguna otra forma a la que no estoy acostumbrado. ¿Alguna idea de qué podría haber hecho mal? Gracias

mi 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"

  ## La dirección del CDN http o https para esta instancia de Discourse (configurada para extraer)
  ## ver https://meta.discourse.org/t/14857 para detalles
  #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"

Si estabas siguiendo la guía oficial, HTTPS debería haberse configurado automáticamente. Fíjate en la parte superior de la guía a la que enlazaste:

Sí, eso es correcto. Y esas son las instrucciones que seguí. Primero me dirigí a la guía de conexión de inicio de sesión de Facebook, pero dudo que ese sea el problema. Seguí la guía que publicaste y pasé a HTTPS, y ahora tengo los problemas que se enumeran arriba.

Vale, vamos recapitular un momento.

Solo necesitas seguir estas dos guías:

Esta no la sigas, ya que HTTPS está habilitado de forma predeterminada:

Si es posible, te recomendaría empezar de cero y luego informarme de cualquier error que recibas al intentar iniciar sesión con Facebook.

Bueno, cuando terminé la primera guía, el sitio ya estaba en línea, pero no era HTTPS. Asumí que no sería HTTPS hasta que lo activara. Revisaré las instrucciones nuevamente, quizás no entendí algo, y luego les informaré.

Vale, he vuelto a poner la app en marcha, pero no veo en estas instrucciones ningún paso que permita configurar el sitio con HTTPS, ya que no hay nada relacionado con certificados salvo el método de Let’s Encrypt al final. ¿Qué me estoy perdiendo? ¿Podrías indicarme exactamente en qué parte de esas instrucciones se configura HTTPS?

Todo se realiza en segundo plano. Cuando ingresas tu correo electrónico en el último paso de configuración:

Apuesto a que presioné ENTER para omitir sin ni siquiera darme cuenta. Si ese es el caso, ¿sería mejor volver a ejecutar la configuración o seguir las instrucciones de Let’s Encrypt? Teniendo en cuenta que ya tengo un poco de contenido en el sitio y no quiero que se borre. (Gracias de nuevo por tu ayuda)

Simplemente ejecuta discourse-setup nuevamente y proporciona una dirección para Let’s Encrypt.

¡Qué característica tan fantástica! Me siento ridículo por no haberlo notado la primera vez. Gracias a ambos y al equipo por implementarlo.

¿Hubiera habido alguna forma de cambiar las palabras para que lo entendieras antes?

Creo que sí. Tengo bastante experiencia trabajando con servidores, pero no he estado muy activo desde que salió Let’s Encrypt, así que simplemente asumí que habría una sección sobre cómo obtener un certificado en la documentación si eso fuera algo que funcionara sin configuraciones adicionales. Como no la había, asumí que tendría que hacerlo en un paso separado. En esa página no hay nada que mencione Let’s Encrypt, excepto la salida del comando ./disource-setup. Quizás sería bueno mencionar, en la sección de Editar la configuración de Discourse (antes del comando), que si quieres HTTPS, tendrás que ingresar algo en el campo de Let’s Encrypt. Yo sabía buscar en esa página para encontrar información sobre HTTPS, pero no aparecían coincidencias con la cadena

Tienes razón. ¿Qué palabras?

No sé si no pudiste ver el resto de mi respuesta, pero quizás simplemente enviaré un PR con las correcciones que creo que serían buenas. Pero en realidad, solo mencionar que la documentación aborda los certificados sería suficiente.

¡Ah! ¿Entonces la documentación de instalación en la nube no lo deja claro? Eso tiene sentido.

Voy a revisar el lenguaje en discourse-setup para ver si debería aclarar mejor qué es Let’s Encrypt. Es cierto que no debería asumir que el usuario lo sabe.

Gracias.