From 8d9101e8b52e32a0424ac268f3cb1c86a2d8f3f0 Mon Sep 17 00:00:00 2001 From: Andrew Heimerman Date: Mon, 13 Jul 2026 19:54:06 +0200 Subject: [PATCH 01/15] add emqx --- stacks/emqx-enterprise/docker-compose.yml | 61 +++++++++++++++++++++++ templates.json | 35 +++++++++++++ 2 files changed, 96 insertions(+) create mode 100644 stacks/emqx-enterprise/docker-compose.yml diff --git a/stacks/emqx-enterprise/docker-compose.yml b/stacks/emqx-enterprise/docker-compose.yml new file mode 100644 index 00000000..db7068ae --- /dev/null +++ b/stacks/emqx-enterprise/docker-compose.yml @@ -0,0 +1,61 @@ +services: + emqx-core: + image: emqx/emqx-enterprise:6.1.1 + deploy: + replicas: 3 + endpoint_mode: dnsrr + restart_policy: + condition: any + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:18083/status"] + interval: 5s + timeout: 25s + retries: 5 + networks: + emqx_bridge: + environment: + - EMQX_NODE__DB_ROLE=core + - EMQX_CLUSTER__DISCOVERY_STRATEGY=dns + - EMQX_CLUSTER__DNS__RECORD_TYPE=a + - EMQX_CLUSTER__DNS__NAME=emqx-core + - EMQX_DASHBOARD__DEFAULT_USERNAME=${EMQX_DASHBOARD__DEFAULT_USERNAME:-admin} + - EMQX_DASHBOARD__DEFAULT_PASSWORD=${EMQX_DASHBOARD__DEFAULT_PASSWORD:-public} + - EMQX_LICENSE__KEY={{EMQX_LICENSE_KEY}} + volumes: + - emqx_core_data:/opt/emqx/data + + emqx-replicant: + image: emqx/emqx-enterprise:6.1.1 + deploy: + replicas: ${EMQX_REPLICANT_NODES:-3} + restart_policy: + condition: any + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:18083/status"] + interval: 5s + timeout: 25s + retries: 5 + networks: + emqx_bridge: + environment: + - EMQX_NODE__DB_ROLE=replicant + - EMQX_CLUSTER__DISCOVERY_STRATEGY=dns + - EMQX_CLUSTER__DNS__RECORD_TYPE=a + - EMQX_CLUSTER__DNS__NAME=emqx-core + - EMQX_LICENSE__KEY={{EMQX_LICENSE_KEY}} + ports: + - 1883:1883 + - 8083:8083 + - 8084:8084 + - 8883:8883 + - 18083:18083 + volumes: + - emqx_replicant_data:/opt/emqx/data + +networks: + emqx_bridge: + driver: overlay + +volumes: + emqx_core_data: + emqx_replicant_data: diff --git a/templates.json b/templates.json index 167e63c3..da23687e 100644 --- a/templates.json +++ b/templates.json @@ -1862,6 +1862,41 @@ "url": "https://github.com/portainer/templates", "stackfile": "edge/maestrohub/docker-compose.yml" } + }, + { + "id": 75, + "type": 2, + "title": "EMQX Enterprise", + "description": "EMQX Enterprise MQTT broker cluster with core and replicant nodes", + "note": "Deploys an EMQX Enterprise cluster with 3 core nodes and 3 replicant nodes. Core nodes handle routing and sessions, replicant nodes handle MQTT client connections. Requires a valid EMQX license key.", + "categories": ["messaging"], + "platform": "linux", + "logo": "https://www.emqx.com/favicon.ico", + "repository": { + "url": "https://github.com/drewheimerman/templates", + "stackfile": "stacks/emqx-enterprise/docker-compose.yml" + }, + "env": [ + { + "name": "EMQX_LICENSE_KEY", + "label": "EMQX License Key", + "description": "License key for EMQX Enterprise" + }, + { + "name": "EMQX_DASHBOARD__DEFAULT_USERNAME", + "label": "Dashboard username", + "default": "admin" + }, + { + "name": "EMQX_DASHBOARD__DEFAULT_PASSWORD", + "label": "Dashboard password" + }, + { + "name": "EMQX_REPLICANT_NODES", + "label": "Number of replicant nodes", + "default": "3" + } + ] } ] } From 838bd5c17151e9d736f7742a5a2a77c32a0699b4 Mon Sep 17 00:00:00 2001 From: Andrew Heimerman Date: Mon, 13 Jul 2026 19:56:11 +0200 Subject: [PATCH 02/15] Update templates.json --- templates.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates.json b/templates.json index da23687e..95ae8420 100644 --- a/templates.json +++ b/templates.json @@ -1873,7 +1873,7 @@ "platform": "linux", "logo": "https://www.emqx.com/favicon.ico", "repository": { - "url": "https://github.com/drewheimerman/templates", + "url": "https://github.com/drewheimerman/portainer-templates", "stackfile": "stacks/emqx-enterprise/docker-compose.yml" }, "env": [ From 672d91e0f5456e4cec3fff0b2b675c9a5221f93e Mon Sep 17 00:00:00 2001 From: Andrew Heimerman Date: Tue, 21 Jul 2026 16:12:40 +0200 Subject: [PATCH 03/15] changed variable bracketing --- stacks/emqx-enterprise/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stacks/emqx-enterprise/docker-compose.yml b/stacks/emqx-enterprise/docker-compose.yml index db7068ae..dc00e7cb 100644 --- a/stacks/emqx-enterprise/docker-compose.yml +++ b/stacks/emqx-enterprise/docker-compose.yml @@ -20,7 +20,7 @@ services: - EMQX_CLUSTER__DNS__NAME=emqx-core - EMQX_DASHBOARD__DEFAULT_USERNAME=${EMQX_DASHBOARD__DEFAULT_USERNAME:-admin} - EMQX_DASHBOARD__DEFAULT_PASSWORD=${EMQX_DASHBOARD__DEFAULT_PASSWORD:-public} - - EMQX_LICENSE__KEY={{EMQX_LICENSE_KEY}} + - EMQX_LICENSE__KEY=${EMQX_LICENSE_KEY} volumes: - emqx_core_data:/opt/emqx/data From c0da11bc9588f16428d6da8b5add52869dec1c29 Mon Sep 17 00:00:00 2001 From: Andrew Heimerman Date: Tue, 21 Jul 2026 16:14:20 +0200 Subject: [PATCH 04/15] additional variable change --- stacks/emqx-enterprise/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stacks/emqx-enterprise/docker-compose.yml b/stacks/emqx-enterprise/docker-compose.yml index dc00e7cb..278e1c43 100644 --- a/stacks/emqx-enterprise/docker-compose.yml +++ b/stacks/emqx-enterprise/docker-compose.yml @@ -42,7 +42,7 @@ services: - EMQX_CLUSTER__DISCOVERY_STRATEGY=dns - EMQX_CLUSTER__DNS__RECORD_TYPE=a - EMQX_CLUSTER__DNS__NAME=emqx-core - - EMQX_LICENSE__KEY={{EMQX_LICENSE_KEY}} + - EMQX_LICENSE__KEY=${EMQX_LICENSE_KEY} ports: - 1883:1883 - 8083:8083 From 2fcd2c1bbbd3954f7594309bacfd4eb95c9c20d8 Mon Sep 17 00:00:00 2001 From: Andrew Heimerman Date: Tue, 21 Jul 2026 16:33:35 +0200 Subject: [PATCH 05/15] Update templates.json --- templates.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates.json b/templates.json index 95ae8420..82743aa5 100644 --- a/templates.json +++ b/templates.json @@ -1874,7 +1874,7 @@ "logo": "https://www.emqx.com/favicon.ico", "repository": { "url": "https://github.com/drewheimerman/portainer-templates", - "stackfile": "stacks/emqx-enterprise/docker-compose.yml" + "stackfile": "swarm/emqx-enterprise/docker-compose.yml" }, "env": [ { From 3e1616b49602f21d3cd4c92e7bdb83e8ae9c43ad Mon Sep 17 00:00:00 2001 From: Andrew Heimerman Date: Mon, 27 Jul 2026 11:33:03 -0500 Subject: [PATCH 06/15] changed emqx compose location --- {stacks => swarm}/emqx-enterprise/docker-compose.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {stacks => swarm}/emqx-enterprise/docker-compose.yml (100%) diff --git a/stacks/emqx-enterprise/docker-compose.yml b/swarm/emqx-enterprise/docker-compose.yml similarity index 100% rename from stacks/emqx-enterprise/docker-compose.yml rename to swarm/emqx-enterprise/docker-compose.yml From 267f78b8f2be7c84175e6bdc73d0c4fa1a893ecc Mon Sep 17 00:00:00 2001 From: Andrew Heimerman Date: Mon, 27 Jul 2026 16:33:01 -0500 Subject: [PATCH 07/15] updated env vars for EMQX Enterprise --- templates.json | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/templates.json b/templates.json index 82743aa5..1be8124e 100644 --- a/templates.json +++ b/templates.json @@ -1877,25 +1877,9 @@ "stackfile": "swarm/emqx-enterprise/docker-compose.yml" }, "env": [ - { - "name": "EMQX_LICENSE_KEY", - "label": "EMQX License Key", - "description": "License key for EMQX Enterprise" - }, - { - "name": "EMQX_DASHBOARD__DEFAULT_USERNAME", - "label": "Dashboard username", - "default": "admin" - }, - { - "name": "EMQX_DASHBOARD__DEFAULT_PASSWORD", - "label": "Dashboard password" - }, - { - "name": "EMQX_REPLICANT_NODES", - "label": "Number of replicant nodes", - "default": "3" - } + { "name": "EMQX_LICENSE__KEY", "label": "EMQX License Key", "description": "License key for EMQX Enterprise" }, + { "name": "EMQX_DASHBOARD__DEFAULT_USERNAME", "label": "Dashboard username", "default": "admin" }, + { "name": "EMQX_DASHBOARD__DEFAULT_PASSWORD", "label": "Dashboard password", "default": "public" } ] } ] From 7cfad0508d534823ffac18dc28fe3e58f4907ded Mon Sep 17 00:00:00 2001 From: Andrew Heimerman Date: Tue, 25 Aug 2026 14:11:41 -0500 Subject: [PATCH 08/15] test SDEX template --- templates.json | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/templates.json b/templates.json index 1be8124e..09e49eab 100644 --- a/templates.json +++ b/templates.json @@ -1881,6 +1881,25 @@ { "name": "EMQX_DASHBOARD__DEFAULT_USERNAME", "label": "Dashboard username", "default": "admin" }, { "name": "EMQX_DASHBOARD__DEFAULT_PASSWORD", "label": "Dashboard password", "default": "public" } ] + }, + { + "id": 76, + "type": 3, + "title": "Softing SDEX Suite", + "description": "Connect PLCs and CNCs from multiple manufacturers and provide their industrial data to IT applications via OPC UA and MQTT.", + "note": "Deploys the SDEX Suite container with basic configurations.", + "categories": ["edge"], + "platform": "linux", + "logo": "https://portainer-io-assets.sfo2.digitaloceanspaces.com/logos/softing.png", + "repository": { + "url": "https://github.com/drewheimerman/portainer-templates", + "stackfile": "edge/docker-compose.yml" + }, + "env": [ + { "name": "EMQX_LICENSE__KEY", "label": "EMQX License Key", "description": "License key for EMQX Enterprise" }, + { "name": "EMQX_DASHBOARD__DEFAULT_USERNAME", "label": "Dashboard username", "default": "admin" }, + { "name": "EMQX_DASHBOARD__DEFAULT_PASSWORD", "label": "Dashboard password", "default": "public" } + ] } ] } From dd4391c79298ece6fdc04a9bf132f4cdbd0727cd Mon Sep 17 00:00:00 2001 From: Andrew Heimerman Date: Tue, 25 Aug 2026 14:32:19 -0500 Subject: [PATCH 09/15] added docker compose for SDEX Suite --- edge/softing-sdex/docker-compose.yaml | 15 +++++++++++++++ templates.json | 6 ++---- 2 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 edge/softing-sdex/docker-compose.yaml diff --git a/edge/softing-sdex/docker-compose.yaml b/edge/softing-sdex/docker-compose.yaml new file mode 100644 index 00000000..664adc36 --- /dev/null +++ b/edge/softing-sdex/docker-compose.yaml @@ -0,0 +1,15 @@ +version: "3.8" +services: + sdex_beta: + image: softingindustrial/sdex-suite + restart: always + ports: + - 443:443 + - 4897:4897 + volumes: + - config:/config + - mqtt-config:/mqtt + +volumes: + config: {} + mqtt-config: {} \ No newline at end of file diff --git a/templates.json b/templates.json index 09e49eab..97f074d2 100644 --- a/templates.json +++ b/templates.json @@ -1893,12 +1893,10 @@ "logo": "https://portainer-io-assets.sfo2.digitaloceanspaces.com/logos/softing.png", "repository": { "url": "https://github.com/drewheimerman/portainer-templates", - "stackfile": "edge/docker-compose.yml" + "stackfile": "edge/sdex-suite/docker-compose.yml" }, "env": [ - { "name": "EMQX_LICENSE__KEY", "label": "EMQX License Key", "description": "License key for EMQX Enterprise" }, - { "name": "EMQX_DASHBOARD__DEFAULT_USERNAME", "label": "Dashboard username", "default": "admin" }, - { "name": "EMQX_DASHBOARD__DEFAULT_PASSWORD", "label": "Dashboard password", "default": "public" } + { "name": "TZ", "label": "Timezone", "description": "TZ with format \"America/New_York\"" } ] } ] From e929d8cf5fc542180d7f6fd729fdc2164df24db4 Mon Sep 17 00:00:00 2001 From: Andrew Heimerman Date: Tue, 25 Aug 2026 14:33:29 -0500 Subject: [PATCH 10/15] changed file extention --- edge/softing-sdex/{docker-compose.yaml => docker-compose.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename edge/softing-sdex/{docker-compose.yaml => docker-compose.yml} (100%) diff --git a/edge/softing-sdex/docker-compose.yaml b/edge/softing-sdex/docker-compose.yml similarity index 100% rename from edge/softing-sdex/docker-compose.yaml rename to edge/softing-sdex/docker-compose.yml From 922b8e89b1e90677e7ecb669c6ecea3e46ef2b0a Mon Sep 17 00:00:00 2001 From: Andrew Heimerman Date: Tue, 1 Sep 2026 13:52:13 -0500 Subject: [PATCH 11/15] Updated templtes.json to remove outdated templates --- .../docker-compose.yml | 8 -- .../docker-compose.yml | 16 ---- .../docker-compose.yml | 16 ---- .../docker-compose.yml | 8 -- .../docker-compose.yml | 8 -- templates.json | 89 ++++--------------- 6 files changed, 17 insertions(+), 128 deletions(-) delete mode 100644 edge/softing-edgeconnector-840d/docker-compose.yml delete mode 100644 edge/softing-edgeconnector-aggregator/docker-compose.yml delete mode 100644 edge/softing-edgeconnector-fanuc-cnc/docker-compose.yml delete mode 100644 edge/softing-edgeconnector-modbus/docker-compose.yml delete mode 100644 edge/softing-edgeconnector-siemens/docker-compose.yml diff --git a/edge/softing-edgeconnector-840d/docker-compose.yml b/edge/softing-edgeconnector-840d/docker-compose.yml deleted file mode 100644 index 812b9444..00000000 --- a/edge/softing-edgeconnector-840d/docker-compose.yml +++ /dev/null @@ -1,8 +0,0 @@ -services: - edgeconnector-840d: - image: softingindustrial/edgeconnector-840d - restart: unless-stopped - ports: - - 443 - - 8099 - - 4897 \ No newline at end of file diff --git a/edge/softing-edgeconnector-aggregator/docker-compose.yml b/edge/softing-edgeconnector-aggregator/docker-compose.yml deleted file mode 100644 index efb2ff58..00000000 --- a/edge/softing-edgeconnector-aggregator/docker-compose.yml +++ /dev/null @@ -1,16 +0,0 @@ -services: - edgeconnector-aggregator: - image: softingindustrial/edgeaggregator - restart: unless-stopped - ports: - - 443 - - 8099 - - 4897 - environment: - - TZ=${TZ:-UTC} - volumes: - - config_data:/config - - mqtt_data:/mqtt -volumes: - config_data: - mqtt_data: diff --git a/edge/softing-edgeconnector-fanuc-cnc/docker-compose.yml b/edge/softing-edgeconnector-fanuc-cnc/docker-compose.yml deleted file mode 100644 index 21248aea..00000000 --- a/edge/softing-edgeconnector-fanuc-cnc/docker-compose.yml +++ /dev/null @@ -1,16 +0,0 @@ -services: - edgeconnector-aggregator: - image: softingindustrial/edgeconnector-fanuc-cnc - restart: unless-stopped - ports: - - 443 - - 8099 - - 4897 - environment: - - TZ=${TZ:-UTC} - volumes: - - config_data:/config - - mqtt_data:/mqtt -volumes: - config_data: - mqtt_data: diff --git a/edge/softing-edgeconnector-modbus/docker-compose.yml b/edge/softing-edgeconnector-modbus/docker-compose.yml deleted file mode 100644 index df5fc166..00000000 --- a/edge/softing-edgeconnector-modbus/docker-compose.yml +++ /dev/null @@ -1,8 +0,0 @@ -services: - edgeconnector-modbus: - image: softingindustrial/edgeconnector-modbus - restart: unless-stopped - ports: - - 443 - - 8099 - - 4897 diff --git a/edge/softing-edgeconnector-siemens/docker-compose.yml b/edge/softing-edgeconnector-siemens/docker-compose.yml deleted file mode 100644 index 06cbd42d..00000000 --- a/edge/softing-edgeconnector-siemens/docker-compose.yml +++ /dev/null @@ -1,8 +0,0 @@ -services: - edgeconnector-siemens: - image: softingindustrial/edgeconnector-siemens - restart: unless-stopped - ports: - - 443 - - 8099 - - 4897 \ No newline at end of file diff --git a/templates.json b/templates.json index 97f074d2..33fde056 100644 --- a/templates.json +++ b/templates.json @@ -1165,61 +1165,6 @@ "id": 55, "type": 3, "categories": ["edge"], - "title": "Softing EdgeConnector modbus", - "description": "Connect Modbus TCP Sensors/PLCs and provide the data via OPC UA and MQTT", - "note": "Connect Modbus TCP Sensors/PLCs and provide the data via OPC UA and MQTT", - "logo": "https://www.gravatar.com/avatar/c7d3730588d3f501d6753aa22a731bc0?s=80&r=g&d=404", - "repository": { - "url": "https://github.com/portainer/templates", - "stackfile": "edge/softing-edgeconnector-modbus/docker-compose.yml" - } - }, - { - "id": 56, - "type": 3, - "categories": ["edge"], - "title": "Softing EdgeConnector 840D", - "description": "Access Siemens SINUMERIK 840D sl/pl controllers and provide data via OPC UA and MQTT", - "logo": "https://www.gravatar.com/avatar/c7d3730588d3f501d6753aa22a731bc0?s=80&r=g&d=404", - "repository": { - "url": "https://github.com/portainer/templates", - "stackfile": "edge/softing-edgeconnector-840d/docker-compose.yml" - } - }, - { - "id": 57, - "type": 3, - "categories": ["edge"], - "title": "Softing EdgeConnector Siemens", - "description": "Connect Siemens SIMATIC S7-300/400/1200/1500 PLCs and provide the data via OPC UA and MQTT", - "logo": "https://www.gravatar.com/avatar/c7d3730588d3f501d6753aa22a731bc0?s=80&r=g&d=404", - "repository": { - "url": "https://github.com/portainer/templates", - "stackfile": "edge/softing-edgeconnector-siemens/docker-compose.yml" - } - }, - { - "id": 58, - "type": 3, - "categories": ["edge"], - "title": "Softing EdgeConnector FANUC CNC", - "description": "Connect FANUC CNCs and provide the data via OPC UA and MQTT", - "logo": "https://www.gravatar.com/avatar/c7d3730588d3f501d6753aa22a731bc0?s=80&r=g&d=404", - "repository": { - "url": "https://github.com/portainer/templates", - "stackfile": "edge/softing-edgeconnector-fanuc-cnc/docker-compose.yml" - }, - "env": [ - { - "name": "TZ", - "label": "TZ" - } - ] - }, - { - "id": 59, - "type": 3, - "categories": ["edge"], "title": "Softing EdgeConnector Aggregator", "description": "Offers a powerful OPC UA aggregation service which provides data via OPC UA, as well as MQTT", "logo": "https://www.gravatar.com/avatar/c7d3730588d3f501d6753aa22a731bc0?s=80&r=g&d=404", @@ -1235,7 +1180,7 @@ ] }, { - "id": 60, + "id": 56, "type": 3, "categories": ["edge"], "title": "OPC Router", @@ -1269,7 +1214,7 @@ ] }, { - "id": 61, + "id": 57, "type": 3, "title": "Pro Mosquitto with Management Center", "description": "Commercial-grade Mosquitto MQTT broker with Management Center", @@ -1302,7 +1247,7 @@ ] }, { - "id": 62, + "id": 58, "type": 3, "title": "Node-Red", "description": "Low-code programming for event-driven applications", @@ -1322,7 +1267,7 @@ ] }, { - "id": 63, + "id": 59, "type": 3, "title": "InfluxDB for Edge", "description": "InfluxDB Time Series Data Platformm - Single Server deployment", @@ -1354,7 +1299,7 @@ ] }, { - "id": 64, + "id": 60, "type": 3, "title": "EMQX Open Source MQTT Broker", "description": "Open-source MQTT broker for IoT, IIoT, and connected vehicles - Single Broker deployment", @@ -1377,7 +1322,7 @@ ] }, { - "id": 65, + "id": 61, "type": 3, "title": "Grafana Dashboard", "description": "Multi-platform open-source interactive visualization web application", @@ -1400,7 +1345,7 @@ ] }, { - "id": 66, + "id": 62, "type": 3, "title": "Inductive Automation - Ignition Gateway", "description": "Ignition Gateway is the primary software service that drives everything in Ignition - Single Server Deployment", @@ -1458,7 +1403,7 @@ ] }, { - "id": 67, + "id": 63, "type": 3, "title": "Timescale DB", "description": "Open-source time series database developed by Timescale Inc", @@ -1477,7 +1422,7 @@ ] }, { - "id": 68, + "id": 64, "type": 3, "title": "Manubes Edge Node", "description": "High-performance cloud platform for industrial production management. Manubes is a no-code solution that is used to structure, monitor and control production data, systems and processes in the cloud.", @@ -1507,7 +1452,7 @@ ] }, { - "id": 69, + "id": 65, "type": 3, "title": "Anyviz Cloud Adaptor", "description": "The cloud adapter connects local devices via OPC-UA, Modbus, Siemens, Beckhoff ADS, EtherNet/IP, M-Bus and BACnet to the AnyViz Cloud.", @@ -1520,7 +1465,7 @@ } }, { - "id": 70, + "id": 66, "type": 3, "title": "Litmus Edge", "description": "Litmus Edge is an edge data platform that enables industrial AI at scale. It connects, processes, and analyzes real-time OT data at the edge to power smart manufacturing.", @@ -1533,7 +1478,7 @@ } }, { - "id": 71, + "id": 67, "type": 3, "title": "Litmus Edge Digital Factory Demo", "description": "Demo System for Litmus Edge. Litmus Edge is an edge data platform that enables industrial AI at scale. It connects, processes, and analyzes real-time OT data at the edge to power smart manufacturing. Note: Requires 5GB Disk Space / 3GB RAM available on the Host for deployment to succeed.", @@ -1546,7 +1491,7 @@ } }, { - "id": 72, + "id": 68, "type": 2, "title": "Fuuz In-House Trial", "description": "Deploy the Fuuz AI-driven Industrial Intelligence Platform. Unify manufacturing operations across MES, WMS, CMMS, and Quality with built-in DataOps integration, rapid application development, and an event-native architecture — or build your own custom manufacturing applications.", @@ -1765,7 +1710,7 @@ ] }, { - "id": 73, + "id": 69, "type": 1, "title": "Fuuz Device Gateway", "description": "A secure gateway that connects on-premise devices, PLCs, and data sources to the Fuuz Cloud for seamless, real-time integration.", @@ -1850,7 +1795,7 @@ ] }, { - "id": 74, + "id": 70, "type": 3, "title": "MaestroHub", "description": "Industrial data orchestrator with a Unified Namespace, drag-and-drop pipelines, and 40+ protocol connectors. Built-in MCP server brings AI agents into your operational data stack.", @@ -1864,7 +1809,7 @@ } }, { - "id": 75, + "id": 71, "type": 2, "title": "EMQX Enterprise", "description": "EMQX Enterprise MQTT broker cluster with core and replicant nodes", @@ -1883,7 +1828,7 @@ ] }, { - "id": 76, + "id": 72, "type": 3, "title": "Softing SDEX Suite", "description": "Connect PLCs and CNCs from multiple manufacturers and provide their industrial data to IT applications via OPC UA and MQTT.", From 395448adefe3fb8f039184b3b1856727ade42f15 Mon Sep 17 00:00:00 2001 From: Andrew Heimerman Date: Tue, 1 Sep 2026 13:54:53 -0500 Subject: [PATCH 12/15] removed EdgeAggrigator template --- templates.json | 50 ++++++++++++++++---------------------------------- 1 file changed, 16 insertions(+), 34 deletions(-) diff --git a/templates.json b/templates.json index 33fde056..7649c9c0 100644 --- a/templates.json +++ b/templates.json @@ -1165,24 +1165,6 @@ "id": 55, "type": 3, "categories": ["edge"], - "title": "Softing EdgeConnector Aggregator", - "description": "Offers a powerful OPC UA aggregation service which provides data via OPC UA, as well as MQTT", - "logo": "https://www.gravatar.com/avatar/c7d3730588d3f501d6753aa22a731bc0?s=80&r=g&d=404", - "repository": { - "url": "https://github.com/portainer/templates", - "stackfile": "edge/softing-edgeconnector-aggregator/docker-compose.yml" - }, - "env": [ - { - "name": "TZ", - "label": "TZ" - } - ] - }, - { - "id": 56, - "type": 3, - "categories": ["edge"], "title": "OPC Router", "description": "No-code middleware for industrial applications The OPC Router connects PLCs, PCS, SCADA, MES, SQL databases and servers, label printers, e-mail servers and erp-systems via OPC UA, MQTT, REST, CSV and many others without any programming effort", "note": "More information about the EULA.", @@ -1214,7 +1196,7 @@ ] }, { - "id": 57, + "id": 56, "type": 3, "title": "Pro Mosquitto with Management Center", "description": "Commercial-grade Mosquitto MQTT broker with Management Center", @@ -1247,7 +1229,7 @@ ] }, { - "id": 58, + "id": 57, "type": 3, "title": "Node-Red", "description": "Low-code programming for event-driven applications", @@ -1267,7 +1249,7 @@ ] }, { - "id": 59, + "id": 58, "type": 3, "title": "InfluxDB for Edge", "description": "InfluxDB Time Series Data Platformm - Single Server deployment", @@ -1299,7 +1281,7 @@ ] }, { - "id": 60, + "id": 59, "type": 3, "title": "EMQX Open Source MQTT Broker", "description": "Open-source MQTT broker for IoT, IIoT, and connected vehicles - Single Broker deployment", @@ -1322,7 +1304,7 @@ ] }, { - "id": 61, + "id": 60, "type": 3, "title": "Grafana Dashboard", "description": "Multi-platform open-source interactive visualization web application", @@ -1345,7 +1327,7 @@ ] }, { - "id": 62, + "id": 61, "type": 3, "title": "Inductive Automation - Ignition Gateway", "description": "Ignition Gateway is the primary software service that drives everything in Ignition - Single Server Deployment", @@ -1403,7 +1385,7 @@ ] }, { - "id": 63, + "id": 62, "type": 3, "title": "Timescale DB", "description": "Open-source time series database developed by Timescale Inc", @@ -1422,7 +1404,7 @@ ] }, { - "id": 64, + "id": 63, "type": 3, "title": "Manubes Edge Node", "description": "High-performance cloud platform for industrial production management. Manubes is a no-code solution that is used to structure, monitor and control production data, systems and processes in the cloud.", @@ -1452,7 +1434,7 @@ ] }, { - "id": 65, + "id": 64, "type": 3, "title": "Anyviz Cloud Adaptor", "description": "The cloud adapter connects local devices via OPC-UA, Modbus, Siemens, Beckhoff ADS, EtherNet/IP, M-Bus and BACnet to the AnyViz Cloud.", @@ -1465,7 +1447,7 @@ } }, { - "id": 66, + "id": 65, "type": 3, "title": "Litmus Edge", "description": "Litmus Edge is an edge data platform that enables industrial AI at scale. It connects, processes, and analyzes real-time OT data at the edge to power smart manufacturing.", @@ -1478,7 +1460,7 @@ } }, { - "id": 67, + "id": 66, "type": 3, "title": "Litmus Edge Digital Factory Demo", "description": "Demo System for Litmus Edge. Litmus Edge is an edge data platform that enables industrial AI at scale. It connects, processes, and analyzes real-time OT data at the edge to power smart manufacturing. Note: Requires 5GB Disk Space / 3GB RAM available on the Host for deployment to succeed.", @@ -1491,7 +1473,7 @@ } }, { - "id": 68, + "id": 67, "type": 2, "title": "Fuuz In-House Trial", "description": "Deploy the Fuuz AI-driven Industrial Intelligence Platform. Unify manufacturing operations across MES, WMS, CMMS, and Quality with built-in DataOps integration, rapid application development, and an event-native architecture — or build your own custom manufacturing applications.", @@ -1710,7 +1692,7 @@ ] }, { - "id": 69, + "id": 68, "type": 1, "title": "Fuuz Device Gateway", "description": "A secure gateway that connects on-premise devices, PLCs, and data sources to the Fuuz Cloud for seamless, real-time integration.", @@ -1795,7 +1777,7 @@ ] }, { - "id": 70, + "id": 69, "type": 3, "title": "MaestroHub", "description": "Industrial data orchestrator with a Unified Namespace, drag-and-drop pipelines, and 40+ protocol connectors. Built-in MCP server brings AI agents into your operational data stack.", @@ -1809,7 +1791,7 @@ } }, { - "id": 71, + "id": 70, "type": 2, "title": "EMQX Enterprise", "description": "EMQX Enterprise MQTT broker cluster with core and replicant nodes", @@ -1828,7 +1810,7 @@ ] }, { - "id": 72, + "id": 71, "type": 3, "title": "Softing SDEX Suite", "description": "Connect PLCs and CNCs from multiple manufacturers and provide their industrial data to IT applications via OPC UA and MQTT.", From 5b2fb4a0ef06124793d9fe1e537c44ee4c48b536 Mon Sep 17 00:00:00 2001 From: Andrew Heimerman Date: Tue, 1 Sep 2026 14:16:25 -0500 Subject: [PATCH 13/15] changed docker-compose location --- templates.json | 23 ++--------------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/templates.json b/templates.json index 7649c9c0..947ba5f5 100644 --- a/templates.json +++ b/templates.json @@ -1792,25 +1792,6 @@ }, { "id": 70, - "type": 2, - "title": "EMQX Enterprise", - "description": "EMQX Enterprise MQTT broker cluster with core and replicant nodes", - "note": "Deploys an EMQX Enterprise cluster with 3 core nodes and 3 replicant nodes. Core nodes handle routing and sessions, replicant nodes handle MQTT client connections. Requires a valid EMQX license key.", - "categories": ["messaging"], - "platform": "linux", - "logo": "https://www.emqx.com/favicon.ico", - "repository": { - "url": "https://github.com/drewheimerman/portainer-templates", - "stackfile": "swarm/emqx-enterprise/docker-compose.yml" - }, - "env": [ - { "name": "EMQX_LICENSE__KEY", "label": "EMQX License Key", "description": "License key for EMQX Enterprise" }, - { "name": "EMQX_DASHBOARD__DEFAULT_USERNAME", "label": "Dashboard username", "default": "admin" }, - { "name": "EMQX_DASHBOARD__DEFAULT_PASSWORD", "label": "Dashboard password", "default": "public" } - ] - }, - { - "id": 71, "type": 3, "title": "Softing SDEX Suite", "description": "Connect PLCs and CNCs from multiple manufacturers and provide their industrial data to IT applications via OPC UA and MQTT.", @@ -1819,7 +1800,7 @@ "platform": "linux", "logo": "https://portainer-io-assets.sfo2.digitaloceanspaces.com/logos/softing.png", "repository": { - "url": "https://github.com/drewheimerman/portainer-templates", + "url": "https://github.com/portainer/templates", "stackfile": "edge/sdex-suite/docker-compose.yml" }, "env": [ @@ -1827,4 +1808,4 @@ ] } ] -} +} \ No newline at end of file From afa5040af015fc9d79e27455d37ff07dc2f63256 Mon Sep 17 00:00:00 2001 From: Andrew Heimerman Date: Tue, 1 Sep 2026 14:26:52 -0500 Subject: [PATCH 14/15] Update templates.json --- templates.json | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/templates.json b/templates.json index 947ba5f5..dbfabe76 100644 --- a/templates.json +++ b/templates.json @@ -1806,6 +1806,18 @@ "env": [ { "name": "TZ", "label": "Timezone", "description": "TZ with format \"America/New_York\"" } ] - } + }, + { + "id": 71, + "type": 3, + "title": "SORBA SDE", + "description": "The SORBA Smart Data Engine (SDE) is an industrial data collection/gateway device capable of Advanced Edge Analytics & Machine Learning Edge Processing. SORBA-SDE is equipped with multiple communication driver/protocol applicable to the industrial market. The SORBA-SDE is a sensor/hardware agnostic device that serves as your point & click gateway capable of talking to multiple devices in real-time. The SDE provides easy access to equipment for troubleshooting and remote programming support for PLCs & HMIs utilizing a hassle-free easy, set-up approach to your assets.", + "categories": ["edge"], + "platform": "linux", + "logo": "https://www.gravatar.com/avatar/ee83d0294a89e3dfabd7fcf304db4537?s=120&r=g&d=404", + "repository": { + "url": "https://github.com/portainer/templates", + "stackfile": "edge/sorba-sde/docker-compose.yml" + } ] -} \ No newline at end of file +} From cd44ee1125bcbce1484cb05617e00c18551fbcce Mon Sep 17 00:00:00 2001 From: Andrew Heimerman Date: Tue, 1 Sep 2026 14:30:15 -0500 Subject: [PATCH 15/15] Fixed json formatting --- templates.json | 1 + 1 file changed, 1 insertion(+) diff --git a/templates.json b/templates.json index dbfabe76..3439b76b 100644 --- a/templates.json +++ b/templates.json @@ -1819,5 +1819,6 @@ "url": "https://github.com/portainer/templates", "stackfile": "edge/sorba-sde/docker-compose.yml" } + } ] }