Skip to content

Commit 456daec

Browse files
Merge branch 'development' into nc-maia-plan-jira
2 parents 80ffb8e + ae02e40 commit 456daec

29 files changed

Lines changed: 1533 additions & 100 deletions

File tree

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
---
2+
title: "Private Mendix Platform Deploy API"
3+
url: /apidocs-mxsdk/apidocs/private-platform-deploy-api/
4+
type: swagger
5+
description: "This API allows you to create and manage environments in Private Mendix Platform."
6+
restapi: true
7+
weight: 60
8+
linktitle: "Deploy API"
9+
---
10+
11+
{{% alert color="info" %}}
12+
This document is about [Private Mendix Platform](/private-mendix-platform/) API. This API is only available on instances of Private Mendix Platform. For [Mendix on Kubernetes](/developerportal/deploy/private-cloud/) API, see [Mendix on Kubernetes Build API](/apidocs-mxsdk/apidocs/private-cloud-build-api/) and [Mendix on Kubernetes Deploy API](/apidocs-mxsdk/apidocs/private-cloud-deploy-api/).
13+
{{% /alert %}}
14+
15+
## Introduction
16+
17+
The Private Mendix Platform Group API allows you to manage user groups in Private Mendix Platform. You can use the API to do the following:
18+
19+
* Create a new environment for the application
20+
* Retrieve all environments for the application
21+
* Retrieve a specified environment for the application
22+
* Update a specified environment for the application
23+
* Delete a specified environment for the application
24+
25+
## API Reference
26+
27+
{{< swaggerui src="/openapi-spec/openapi-deploy.yaml" >}}

content/en/docs/deployment/docker-deploy/docker-pad.md

Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,3 +235,177 @@ The Mendix Runtime exposes health check endpoints that can be used to monitor th
235235
| `/health/ready` | Returns the readiness status — indicates if the app is ready to serve traffic |
236236

