docker run -p 8080:8080 gentics/mesh-hsqldb
or
docker run \
-v mesh-uploads:/uploads \
-p 8080:8080 \
gentics/mesh-hsqldb
Here you will find everything to get you started with Gentics Mesh.
Gentics Mesh is a headless CMS which provides developers with HTTP based API’s to accessing and manage contents.
A headless CMS just provides an API (REST/GraphQL) instead of serving or rendering the pages directly. The template handling is done in your front-end. This gives the developers the freedom to choose the technology stack they like. The CMS no longer dictates this.
If you don’t have much time:
Try the UI with login (admin/admin) for playing around with Gentics Mesh and it’s user interface.
Changes can be viewed in the demo front-end
Head over to the TL;DR section to find out everything you need to know and what makes Gentics Mesh special.
The mesh image contains an empty Gentics Mesh server without any content. It, however, requires a tuning of a database storage, accessible from the image. In order to simplify things at the jumpstart, we have prepared a set of Docker images containing supported RDBMS drivers, among which is the one perfectly suitable for the demonstration purposes: mesh-sqldb, which contains a self-hosted, in-memory based HSQL database to play around with.
docker run -p 8080:8080 gentics/mesh-hsqldb
or
docker run \
-v mesh-uploads:/uploads \
-p 8080:8080 \
gentics/mesh-hsqldb
Other variant for an easy, yet production ready start is to use mesh-mariadb image, providing along an external instance of MariaDB 10.3+ database as a data storage, and a JDBC connector, which can be downloaded from the official website. For instance, below is how a dedicated docker-compose
setup may look like.
First, initialize an empty database in your MariaDB, as well as its user:
CREATE DATABASE mesh CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
GRANT ALL PRIVILEGES ON mesh.* TO '<your database user>'@'%';
SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;
Include the following mesh
container into your docker-compose.yml
:
mesh:
image: gentics/mesh-mariadb
volumes:
- mesh-uploads:/uploads
ports:
- '8080:8080'
environment:
MESH_DATABASE_ADDRESS: <host:port of a MariaDB. For instance, if the name of MariaDB container is `mariadb`, the content here will be `mariadb:3306`>
MESH_JDBC_CONNECTION_USERNAME: <your database user>
MESH_JDBC_CONNECTION_PASSWORD: <password of your database user>
MESH_INITIAL_ADMIN_PASSWORD: "admin"
MESH_INITIAL_ADMIN_PASSWORD_FORCE_RESET: "false"
MESH_BINARY_DIR: "/uploads"
There is no dedicated installation procedure for Gentics Mesh. However, you will need to download a Gentics Mesh JAR and a database connector JAR file.
An example of starting Mesh along with the HSQL in-memory mode database, assuming having both downloaded JARs in the same folder, looks as following:
java -cp mesh-database-connector-hsqldb-X.X.X.jar:mesh-server-X.X.X.jar com.gentics.mesh.server.ServerRunner
java -cp mesh-database-connector-hsqldb-X.X.X.jar;mesh-server-X.X.X.jar com.gentics.mesh.server.ServerRunner
The same example for MariaDB database will require the same database setup, as in the link:{{ relref "getting-started.asciidoc" }}#_use_mariadb_connected_container[Docker setup above], with the following command lines:
java -cp mesh-database-connector-mariadb-X.X.X.jar:mariadb-java-client-Y.Y.Y.jar:mesh-server-X.X.X.jar com.gentics.mesh.server.ServerRunner
java -cp mesh-database-connector-mariadb-X.X.X.jar;mariadb-java-client-Y.Y.Y.jar;mesh-server-X.X.X.jar com.gentics.mesh.server.ServerRunner
You organize your contents and media assets in projects.
A schema is used to define the structure of a content type (e.g. product, blog post). It has a set of standard fields (uuid, name, version etc.) and defines the types of an arbitrary number of custom fields for your content type (i.e. string, number, HTML, date, binary, list, node reference, micronode, boolean).
The actual content items of your project are called nodes and always follow a schema.
Everything is a node, there is no separate concept for media assets. To get you started, we ship with schemas for image, video, document, and audio that you may customize to your needs and liking!
Nodes can be tagged. A tag family groups tags that semantically belong together and is defined for a specific project.
Gentics Mesh supports building content trees. Nodes can be hierarchically structured if a container-schema is provided. While it’s possible to organize your contents in a simple, flat structure with tagging and referencing, content trees are the basis for leveraging the power of automatic navigation menus, breadcrumbs, pretty URLs and link resolving. For your convenience, Gentics Mesh is shipped with a generic folder schema that you may choose for hierarchically organizing your content in a tree and ultimately following the well-known file system paradigm.
With micronodes it is possible to build complex object data structures as they are basically representing subnodes of nodes. They allow for creating custom content components, e.g. media elements of your blog post such as YouTube videos, image galleries, Google maps, image captions, vcards, quotes, or text paragraphs to be mixed and matched.
Supporting multi-language and localisation, nodes can hold several language variants of your content.
Each user (a physical person or client app) has a user object counter part in Gentics Mesh, which can be extended by referencing a custom user node. By defining your custom user schema Gentics Mesh supports extensible user profiles for your apps.
Groups are used to organize users, e.g., of same access levels.
Roles are used to manage permissions between a role and other elements in Gentics Mesh (i.e., nodes, schemas, users, roles, etc.). Roles can be assigned to groups, thus efficiently granting the role’s permissions to a set of users.