# Third party modules (MQTT-Engine) in Docker kcollins/ignition

**URL:** <https://forum.inductiveautomation.com/t/third-party-modules-mqtt-engine-in-docker-kcollins-ignition/56120>\
**Category:** Ignition\
**Created:** [February 14, 2022, 7:08pm UTC](https://forum.inductiveautomation.com/t/third-party-modules-mqtt-engine-in-docker-kcollins-ignition/56120 "2022-02-14T19:08:04Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![henning.e.heine](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/henning.e.heine/32/70958_2.png) [@henning.e.heine](https://forum.inductiveautomation.com/u/henning.e.heine)\
**Post date:** [February 14, 2022, 7:08pm UTC](https://forum.inductiveautomation.com/t/third-party-modules-mqtt-engine-in-docker-kcollins-ignition/56120/1 "2022-02-14T19:08:04Z")

</div>

Hi there!  
I am trying to start a docker container of kcollins/ignition image with MQTT-Engine as third party module.

This is my run command:

```auto
 docker run -p 8088:8088 -v ~/ignition/modules:/modules -e GATEWAY_ADMIN_PASSWORD=password -d kcollins/ignition:latest

```

The bind mount seems to work: If I enter the container via bash I can see that “MQTT-Engine-signed.modl” is present in /modules.

However the module does not appear on the gateway config page or on the modules page. Gateway restart did not help either.

Did anyone here get this to work?

---

<div class="post-metadata">

**Author:** ![henning.e.heine](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/henning.e.heine/32/70958_2.png) [@henning.e.heine](https://forum.inductiveautomation.com/u/henning.e.heine)\
**Post date:** [February 15, 2022, 7:56am UTC](https://forum.inductiveautomation.com/t/third-party-modules-mqtt-engine-in-docker-kcollins-ignition/56120/2 "2022-02-15T07:56:27Z")

</div>

Ok… I got it to work.

A gatewaybackup - with the required modules allready installed - bound to /restore.gwbk on the container made it work. Modules are available on first start of the container.

---

<div class="post-metadata">

**Author:** ![Kevin.Collins](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.collins/32/13497_2.png) [@Kevin.Collins](https://forum.inductiveautomation.com/u/Kevin.Collins)\
**Post date:** [February 17, 2022, 1:04am UTC](https://forum.inductiveautomation.com/t/third-party-modules-mqtt-engine-in-docker-kcollins-ignition/56120/3 "2022-02-17T01:04:59Z")

</div>

Yes, more specifically, the very first startup of the gateway will not include third-party modules, as the registration has to be conducted against an existing `data/db/config.idb` internal database (which doesn’t exist on a fresh launch). It is sufficient to map in an empty gateway backup (no need to worry about having one with any special configuration).

---

<div class="post-metadata">

**Author:** ![kgamble](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kgamble/32/8019_2.png) [@kgamble](https://forum.inductiveautomation.com/u/kgamble)\
**Post date:** [October 18, 2022, 6:45am UTC](https://forum.inductiveautomation.com/t/third-party-modules-mqtt-engine-in-docker-kcollins-ignition/56120/4 "2022-10-18T06:45:28Z")

</div>

@kcollins or @Kevin.Collins

Are there any plans to implement this more natively in the official image? If it was in the official image it wouldn't require the end-implementer restarting their gateway once, because the official entry point could just do it when its done with the auto-commissioning.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [October 18, 2022, 12:41pm UTC](https://forum.inductiveautomation.com/t/third-party-modules-mqtt-engine-in-docker-kcollins-ignition/56120/5 "2022-10-18T12:41:51Z")

</div>

In the script I supplied years ago that showed how to inject module certificate and license approvals into config.idb, I also showed how I did the commissioning start with no modules present at all. The script would wait for the gateway status to get past commissioning, then shut down, add **all** the modules, and restart.

---

<div class="post-metadata">

**Author:** ![drewdin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/drewdin/32/3363_2.png) [@drewdin](https://forum.inductiveautomation.com/u/drewdin)\
**Post date:** [March 13, 2025, 1:30am UTC](https://forum.inductiveautomation.com/t/third-party-modules-mqtt-engine-in-docker-kcollins-ignition/56120/6 "2025-03-13T01:30:00Z")

</div>

Is this still the recommended way for third party modules?