237237
These endpoints are especially useful when integrating with orchestration platforms such as Kubernetes, which rely on liveness and readiness probes to manage container lifecycle.
238+
239+
## Reverse Proxy
240+
241+
This section serves as a reference guide and starting point for configuring a reverse proxy on Docker. The configurations provided are intended for illustrative purposes only, as the required settings vary depending on your specific network environment and infrastructure setup.
242+
243+
{{% alert color="info" %}}
244+
This example implementation is provided as-is, and is not covered under official support. Support requests related to this specific configuration cannot be addressed.
245+
{{% /alert %}}
246+
247+
### Configuring Nginx
248+
249+
To configure Nginx, perform the following steps:
250+
251+
1. Define services for the app and Nginx reverse proxy:
252+
253+
```text
254+
services:
255+
app:
256+
build: .
257+
ports:
258+
- "127.0.0.1:8080:8080" # Bind only localhost
259+
environment:
260+
- SPRING_PROFILES_ACTIVE=docker
261+
nginx:
262+
image: nginx:alpine
263+
ports:
264+
- "80:80"
265+
volumes:
266+
- ./nginx.conf:/etc/nginx/nginx.conf:ro
267+
depends_on:
268+
- app
269+
```
270+
271+
2. Run the following command: `docker-compose up --build`.​
272+
3. Create the following `nginx.conf` file to proxy requests to the app:
273+
274+
```text
275+
events {}
276+
http {
277+
server {
278+
listen 80;
279+
location / {
280+
proxy_pass http://app:8080;
281+
proxy_set_header Host $host;
282+
proxy_set_header X-Real-IP $remote_addr;
283+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
284+
proxy_set_header X-Forwarded-Proto $scheme;
285+
}
286+
}
287+
}
288+
```
289+
290+
This configuration exposes only port 80 publicly while acting as a proxy to your app on the internal port 8080.
291+
292+
### Configuring Traefik
293+
294+
To simplify setting up Traefik as a reverse proxy for your app running in a Docker container, use Docker Compose. This configuration exposes Traefik on ports `80/8080`, automatically discovers your app container through labels, and routes traffic to it.
295+
296+
Traefik uses two networks: *frontend* (public) and *backend* (internal).
297+
298+
1. Add Traefik labels to the app service:
299+
300+
```text
301+
services:
302+
traefik:
303+
image: traefik:v3.0
304+
ports:
305+
- "80:80"
306+
- "8080:8080" # Traefik dashboard
307+
volumes:
308+
- /var/run/docker.sock:/var/run/docker.sock:ro
309+
command:
310+
- --api.dashboard=true
311+
- --providers.docker=true
312+
- --providers.docker.exposedbydefault=false
313+
- --entrypoints.web.address=:80
314+
networks:
315+
- frontend
316+
- backend
317+
restart: unless-stopped
318+
app:
319+
build: .
320+
networks:
321+
- backend
322+
labels:
323+
- traefik.enable=true
324+
- traefik.docker.network=backend
325+
- traefik.http.routers.app.rule=Host(`localhost`) || PathPrefix(`/api`)
326+
- traefik.http.routers.app.entrypoints=web
327+
- traefik.http.services.app.loadbalancer.server.port=8080
328+
restart: unless-stopped
329+
networks:
330+
frontend:
331+
external: false
332+
backend:
333+
external: false
334+
```
335+
336+
2. Run the following command: `docker compose up -d --build`.
337+
338+
You can now access your app at `http://localhost`. Traefik proxies to `app:8080` internally.
339+
340+
#### Key Traefik Labels Explained
341+
342+
This section explains the main labels used by Traefik.
343+
344+
* `traefik.enable=true` - Enables Traefik for this container.
345+
* `traefik.http.routers.java-app.rule=Host(yourapp.example.com)` - Routes requests matching the host to this service.
346+
* `traefik.http.services.java-app.loadbalancer.server.port=8080` - Forwards to your app's internal port.
347+
348+
Traefik automatically detects changes through a Docker socket. You do not need to restart it to update the labels.
349+
350+
#### Main Differences between Traefik and Nginx
351+
352+
This section explains how Traefik proxies differ from Nginx.
353+
354+
* Traefik does not use static config files. Instead, the configuration is automatic through the use of labels.
355+
* A dashboard available at `http://localhost:8080` shows the routes.
356+
* You can easily scale by duplicating the `app service` with unique router rules (for example, `Host(app2.local)`).​
357+
358+
## Example High Availability Implementation
359+
360+
High availability (HA) requires redundancy, health checks, and restarts to handle failures. Scale for HA with Docker Compose (for local or development environments) or Kubernetes.
361+
362+
This section serves as a reference guide and starting point for configuring high availability on Docker. The configurations provided are intended for illustrative purposes only, as the settings will vary depending on your specific network environment and infrastructure setup.
363+
364+
{{% alert color="info" %}}
365+
This example implementation is provided as-is, and is not covered under official support. Support requests related to this specific configuration cannot be addressed.
366+
{{% /alert %}}
367+
368+
1. Configure the *docker-compose.yml* as in the following example:
369+
370+
```text
371+
services:
372+
myapp:
373+
image: myapp
374+
ports:
375+
- "8080:8080"
376+
deploy:
377+
replicas: 3 # Run 3 instances
378+
healthcheck:
379+
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8080/actuator/health"]
380+
interval: 30s
381+
timeout: 10s
382+
retries: 3
383+
```
384+
385+
2. Start the process by running the following command: `docker-compose up --scale myapp=3`.
386+
3. Add a load balancer like Traefik or an NGINX reverse proxy in the front:
387+
388+
``` text
389+
services:
390+
traefik:
391+
image: traefik:v3.0
392+
command: --providers.docker --entrypoints.web.address=:80
393+
ports: ["80:80"]
394+
myapp:
395+
# No ports exposed; Traefik load balances
396+
```
397+
398+
This creates a redundancy—kill container, and traffic shifts automatically.
399+
400+
4. Build and run manually by running the following script:
401+
402+
``` text
403+
# Build image
404+
docker build -t myapp:latest .
405+
# Test single instance
406+
docker run -p 8080:8080 myapp:latest
407+
# For HA: Run 3 replicas (use docker-compose.yml for production)
408+
docker run -d -p 8081:8080 --name app1 myapp:latest
409+
docker run -d -p 8082:8080 --name app2 myapp:latest
410+
docker run -d -p 8083:8080 --name app3 myapp:latest
411+
```

