Integración de Ghost Discourse

Estoy teniendo dificultades para establecer una integración entre Ghost y Discourse.

Discourse es: 2.8.0.beta1, Docker en Ubuntu, sin nginx.

Estoy usando Traefik en un sistema independiente detrás de un único enrutador IP, en una red doméstica con NAT. Traefik permite el enrutamiento HTTP/HTTPS.

Traefik está configurado con un archivo traefik_dynamic.toml en lugar de etiquetas de Docker. No hay una red Docker compartida. (Si alguien está interesado en la configuración de Traefik, por favor escríbeme; funciona bastante bien como proxy inverso).

Ghost también está en su última versión (4.6.4) y se ejecuta en un host separado (ambos hosts son máquinas virtuales Ubuntu, VERSIÓN=“20.04.2 LTS (Focal Fossa)”, ejecutándose en Proxmox).

He seguido la variedad de páginas de tutoriales disponibles en el sitio de documentación de Ghost y en el foro de Discourse.

Las herramientas de desarrollador de Firefox indican que la página devuelve el siguiente código fuente:

<div class="comment container small">

<div class="discourse-comments"></div>
    <script type="text/javascript">
     if (window.location.pathname.indexOf('/p/') < 0) {
      DiscourseEmbed = { discourseUrl: 'https://discourse.mydomain/', discourseEmbedUrl: 'https://ghost.mydomain/testing-new-stuff/' };

  (function() {
    var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true;
    d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js';
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);
  })();
}
</script>
</div>

Pero no se devuelven comentarios reales. Puedo ver que mi host de Discourse devuelve embed.js, pero nada en la página. (Lo siento, no soy un desarrollador web).

Parece que el script está llegando pero no devuelve nada.

Es una instalación nueva de Discourse y aún está en modo de entrenamiento (modo de arranque). Así que apenas hay temas todavía.

El archivo app.yml se adjunta a continuación.

Creo que la configuración del host incrustado está bien, con el usuario administrador de Discourse como nombre de usuario para la creación de temas; la lista de permitidos de rutas (path allowlist) actualmente es “”.
Creé una categoría llamada “testing” y se agregó a “Publicar en categoría”.

También agregué DISCOURSE_ENABLE_CORS: true a app.yml porque eso podría ayudar. Añadí el proxy y http://ghost.mydomain y http://ghost.mydomain a los orígenes CORS.

¿Alguien puede ofrecer consejos sobre cómo podría depurar esto?

app.yml:
#
templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Descomenta estas dos líneas si deseas agregar Lets Encrypt (https)
#  - "templates/web.ssl.template.yml"
#  - "templates/web.letsencrypt.ssl.template.yml"

## ¿Qué puertos TCP/IP debe exponer este contenedor?
## Si deseas que Discourse comparta un puerto con otro servidor web como Apache o nginx,
## consulta https://meta.discourse.org/t/17247 para obtener detalles
expose:
  - "8081:80"   # http
    #  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Establece db_shared_buffers en un máximo del 25% de la memoria total.
  ## se establecerá automáticamente por bootstrap según la RAM detectada, o puedes sobrescribirlo
  db_shared_buffers: "2048MB"

  ## puede mejorar el rendimiento de ordenación, pero añade uso de memoria por conexión
  #db_work_mem: "40MB"

  ## ¿Qué revisión de Git debe usar este contenedor? (por defecto: tests-passed)
  #version: tests-passed

env:
 LC_ALL: en_US.UTF-8
  LANG: en_US.UTF-8
  LANGUAGE: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en

  DISCOURSE_ENABLE_CORS: true

  ## ¿Cuántas solicitudes web concurrentes se admiten? Depende de la memoria y los núcleos de CPU.
  ## se establecerá automáticamente por bootstrap según los CPUs detectados, o puedes sobrescribirlo
  UNICORN_WORKERS: 2

  ## TODO: El nombre de dominio al que responderá esta instancia de Discourse
  ## Obligatorio. Discourse no funcionará con un número IP desnudo.
  DISCOURSE_HOSTNAME: mydiscoursehost.mydomain

  ## Descomenta si quieres que el contenedor se inicie con el mismo
  ## nombre de host (opción -h) que se especificó arriba (por defecto "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: Lista de correos electrónicos separados por comas que serán administradores y desarrolladores
  ## en el registro inicial, ejemplo 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'myemailaddress@mydomain'

  ## TODO: El servidor de correo SMTP utilizado para validar nuevas cuentas y enviar notificaciones
  ## Se requieren dirección SMTP, nombre de usuario y contraseña
  # ADVERTENCIA: el carácter '#' en la contraseña SMTP puede causar problemas!
  DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: postmaster@mydomain
  DISCOURSE_SMTP_PASSWORD: "mypostmasterpassword7"
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (opcional, por defecto true)
  DISCOURSE_SMTP_DOMAIN: mydomain
  DISCOURSE_NOTIFICATION_EMAIL: noreply@mydomain

  ## Si agregaste la plantilla de Lets Encrypt, descomenta abajo para obtener un certificado SSL gratuito
  #  LETSENCRYPT_ACCOUNT_EMAIL: notused

  ## La dirección del CDN http o https para esta instancia de Discourse (configurada para extraer)
  ## consulta https://meta.discourse.org/t/14857 para obtener detalles
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com
 
  ## La clave de dirección IP de geolocalización de Maxmind para la búsqueda de direcciones IP
  ## consulta https://meta.discourse.org/t/-/137387/23 para obtener detalles
  #DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456

## El contenedor de Docker es sin estado; todos los datos se almacenan en /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Los plugins van aquí
## consulta https://meta.discourse.org/t/19157 para obtener detalles
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

## Cualquier comando personalizado para ejecutar después de la compilación
run:
  - exec: echo "Beginning of custom commands"
  ## Si quieres establecer la dirección de correo electrónico 'De' para tu primer registro, descomenta y cambia:
  ## Después de recibir el primer correo de registro, vuelve a comentar la línea. Solo necesita ejecutarse una vez.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "End of custom commands"