Using Plone as internal CMS and publish to external sites without Plone possible?

I am relatively new to Plone, and have noticed the Volto frontend, and wonder if it work in a stand-alone form? The idea is as follows; have Plone only on the intranet, possibly not always online, and whenever content is set to be published/unpublished, push/remove the content to/from the external webserver(s).

If so, what would be the requirements on the external webserver?

@datakurre has been working on something which would export to Gatsby: gatsby-source-plone - npm

@tmassman was also working on an different approach for exporting ...I can not recall details.

Apart from that: there is collective.exportimport which allows you to export all Plone content or by-content-type as JSON.

A little lower level than @zopyx - look into triggering events on your workflow transitions. This might be a simple hook that gives you a lot of customization power.

Events — Plone Documentation v5.2 (then read upwards)

Once I had that hook in there, I'd then use collective.exportimport and/or other tools to make that event handler code as simple as possible.

Focusing now on your actual question:

The external Webserver needs to grant write permission to the Intranet Plone instance. This is a very broad, very abstract thing, and it's obvious. But HOW you grant that permission is a key question, and since all you have to answer is "how" I would really build this from the external webserver side and then customize Plone to work with that solution.

For example, and ONLY EXAMPLE, you could allow the external webserver to only allow SFTP (or is it FTPS?) by ssh-key and drop ready-made, cooked html files onto it that plone generates.

Or you could install Gatsby on the external site and use the plugin that @zopyx suggests, securing up the api that grants the plone instance write access.

You could open an MySQL instance and grant access to write directly to a database (yeah, probably not a good idea)

The fact is, once you hook into the event system in Plone, you can do anything you can script up. So work that external webserver problem really well, then make Plone adjust to it.

It's optimal to use a REST API on the destination system, of course....

Good luck!

That sounds like a good idea.

RestAPI is good, but you could also consider to have Plone 'both places', then you maybe could also use plone.api from a script ? A Plone API — Plone Documentation v5.2

1 Like