content/en/docs/deployment/general/salt.md

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: "Siemens Advanced License Technology"
33
url: /developerportal/deploy/salt/
44
weight: 90
5-
description: "This guide explains how to use Siemens Advaned License Technology (SALT) with Mendix"
5+
description: "This guide explains how to use Siemens Advanced License Technology (SALT) with Mendix"
66
aliases:
77
- /deployment/salt/
88
#To update these screenshots, you can log in with credentials detailed in How to Update Screenshots Using Team Apps.
@@ -24,18 +24,25 @@ This section explains the limitations for using SALT-based licenses.
2424

2525
SALT Licenses can only be used with the following Mendix versions:
2626

27-
* **Mendix 10**: 10.24.4 and above
28-
* **Mendix 11**: 11.2.0 and above
27+
* **Mendix 10** 10.24.4 and above
28+
* **Mendix 11** 11.2.0 and above
2929

30-
Each SALT license is bound to a specific major version of Mendix and cannot be used in newer major versions.
30+
Each SALT license is tied to a specific major Mendix version, for example MXP11 for Mendix 11. The license permits use of that version and all earlier major versions. To use a newer major version, you must have an active maintenance contract and can request a renewed license when the new major version is released.
3131

3232
### Deployment Restrictions
3333

3434
Mendix applications using a SALT License cannot be deployed to the Mendix Public Cloud.
3535

36+
### User Limits
37+
38+
SALT licenses distinguish between internal and external users:
39+
40+
* **Internal users** – SALT licenses specify a maximum number of named internal users. This limit is enforced independently by each application and is defined at the time of purchase. Limiting concurrent users is not supported.
41+
* **External users** – Unlimited external users can optionally be purchased. When purchased, external users are no longer counted against the internal user limit. To take advantage of this, users must be explicitly flagged as external in your application using the [User Classification](/appstore/modules/user-classification/) module or by setting the `UserType` attribute directly. If external users are not flagged, they are counted as internal users.
42+
3643
## Obtaining the SALT-based License
3744

38-
Upon purchase, your SALT-based license file is sent to you by email.
45+
Upon purchase, your SALT-based license file is sent to you by email. A single license file is valid for all of your Mendix applications. Multiple license files cannot be issued.
3946

4047
## Installing the Siemens License Server
4148

