This section covers the different software components that make up or are used by the Gentics Content Management Platform.
The information in this section is structured according to different software packages and is grouped into logical components. The following sections will first describe how these logical components communicate with each other on a higher level, followed by information about how the communication works within a logical component.
Note that Elasticsearch is mentioned in the CMS component as well as the Mesh component. Both use Elasticsearch to index data that needs to be searchable. The index names created by Gentics Mesh and the Gentics CMS are distinct, so it is possible to use the same Elasticsearch instance (or cluster) for both the Gentics CMS and Gentics Mesh (this depends on the requirements and restrictions of the project setup, e.g. network topology, availability, etc.).
Gentics CMS communicates with the Gentics Mesh Content Repository in order to publish content, and with Keycloak for authentication. All communication with Gentics Mesh and Keycloak takes place via their respective REST APIs over HTTP or HTTPS. Communication is always initiated by Gentics CMS.
Gentics Portal communicates with Gentics Mesh to load content (published by Gentics CMS), and with Keycloak for authentication. All communication with Gentics Mesh and Keycloak is performed using their respective REST APIs over HTTP or HTTPS. Communication is always initiated by Gentics Portal to Gentics Mesh/Keycloak
The most common use case of external applications in a Gentics Content Management Platform project will be client side JavaScript applications, but project specific internal applications which automate tasks in Gentics CMS or Gentics Mesh are also possible.
Loading data from Gentics Mesh (in particular content published by Gentics CMS) is the main reason for the Gentics Portal to communicate with Gentics Mesh. While all the communication is via the Gentics Mesh’s REST API, there are two ways to load data stored in Gentics Mesh:
The first method has to be used for all write operations (creating, updating or deleting a node). For read operations, using this method can still be the best options, when the UUID (or the unique path) of the entity is already known, and there is only one entity to load.
For all other reading requests a GraphqQL query might be the better solution, since the query language offers a very flexible way to specify filters, load additional languages, select which parts of the node are of interest, or make use of parent/child relationships between nodes.
Both Gentics Portal | php and Gentics Portal | java use GraphQL heavily to load page contents or navigation information (among others).
The Gentics CMS backend server uses the JDBC[2] driver and mysqli to communicate with the configured database, using TCP.
Communication with Elasticsearch takes place via Elasticsearch’s REST API over HTTP.
Like Gentics CMS, Gentics Mesh makes use of Elasticsearch’s REST API.
Keycloak uses TCP and JDBC to communicate with its configured database.
External applications usually do not have to communicate with anything else but the Gentics CMS, Gentics Mesh and the Gentics Portal, which have been outlined above.
It is paramount that, before you start installing the software, the required network connectivity between the components of the Gentics Content Management Platform, the users and other applications is assured. The following list is meant to be a starting point for your network setup. The port numbers mentioned are the default ports; your setup might differ. If you deploy load balancers for certain components, you need to extend the list accordingly.
Source | Destination | Protocol/Service |
---|---|---|
Gentics CMS instances | other Gentics CMS instances | full TCP & UDP connectivity |
Gentics Mesh instances | other Gentics Mesh instances | full TCP & UDP connectivity |
Elasticsearch instances | other Elasticsearch instances | full TCP & UDP connectivity |
Website visitors | Gentics Portal instances | HTTP/HTTPS |
Website visitors | Keycloak instances | HTTP/HTTPS |
CMS users | Gentics CMS instances | HTTP/HTTPS |
Gentics CMS instances | database instances | check with your database vendor |
Gentics CMS instances | Gentics Mesh instances | HTTP/HTTPS |
Gentics CMS instances | Gentics Portal instances | HTTP/HTTPS |
Gentics CMS instances | Elasticsearch instances | 9200 - 9300 |
Gentics CMS instances | secure.gentics.com | HTTP/HTTPS |
Gentics CMS instances | updates.gentics.com | HTTP/HTTPS |
Gentics Mesh instances | Keycloak instances | HTTP/HTTPS |
Gentics Mesh instances | Elasticsearch instances | 9200 - 9300 |
Gentics Portal instances | Gentics Mesh instances | HTTP/HTTPS |
Gentics Portal instances | Keycloak instances | HTTP/HTTPS |
For monitoring, Gentics Mesh and Gentics Portal | java allow you to specify a separate port/IP address, while Gentics CMS allows to to configure an IP address whitelist that is allowed to access the monitoring endpoint.
Please also consider that your continuous integration pipeline will need to access all components of the Gentics Content Management Platform via HTTP/HTTPS and also needs access to the filesystem.
1. Unlike the frontend portal, the CMS and Content Repository components are usually not accessible from the outside.
2. Java Database Connectivity