Unable to embed local Discourse to local Ghost instance

Hey there,
I wanted to try out Discourse on a local ghost installation.

Basically I’ve set up everything in the easiest way possible; I’ve followed the “Beginners Guide to Install Discourse for Development using Docker” and set up Ghost using its CLI.

Ghost runs on localhost:2368, Discourse on localhost:9292

I’ve added localhost:2368 to the Customize/Embedding allowed hosts (without any settings like class name, path allowlist or post to category).

After adding the code snippet (and ofc properly replacing placeholders) I do have an embed of Discourse which says “Loading discussion…” - but after a few seconds logs a console error

Failed to execute ‘postMessage’ on ‘DOMWindow’: The target origin provided (‘http://localhost:9292’) does not match the recipient window’s origin (‘http://localhost:2368’).

What am I missing here?

Thanks!

2 Likes

(Not an expert or team)

You get that error if the iframe has not loaded.

When you added localhost:2368 to the allowed hosts, try with or without a slash at the end, as well as with wildcards.

What’s happening is that it might load the page, but none of the content which links outside of it, causing this breakdown of loading.

Nonetheless, I was actually very interested in trying out ghost soon. So I’ll watch this topic and hope this is the only issue you experience with it. :slight_smile:

1 Like

Unfortunately I haven’t found a solution so far :frowning:

1 Like

It sounds like you are trying to run a production instance at a non standard port? This is not supported in Discourse.

2 Likes

Production instance? I followed the guide the install Discourse locally for development - shouldn’t this be the proper installation for local use? The installation works flawlessly, just the embedding is causing troubles.

1 Like

I think you will need to find a way to test this using actual hostnames and not ports.

2 Likes

Guess I’ll try to setup a proxy with nginx then, thanks.

1 Like

I’ve tried adding two nginx proxies, one for Ghost and one for Discourse, running at ghost.localhost and discourse.localhost. After changing all the URLs to the proxies the error has become:

Failed to execute ‘postMessage’ on ‘Window’: Invalid target origin ‘’ in a call to ‘postMessage’.

When using http://localhost:9292/ for the discourseUrl instead of http://discourse.localhost/ there’s no more error, but the comments are stuck in an endless loop (“Loading discussions” forever and doing some requests every few seconds).

The nginx configurations are fairly simple:

server {
  listen 80;
  server_name discourse.localhost;

  access_log /var/log/nginx/discourse.localhost-access.log;
  error_log /var/log/nginx/discourse.localhost-error.log;
  
  location / {
    proxy_pass         http://127.0.0.1:9292;
    proxy_set_header   X-Forwarded-For $remote_addr;
    proxy_set_header   Host $http_host;
  }
}

Respectively ghost instead of discourse for the ghost configuration.