I have n8n and grist installed through docker on a server. They both works fine by their own, but I cannot use n8n to communicate with grist.
n8n address is :5678 and grist’s one is :8484. Again, I can connect to both and use them by their own, but when I try to set up a grist connection in n8n, it fails (actually it goes in time out).
If I use the public address (or the ip like http://...:8484), the connection got saved and the testing if failing with the error connect ETIMEDOUT ***.***.***.***:8484
I add that: I can connect to other services, like Airtable or postgres, for example. So, I think the problem is with grist itself.
Are these screenshots from the public grist, or from your local grist container?
It seems a simple access (firewall for instance or port forwarding) problem.
n8n should be able to connect over the network using grist:8484 as Docker will resolve the “grist” DNS name.
The public HTTP address should also resolve to the server grist/n8n are running on. Or at least if it is local, the local DNS.
The screenshots are from n8n’s connection setup popup.
I agree, n8n should be able to resolve grist:8484, but I think it won’t even try, since it thinks grist: is the protocol.
I tried with http://grist:8484 and it says the domain is not recognized.
I also tried with the local ip from doker network http://172.18.0.3:8484, with the same result.
From grist’s log seem that everything’s fine.
From n8n’s, i see the errors:
404 - {"error":"Domain not recognized: 172.18.0.3"}
Unsupported protocol grist:
404 - {"error":"Domain not recognized: grist"}
connect ETIMEDOUT ***.***.***.***:8485
browserId check failed on /rest/events/session-started
browserId check failed on /rest/login
connect ETIMEDOUT ***.***.***.***:8484
That needs a local DNS (or an entry in your hosts file) that points to the IP address of the server. As you use portmapping, that should work if n8n really uses that port setting, and does not default to port 80.