# Install/remove modules via command line Linux

**URL:** <https://forum.inductiveautomation.com/t/install-remove-modules-via-command-line-linux/20897>\
**Category:** Ignition\
**Created:** [November 16, 2018, 12:11am UTC](https://forum.inductiveautomation.com/t/install-remove-modules-via-command-line-linux/20897 "2018-11-16T00:11:01Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![ks0](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ks0/32/6813_2.png) [@ks0](https://forum.inductiveautomation.com/u/ks0)\
**Post date:** [November 16, 2018, 12:11am UTC](https://forum.inductiveautomation.com/t/install-remove-modules-via-command-line-linux/20897/1 "2018-11-16T00:11:01Z")

</div>

I’m using the docker file kindly shared by @kcollins (thanks Kevin, it’s awesome!).

I would love to make the modules installed configurable. Does anybody have any idea if installing or removing modules via command line is possible??

Cheers,  
Keiran

---

<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:** [November 16, 2018, 1:55am UTC](https://forum.inductiveautomation.com/t/install-remove-modules-via-command-line-linux/20897/2 "2018-11-16T01:55:25Z")

</div>

So, if developer module upload is available, you should be able to script a POST to the install URL. I’ve never done that, so I can’t offer an example. What I do instead is load modules by placing them into the server’s modules folder while the gateway is stopped. If you perform a few judicious INSERTs and UPDATEs to config.idb via the sqlite3 command line tool, the modules will run on gateway restart.

To figure out what you need to script with sqlite3:

- Install a fresh gateway, without any projects/tags/etc, then shut it down.
- Use sqlite3’s .dump utility to export config.idb as text.
- Restart the gateway, and install the module of interest, then shut back down.
- Use sqlite3 to do another export, and diff that against the original.

Then you can write a script generate those entries when you load the module file into the modules folder. In my kickstart scripts, using the zip installers, I do the following:

- Extract the zip with none of the modules, distribute to the appropriate folders, tweak the config, and start it up.
- Monitor for the RUNNING state (moderately quick with no modules at all), then shut it back down.
- Extract the desired modules from the zip, add third party modules, adjust config.idb, and start it back up.

---

<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:** [November 16, 2018, 12:42pm UTC](https://forum.inductiveautomation.com/t/install-remove-modules-via-command-line-linux/20897/3 "2018-11-16T12:42:12Z")

</div>

@CHH, I’m glad you’re getting value out of the Docker setup! The procedure that @pturmel mentions is on my list for integration into the Docker solution. If everything goes according to plan, it will work similarly to the gateway restore process—if you mount module files into a specific folder within the container, the entry point script will pick those up and make the needed modifications (for accepting the license and importing the certificate). Hopefully I can make some progress on this over the holidays. I’ve got a bit of a backlog of things on the Ignition/Docker front, but it is on the list! 🙂

---

<div class="post-metadata">

**Author:** ![ks0](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ks0/32/6813_2.png) [@ks0](https://forum.inductiveautomation.com/u/ks0)\
**Post date:** [November 25, 2018, 7:54pm UTC](https://forum.inductiveautomation.com/t/install-remove-modules-via-command-line-linux/20897/4 "2018-11-25T19:54:44Z")

</div>

Great, thanks @pturmel and @Kevin.Collins - I’ll give that a whirl. @Kevin.Collins I’ll push if I end up with anything of value!

---

<div class="post-metadata">

**Author:** ![tate.smith](https://avatars.discourse-cdn.com/v4/letter/t/97f17d/32.png) [@tate.smith](https://forum.inductiveautomation.com/u/tate.smith)\
**Post date:** [May 17, 2019, 4:24pm UTC](https://forum.inductiveautomation.com/t/install-remove-modules-via-command-line-linux/20897/5 "2019-05-17T16:24:10Z")

</div>

> [@pturmel](#):
>
> Extract the desired modules from the zip, add third party modules, adjust config.idb, and start it back up

I am working on a similar issue where I need to make sure to have the docker image come up as expected with appropriate modules installed etc. I am new to ignition-edge in a container...I am curios if the back processes mentioned in another post achieves the same goals or what might i be missing.

---

<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:** [June 15, 2019, 5:11pm UTC](https://forum.inductiveautomation.com/t/install-remove-modules-via-command-line-linux/20897/6 "2019-06-15T17:11:11Z")

</div>

All: The latest push to `kcollins/ignition:8.0.2` and `kcollins/ignition:7.9.11` now have support for third party modules! All you have to do is bind-mount a folder containing the modules you want to add and the entrypoint script will scoop them up and accept the certs/eulas automatically. See the “How to integrate third party modules” section in the guidance on Docker Hub: [https://hub.docker.com/r/kcollins/ignition](https://hub.docker.com/r/kcollins/ignition)

Feedback welcome as always, either here or in a GitHub issue. Enjoy!
