Unable to connect Discourse and WordPress

I’m facing an issue while connecting Discourse to WordPress using the Discourse Plugin. I’m running Discourse on a Digital Ocean droplet. The setup was performed exactly as mentioned here (https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md). The droplet itself sits behind CloudFlare and HTTPS was setup using Let’s Encrypt (using Setting up HTTPS support with Let's Encrypt). The WordPress site is deployed on SiteGround, also behind CloudFlare.

When I add the forum’s root address, API key and administrator username in the plugin settings, in WordPress’ console, it still keeps saying “You’re not connected to Discourse”. Upon further investigating I’ve found that this particular request /site.json%20?api_key=[FILTERED]&api_username=<username> is returning 403 Forbidden even with a fresh, valid API Key and a valid administrator username.

1 Like

The request to site.json is checking that an API request can be made with the values supplied for the API Key and Publishing Username that are set on WordPress. If you make the request with curl from your local computer, is it working for you? For example, this request with $api_key set to your API key:

curl -X GET 'https://forum.example.com/site.json?api_key=$api_key&api_username=system'

If this is woking for you, you could try installing the WordPress Health Check plugin and looking at the Secure communication row on the Site Status tab to see if it’s finding any issues with communicating with external services using secure connections (SSL.)

3 Likes

This curl command works perfectly fine

curl -X GET "https://community.worldbrain.io/site.json%20\?api_key\=blabla\&api_username\=bla"

Health Check mentions Your WordPress install can communicate securely with other services.

Here is what I’m seeing in HTTP API Calls section

Of course the forum itself is working so it’s pretty bizarre to see Could not resolve host

Can I ask how have you installed SSL on your discourse? Is it a generic cloudflare certificate or something?

Edit:
Indeed it’s cloudflare https://www.whynopadlock.com/results/df748a55-67d9-4477-9502-c618b69cb38c

And I’m assuming you’re running their “Flexible” SSL mode. This explains a lot about why the calls are messed up.

3 Likes

I got the same error. Please help!

I do that and got this :

curl -I GET 'https://forum.fususu.com/users/mrsusu.json?api_key=[secretapi]&api_username=mrsusu'

HTTP/1.1 403 Forbidden
Server: CloudFront
Date: Sat, 29 Jun 2019 19:00:27 GMT
Content-Type: text/html
Content-Length: 556
Connection: keep-alive
X-Cache: Error from cloudfront
Via: 1.1 dfb4b390f0fb83a73bab72d387a3e1dc.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: NRT20-C3
X-Amz-Cf-Id: qO_fq0M_GX8wUuqJFCpBDXL6dlJDkKVWJ-BKOSD6qfegOqdNr_837g==

HTTP/1.1 200 OK
Date: Sat, 29 Jun 2019 19:00:28 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Set-Cookie: __cfduid=de8f93857163fcf3bfca002a5af11f38c1561834828; expires=Sun, 28-Jun-20 19:00:28 GMT; path=/; domain=.fususu.com; HttpOnly; Secure
Vary: Accept-Encoding
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
X-Discourse-Username: mrsusu
X-Discourse-Route: users/show
Cache-Control: no-cache, no-store
X-Request-Id: 2a4e74b8-3be0-47cf-81e9-fc5682e678c5
Set-Cookie: __profilin=p%3Dt%2Ca%3Dee922625e907ef0b48cfd16cc80c816b%7C20b0d8cc0a038e5816c59c085fca59e5; path=/; secure; HttpOnly

X-Runtime: 0.114832
Strict-Transport-Security: max-age=31536000
Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Server: cloudflare
CF-RAY: 4eea24bb28432e07-NRT

My wordpress site fususu.com setup with - ssl flexible (Cloudflare),
with a page rule for the forum forum.fususu.com - full ssl (cloudflare).

1 Like

Have you been able to get this to work?

1 Like

Not yet… I gave up temporarily ^^!

Did you ever get this to work? I have the same setup (Discourse on Digital Ocean, WordPress on Siteground, both behind Cloudflare) and the same error. Curl works without issue from my local machine.

Any advice?

How is your SSL configured at cloudflare side? are you using cloudflare performance optimization on discourse?

You should really be running cloudflare SSL in full mode not flexible
If you have cloudflare performance optimization enabled on discourse, disable it by creating a page rule.

If that doesn’t help, share your discourse domain

3 Likes

URL is https://discuss.guidery.com

Performance and Security are disabled for the “discuss” subdomain via a page rule.
SSL is set to “Full (Strict)”

The error message I am seeing is “cURL error 6: Could not resolve host: discuss.guidery.com” which is being reported by the WP Query Monitor plugin.

Issuing the same cURL command from my local machine works without issue.

is a firewall rule blocking connections on wordpress side?

When I SSH into the shared server (which is hosted by SiteGround) and manually run a curl command to request my discourse install, I receive the same error message;

“curl: (6)” Could not resolve host: discuss.guidery.com".

I even created a new wordpress site, using a new domain (although on the same Siteground server) without Cloudflare operating DNS and received the same error message.

Any other ideas?

Maybe contact siteground if they’re blocking your server IP address for some reason?

1 Like

Solved. This was one of those annoying cases where it just “started working” without a clear solution becoming known. I am going to assume it was a DNS propagation issue and for some reason Siteground’s DNS resolver was slow.

If someone else runs into this problem, my only suggestion is to wait 48 hours and try again. :-/

2 Likes

Another user with a similar issue contacted Siteground. They were able to resolve the problem. This post has the details of how Siteground fixed it: [PAID] Fix cURL error 6 in Discourse WP Plugin - #4 by lucas.bagatini.

1 Like