Running locally with a remote DB

so if I needed to run the instance locally but with a remove server on the cloud, is this the config to achieve this:
I couldn't find clear documentation for this case

[zeoserver]
<= zeoserver_base
recipe = plone.recipe.zeoserver
zeo-address = 127.0.0.1:8100

I suppose that the "remote server" should be ZEO. In this case, 127.0.0.1 is not correct: it is the IP address of the local network and not accessible from outside. You would need the IP address of the external network or use a wildcard (to indicate any network).

It might be possible that the configuration supports DNS (= "Domain Name Service) names. In this case, you could replace 127.0.0.1 by the name of your host (the host name is typically mapped to the IP address of the external network).

I currently do not know the correct wildcard notation: it might be empty or *. Either try out the option or look through the documentation (of plone.recipe.zeoserver or the ZEO server XML schema.

Note that making your ZEO accessible from the outside poses a security risk. You likely want to require authentication for access to it.

thank you so much for answering @dieter
I just copied that part from he config documentation so yeah I will change this for sure. I actually tried the following config and it worked:
server 1 (remote ZEO):

[zeoserver]
<= zeoserver_base
recipe = plone.recipe.zeoserver
zeo-address = [0.0.0.0:8000](http://0.0.0.0:8000/)
pack-days = 3

local installation (local client):
[client]
<= client_base
recipe = plone.recipe.zope2instance
zeo-address = server 1 IP:8000
http-address = 8080

The problem is that the client now is VERY slow, am I missing anything with this setup?

All ZEO communication now goes over the internet -- this is significantly slower than local communication. You might alleviate a bit by caching. There are 2 caches: the connection (aka "pickle") cache (configured at the database level) and the "ZEO client storage" cache (configured at the zeoclient level).

ZEO clients and ZEO server should run on the same network or same datacenter.
Running Plone in a distributed environment does not make sense due to network latency.
Having your ZEO server somewhere on the internet, separated from the clients will never lead to a decent performance of the overall system.

May I ask for your usecase? Why do you want to access an online ZODB from a local client?

Is it for testing? If so, a copy of the database would be the preferred way to go. To get a copy you can use collective.recipe.backup · PyPI and create a zipbackup (same as snapshot but already generates a downloadable archive of the blobs) and restore it locally.

Do you want to test some local changes with the production data? Then you can create a local secondary zeoserver with zc.zrs · PyPI which automatically synchronizes with the primary server. Keep in mind that a secondary server is always started in read-only mode. But once synchronized you can detach it and make it the primary zeoserver in your local setup.

If all you want to do is work with the database and edit content, use a remote zeo client because of the latency problems @zopyx mentioned.