# How do you create your own MODL file

**URL:** <https://forum.inductiveautomation.com/t/how-do-you-create-your-own-modl-file/51562>\
**Category:** Module Development\
**Tags:** ignition80\
**Created:** [October 3, 2021, 6:30am UTC](https://forum.inductiveautomation.com/t/how-do-you-create-your-own-modl-file/51562 "2021-10-03T06:30:16Z")\
**Posts on this page:** 1\
**Showing post:** 8

<div class="post-metadata">

**Author:** ![nicholas.robinson](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nicholas.robinson/32/22188_2.png) [@nicholas.robinson](https://forum.inductiveautomation.com/u/nicholas.robinson)\
**Post date:** [October 8, 2021, 8:24pm UTC](https://forum.inductiveautomation.com/t/how-do-you-create-your-own-modl-file/51562/8 "2021-10-08T20:24:56Z")

</div>

@kingbetty511

I'm replying here because I went through this myself recently and I think my feedback might be helpful compared to someone who has huge amount of module design experience (i.e. my experience building modules is sub-novice).

All of this is basically in the SDK guide, but I will say that while reading the guide is indeed very helpful its not going to get you everything, you'll have to gather information from multiple sources. Be ready for that up front.

**Environment**

Install [JDK](https://www.oracle.com/java/technologies/downloads/) and install [intelliJ](https://www.jetbrains.com/idea/). The documentation says to install Maven but you actually don't need to because it is available inside intelliJ. You would use this alot once you get started:

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/3/a/3a462bf15648c714b6b48d8a566516535cce5e3d.png)

**Examples**

The examples provided by Ignition are fantastic, at first get your environment set so you can build and install them. Don't worry about understanding everything, just get to the point where you can create a "modl" file and see what it does after you install it. Two that were extremely helpful to me:

[Scripting Function](https://github.com/inductiveautomation/ignition-sdk-examples/tree/master/scripting-function)  
[Webpage Example](https://github.com/inductiveautomation/ignition-sdk-examples/tree/master/gateway-webpage)

**Installing Unsigned Modules**

To do this, you'll need to edit this file:

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/5/f/5f1b4e162eefcf0ae7a84ee962d49582c9a89cf1.png)

Note that depending on your laptop or company security policy, you may have to adjust the security properties of the file as an administrator in order to edit the file (I had to do this).

Then in the file you add the following text:

> wrapper.java.additional.7=-Dignition.allowunsignedmodules=true

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/f/4/f4a16566a5c5adbbe6963f0454d4100eb754fe9a.png)

After that you have to re-start the Ignition service for the change to go into affect (I use windows). Again for this step, depending on your security policy, you many need administrator rights to do this.

**Signing Modules**

This is talking about self signing. Anything above that I have not yet done. You need to utilize 2 different things: "keytool" which is provided when you install java and the [ignition module signer](https://github.com/inductiveautomation/module-signer).

What you get from the module signer git repository has to be build in intelliJ using

> mvn-package

Once its built you will have these files available:

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/1/e/1e45dcd4b92a0710ca1bfb113c0cf111b04c72a6.png)

At first you need to run the key tool, this is an example of what that looks like. There are more sophisticated and automatic ways of doing this, but this shows the process in CMD.

```auto
CD C:\Program Files\Java\jdk-11.0.12\bin
CALL keytool -genkey -noprompt -alias Company -dname "CN=Company , OU=IT, O=Company , L=National, ST=State, C=US correct?" -keyalg RSA -keypass Password -storepass Password -keystore keystore.jks -validity 3650
CALL keytool -export -alias Company -storepass Password -file certificate.crt -keystore keystore.jks -keypass Password
CALL keytool -import -v -trustcacerts -alias Company -file certificate.crt -keystore cacerts.jks -keypass Password -storepass Password
CALL keytool -export -alias Company -storepass Password -file certificateChain.p7b -keystore cacerts.jks -keypass Password

```

Once you have done that, you will have these files, which are shown here already moved over into the same directory where the module signer lives:

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/6/e/6e95f265ca950ee7825391152ecf5e9577c0e159.png)

The to sign the module you do this, again from CMD:

```auto
java -jar module-signer-1.0.0-SNAPSHOT-jar-with-dependencies.jar -keystore=keystore.jks -keystore-pwd=Password -alias=Company-alias-pwd=Password -chain=certificateChain.p7b -module-in=C:/Users/N0R01DF/Kafka/kafka-build/target/Kafka-Ignition-Module-unsigned.modl -module-out=C:/Users/N0R01DF/Kafka/kafka-build/target/Kafka-Ignition-Module-signed.modl

```

Then finally at the end of the yellow brick road you have your signed file and you're happily on your way.

**Building Javascript files (Webpage Example)**

This is in the webpage example but it took me a minute or two to figure out which is why I'll reiterate it here (for windows). You need to install this:

> **[GitHub - coreybutler/nvm-windows: A node.js version management utility for...](https://github.com/coreybutler/nvm-windows)**
>
> A node.js version management utility for Windows. Ironically written in Go. - GitHub - coreybutler/nvm-windows: A node.js version management utility for Windows. Ironically written in Go.

Once that is installed and you have your CMD (in admin mode) pointed at the javescript folder, you do this:

If its the first time and you have no npm installed:

```auto
nvm install latest
nvm use latest
# you can also specify a version from nvm list

```

Then to build the webpage example you do this:

```auto
npm run build:prod #r dev

```

Happy building!

Cheers,

Nick

---

_[View the full topic](https://forum.inductiveautomation.com/t/how-do-you-create-your-own-modl-file/51562)._