@@ -50,6 +57,10 @@ For detailed instructions on how to install the Siemens License Server and confi
5057
* [Siemens License Server](https://support.sw.siemens.com/en-US/product/1586485382)
5158
* [Getting Started with Siemens Advanced Licensing Technology (SALT) and the Siemens License Server (SLS)](https://support.sw.siemens.com/en-US/product/1586485382/knowledge-base/MG612613)
5259

60+
{{% alert color="info" %}}
61+
If you are deploying on-premises, you must generate a hardware ID (CID) using Siemens tools and provide it during the license provisioning process. Refer to the Siemens documentation above for instructions on generating a CID.
62+
{{% /alert %}}
63+
5364
## Configuring your Mendix Application
5465

5566
Each Mendix application that uses a SALT license must be configured with the following [runtime setting](/refguide/custom-settings/):
@@ -58,17 +69,23 @@ Each Mendix application that uses a SALT license must be configured with the fol
5869
License.SaltLicenseLocation = port@host
5970
```
6071

61-
* `port`: The port number specified during the license server installation.
62-
* `host`: The hostname or IP address of the machine running the license server.
72+
* `port` The port number specified during the license server installation.
73+
* `host` The hostname or IP address of the machine running the license server.
6374

6475
After you configure the runtime setting and start the Mendix application, the application connects to the Siemens License Server to validate the SALT license.
6576

6677
## FAQs
6778

6879
### When Does a Mendix Application Connect to the License Server?
6980

70-
Mendix applications connect to the license server during startup to retrieve the license. After this initial connection, the applications do not maintain ongoing connections to the license serve
81+
Mendix applications connect to the license server during startup to retrieve the license. After this initial connection, the applications do not maintain ongoing connections to the license server.
7182

7283
### What Happens If the License Server Is Unavailable?
7384

74-
If the license server becomes unavailable while a Mendix application is running, the application's current operation will not be affected. However, if the license server is unavailable during startup, the Mendix application will launch in trial mode. To resolve this, restart the Mendix application once the license server is available.
85+
If the license server becomes unavailable while a Mendix application is running, the application's current operation will not be affected. However, if the license server is unavailable during startup, the Mendix application will launch in trial mode. In trial mode, usage is limited to a specific number of users and the application stops running after a few hours.
86+
87+
To resolve this, restart the Mendix application once the license server is available.
88+
89+
### Does the License Server Require Internet Access?
90+
91+
SALT-based licenses can operate fully offline. No outbound connectivity to Siemens systems is required.

content/en/docs/deployment/on-premises-design/ms-windows/sql-server/setting-up-a-new-sql-server-database.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,15 @@ Some of these steps are only required for specific versions of SQL Server or Men
1919

2020
When setting up a new database for Mendix, you can leave most of the settings to the default configuration. When looking at the general settings, you only need to set up the database name. Set up the database files according to the [Microsoft SQL Server best practices](https://www.mssqltips.com/sqlservertip/4891/sql-server-installation-best-practices/).
2121

22-
{{< figure src="/attachments/deployment/on-premises-design/ms-windows/sql-server/setting-up-a-new-sql-server-database/18580676.png" class="no-border" >}}
22+
{{< figure src="/attachments/deployment/on-premises-design/ms-windows/sql-server/setting-up-a-new-sql-server-database/sql-server-general.png" alt="New Database dialog General page with database name and files configuration" >}}
2323

2424
In the database options, the default properties need to be evaluated. When choosing a collation, pay attention to the type of collation you are going to use. Mendix uses UTF-8 for all data evaluation. Depending on your exact locale, you will most likely want to choose one of the `SQL_Latin1_General_` collations. The exact encoding depends on your OS. For an **en_US** installation, for example, the encoding is `CP1`.
2525

2626
The last two collation arguments identify how sorting and uniqueness are interpreted. For example, the collation argument `CS` indicates that the collation sorting style is case sensitive. For more information on collations and case sensitivity, see [Case-Sensitive Database Behavior](/refguide/case-sensitive-database-behavior/) and the Microsoft documentation [Windows Collation Name](https://docs.microsoft.com/en-us/sql/t-sql/statements/windows-collation-name-transact-sql).
2727

2828
Mendix recommends using the **Simple** recovery model option. Mendix does not use the full functionality offered in the **Full** recovery model option; although you can successfully use the **Full** recovery model, it could increase the data usage of all the transactions and might slow down any rollbacks in case of an error.
2929

30-
{{< figure src="/attachments/deployment/on-premises-design/ms-windows/sql-server/setting-up-a-new-sql-server-database/18580675.png" class="no-border" >}}
30+
{{< figure src="/attachments/deployment/on-premises-design/ms-windows/sql-server/setting-up-a-new-sql-server-database/sql-server-options.png" alt="New Database dialog Options page showing collation and recovery model settings" >}}
3131

3232
After the database is created, the Mendix Runtime can initiate the initial setup and prepare all the tables and functions for usage by the platform. Some of these queries require `sysadmin` privileges. The `sysadmin` role can be temporarily assigned to the user, or these queries can be executed by the administrator. Other queries need privileges that are implicitly assigned to the `db_owner` role. If the user used by the Mendix Runtime does not have enough permissions for any of these queries, you can run them manually – see below for more information.
3333

content/en/docs/deployment/private-cloud/private-cloud-license-manager.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,6 @@ To apply the manifest to configure the ingress in the Kubernetes namespace, use
164164
You can confirm that you can connect to the PCLM server using the following URLs:
165165

166166
* `http<s>://pclm.<domain>/health` should return `HTTP 200 OK`
167-
* `https<s>://pclm.<domain>/metrics` should return `HTTP 200 OK` together with the collected server metrics
168167

169168
### Using the Kubernetes Service
170169

content/en/docs/marketplace/genai/reference-guide/mcp-modules/mcp-server.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ The current version has the following limitations:
2323

2424
* Tools can only return String values, either directly as a String type or using the `TextContent` entity.
2525
* Prompts can only return a single message.
26-
* Running an MCP Server is currently only supported on single-instance environments.
2726

2827
{{% alert color="info" %}}
2928
Note that the MCP Server module is still in its early version, and the latest version may include breaking changes. Since both the open-source protocol and the Java SDK are still evolving and regularly updated, these changes may also affect this module.

0 commit comments

Comments
 (0)