Skip to content

R2025a Release #21

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
May 15, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 32 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
@@ -23,15 +23,15 @@ Deploying MATLAB Web App Server on Azure automatically deploys a network license
To deploy the reference architecture, select your MATLAB Web App Server release from the table and follow the instructions to deploy the server using the provided template.
| Release | Supported MATLAB Runtime Versions |
| ------- | --------------------------------- |
| [R2025a](releases/R2025a/README.md) | R2025a, R2024b, R2024a, R2023b, R2023a*, R2022b* |
| [R2024b](releases/R2024b/README.md) | R2024b, R2024a, R2023b, R2023a*, R2022b*, R2022a* |
| [R2024a](releases/R2024a/README.md) | R2024a, R2023b, R2023a, R2022b, R2022a, R2021b |
| [R2023b](releases/R2023b/README.md) | R2023b, R2023a, R2022b, R2022a, R2021b |
| [R2023a](releases/R2023a/README.md) | R2023a, R2022b, R2022a, R2021b, R2021a, R2020b |
| [R2022b](releases/R2022b/README.md) | R2022b, R2022a, R2021b, R2021a, R2020b, R2020a |
| [R2022a](releases/R2022a/README.md) | R2022a, R2021b, R2021a, R2020b, R2020a, R2019b |

> [!WARNING]
> \*When the server is configured to use MATLAB Runtime versions prior to R2023b, the `unsafe-inline` attribute is set in the `script-src` directive of the server's Content Security Policy on the server and cannot be removed. The attribute allows inline JavaScript execution and event handlers contained within a web app to execute on the server. These runtimes are disabled by default in R2024b. You can enable them using the [webapps-runtime](https://www.mathworks.com/help/webappserver/ref/webappsruntime.html) command.
> \*When the server is configured to use MATLAB Runtime versions prior to R2023b, the `unsafe-inline` attribute is set in the `script-src` directive of the server's Content Security Policy on the server and cannot be removed. The attribute allows inline JavaScript execution and event handlers contained within a web app to execute on the server. These runtimes are disabled by default starting in R2024b. You can enable them using the [webapps-runtime](https://www.mathworks.com/help/webappserver/ref/webappsruntime.html) command.

MathWorks provides templates for only the six most recent releases of MATLAB Web App Server. Earlier templates are removed and are no longer supported.

@@ -68,35 +68,51 @@ If you are deploying a new network license manager, the following resources will
# FAQ
## How do I deploy to an existing virtual network?
>**Note:** Your existing virtual network must have at least two available subnets for deployment.
1. To deploy MATLAB Web App Server to an existing virtual network, set the **Deploy to New or Existing Virtual Network** paratmeter to `existing`.
1. Set the following parameter values in the template based on your existing virtual network and open the ports listed below.

| Parameter Name | Value |
|-------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **Resource Group Name of Virtual Network** | Specify the name of the Azure resource group that has your existing virtual network. |
| **Name of Virtual Network Where MATLAB Web App Server Will Be Deployed** | Specify the name of the existing virtual network where the server will be deployed. |
| **Virtual Network CIDR Range** | Specify existing virtual network CIDR range. |
| **Name of Subnet for MATLAB Web App Server** | Specify the name of a subnet within the existing virtual network that the server can use. |
| **Server Subnet CIDR Range** | Specify existing virtual network subnet CIDR range. |
| **Specify Private IP Address to VM Hosting MATLAB Web App Server** | Specify a private IP address to the VM hosting the server. For example: 10.0.0.4 . |

### **Ports to Open in Existing Virtual Network**

### Ports to Open in Existing Virtual Network
If you are deploying MATLAB Web App Server to an existing virtual network, you must open the following ports in your virtual network:
| Port | Description |
|------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `443` | HTTPS - the port Web App Server will service if SSL is enabled |
| `22` | SSH - used for remoting into Linux machines |
| `3389` | RDP - used for remoting into Windows machines |
| `27000` | Required for communication between network license manager and Web App Server |

### Create Service Endpoint in Virtual Network (Since R2025a)
Starting in R2025a, if you are using an existing virtual network and assign a public IP address to the VM hosting MATLAB Web App Server, then you must manually add a service endpoint to the virtual network *before* deploying MATLAB Web App Server in order to create and access the storage account. For more details, see [Grant access from a virtual network](https://learn.microsoft.com/en-us/azure/storage/common/storage-network-security?tabs=azure-portal#grant-access-from-a-virtual-network) in the Microsoft Azure documentation.

You can check if such an endpoint already exists by navigating to the Azure Portal, selecting your virtual network, and clicking **Service endpoints**. If no such endpoint is present, follow these steps:
1. In the Azure Portal, click **Resource groups** and select the virtual network for this deployment.
1. In the left navigation menu, expand the **Settings** category and click **Service endpoints**.
1. Click **Add** to add the new endpoint. It must have the following parameters:

<table>
<tr><td><b>Service</b></td><td>Microsoft.Storage</td></tr>
<tr><td><b>Subnet</b></td><td>Name of subnet in which the storage account will be deployed</td></tr>
</table>

For more information on creating endpoints, see [Create and associate service endpoint policies](https://learn.microsoft.com/en-us/azure/virtual-network/virtual-network-service-endpoint-policies).

### Deploy to Existing Virtual Network
To deploy MATLAB Web App Server to an existing virtual network, in the deployment template, set the **Deploy to New or Existing Virtual Network** parameter to `existing`.

Set the following parameter values in the template based on your existing virtual network.

| Parameter Name | Value |
|-------------------|-----------|
| **Resource Group Name of Virtual Network** | Specify the name of the Azure resource group that has your existing virtual network. |
| **Name of Virtual Network Where MATLAB Web App Server Will Be Deployed** | Specify the name of the existing virtual network where the server will be deployed. |
| **Virtual Network CIDR Range** | Specify existing virtual network CIDR range. |
| **Name of Subnet for MATLAB Web App Server** | Specify the name of a subnet within the existing virtual network that the server can use. |
| **Server Subnet CIDR Range** | Specify existing virtual network subnet CIDR range. |
| **Specify Private IP Address to VM Hosting MATLAB Web App Server** | Specify a private IP address to the VM hosting the server. For example: 10.0.0.4 . |

## How do I configure OIDC authentication?
1. To use OIDC authentication on the server, you need to register with an IdP such as Microsoft® Azure® AD, or Google® Identity Platform. MATLAB Web App Server must be registered as an application with the IdP.
1. During the registration process, you need a redirect URL for MATLAB Web App Server. The format of the URL is: `https://<MATLABWebAppServer_hostname>:<port_server_is_running_on>/webapps/extauth/callback`. For example: `https://example.com:9988/webapps/extauth/callback`.
1. Create a file named `webapps_authn.json` using the JSON schema specified [here](https://www.mathworks.com/help/webappserver/ug/authentication.html#mw_908077ba-725e-4cc9-a906-a1bf29fceaf8) and place it in the `webapps_private` folder of the server. For folder location, see the [doc](https://www.mathworks.com/help/webappserver/ug/authentication.html#mw_146e67b0-5dff-4310-8d5d-544250e931a9).
1. To place the `webapps_authn.json` file in the `webapps_private` folder of the server, you need to remotely connect to the server using RDP on Windows or SCP on Linux. Once connected, you can drag-and-drop the `webapps_authn.json` file you created into the `webapps_private` folder of the server. Alternatively, you can drop the file into the file share first, before moving it to the `webapps_private` folder.
1. Restart the server by executing `webapps-restart` from a terminal on the the server machine. The `webapps-restart` command is located in the `script` folder within the default installation location. For default location, see the [doc](https://www.mathworks.com/help/webappserver/ug/set-up-matlab-web-app-server.html#responsive_offcanvas).
1. Restart the server by executing `webapps-restart` from a terminal on the server machine. The `webapps-restart` command is located in the `script` folder within the default installation location. For default location, see the [doc](https://www.mathworks.com/help/webappserver/ug/set-up-matlab-web-app-server.html#responsive_offcanvas).

## How do I remotely connect to the server virtual machine?
### Windows Virtual Machine
330 changes: 0 additions & 330 deletions releases/R2022a/templates/azuredeploy-existing-vnet-R2022a.json

This file was deleted.

468 changes: 0 additions & 468 deletions releases/R2022a/templates/mainTemplate.json

This file was deleted.

12 changes: 6 additions & 6 deletions releases/R2022b/README.md
Original file line number Diff line number Diff line change
@@ -11,7 +11,7 @@ To deploy resources on Azure, click **Deploy to Azure**. The Azure Portal open i
<p><strong>Note:</strong> Creating resources on Azure can take up to 10 minutes.</p>

## Step 2. Configure Cloud Resources
Provide values for parameters in the custom deployment template on the Azure Portal :
Provide values for parameters in the custom deployment template on the Azure Portal:

| Parameter Name | Value |
|-------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
@@ -30,10 +30,10 @@ Provide values for parameters in the custom deployment template on the Azure Por
| **Assign Public IP Address to VM Hosting MATLAB Web App Server** | Select `Yes` if you want to assign a public IP address to the VM hosting the server. Otherwise, select `No`. If you select 'No', you must create a new virtual machine and add it to the same virtual network as the MATLAB Web App Server deployment. The ability to access the web apps home page or remotely connect to the server machine can be accomplished only through this virtual machine.|
| **IP Addresses Permitted to Remote into Server VM in CIDR Notation** | Specify the range of IP addresses in CIDR notation that can remote into the VM hosting MATLAB Web App Server and administer it. The format for CIDR addresses is IP Address/Mask. <p><em>Example</em>: `x.x.x.x/32`</p> You may also specify a comma separated list of CIDR addresses (no spaces). <p><em>*Example*</em>: `x.x.x.x/32,x.x.x.x/32`</p> <ul><li> To determine your IP address, you can search for **"what is my ip address"** on the web. The mask determines the number of IP addresses to include.</li><li>A mask of 32 is a single IP address.</li><li>Use a [CIDR calculator](https://www.ipaddressguide.com/cidr) if you need a range of more than one IP address.</li><li>You may need to contact your IT administrator to determine which address is appropriate.</li></ul>**NOTE:** Restricting access to the server using an IP address is not a form of authentication. MATLAB Web App Server supports authentication using OIDC. For details, see [Authentication](https://www.mathworks.com/help/webappserver/ug/authentication.html).|
| **IP Addresses Allowed to Access MATLAB Web App Server Apps Home Page in CIDR Notation** | Specify the range of IP addresses that can access the MATLAB Web App Server apps home page in CIDR notation. The format for CIDR addresses is IP Address/Mask. <p><em>*Example*</em>: `x.x.x.x/24`</p> You may also specify a comma separated list of CIDR addresses (no spaces). <p><em>*Example*</em>: `x.x.x.x/24,z.z.z.z/24`</p> |
| **Base64 Encoded SSL Certificate** | Enter a string that is a base64-encoded value of an SSL certificate in PEM format. On Windows, you can Base64 encode a PEM file using a utility such as openssl. On Linux, you can Base64 encode a PEM file using the following command in the terminal: <p> ```base64 -w 0 "cert.pem" > "cert.txt"``` </p> You may need to change the filename arguments accordingly. The contents of the output file (here "cert.txt") should be used for this parameter. <p><strong>NOTE:</strong><ul><li>MATLAB Web App Server only supports the `.pem` SSL certificate format.</li><li>SSL keys must be 2048 bits in length and must be private.</li><li>Intermediate certificates are not supported by the server.</li><li>SSL certificate should not be password protected.</li><li>Private key should not be password protected.</li></ul>|
| **Base64 Encoded SSL Private Key** | Enter a string that is a base64-encoded value of an SSL private key file in PEM format. On Windows, you can Base64 encode a PEM file using a utility such as openssl. On Linux, you can Base64 encode a PEM file using the following command in the terminal: <p> ```base64 -w 0 "key.pem" > "key.txt"``` </p> You may need to change the filename arguments accordingly. The contents of the output file (here "key.txt") should be used for this parameter. |
| **Username to Remote into Server VM** | Specify a username to use when remoting into server VM hosting MATLAB Web App Server. The username must be at least 7 characters long. This username is also used to login to the network license manager portal. For example: webappadmin. You cannot use "admin" as a username. |
| **Password to Remote into Server VM and Network License Manager Web Interface** | Specify a password to use when remoting into server VM hosting MATLAB Web App Server. This password is also used to login to the network license manager portal. |
| **Base64 Encoded SSL Certificate** | Enter a string that is a base64-encoded value of an SSL certificate in PEM format. On Linux, you can Base64 encode a PEM file using the following command in the terminal: <p> ```base64 -w 0 "cert.pem" > "cert.txt"``` </p> On Windows, you can Base64 encode a PEM file with a utility such as openssl or by using the following command in a PowerShell terminal: <p> ```[Convert]::ToBase64String([System.IO.File]::ReadAllBytes("cert.pem")) \| Set-Content -NoNewline -Encoding Ascii "cert.txt"``` </p> You may need to change the filename arguments accordingly. The contents of the output file (here "cert.txt") should be used for this parameter. <p><strong>NOTE:</strong><ul><li>MATLAB Web App Server only supports the `.pem` SSL certificate format.</li><li>SSL keys must be 2048 bits in length and must be private.</li><li>Intermediate certificates are not supported by the server.</li><li>SSL certificate should not be password protected.</li><li>Private key should not be password protected.</li></ul>|
| **Base64 Encoded SSL Private Key** | Enter a string that is a base64-encoded value of an SSL private key file in PEM format. On Linux, you can Base64 encode a PEM file using the following command in the terminal: <p> ```base64 -w 0 "key.pem" > "key.txt"``` </p> On Windows, you can Base64 encode a PEM file with a utility such as openssl or by using the following command in a PowerShell terminal: <p> ```[Convert]::ToBase64String([System.IO.File]::ReadAllBytes("key.pem")) \| Set-Content -NoNewline -Encoding Ascii "key.txt"``` </p> You may need to change the filename arguments accordingly. The contents of the output file (here `"key.txt"`) should be used for this parameter. |
| **Username to Remote into Server VM** | Specify a username to use when remoting into server VM hosting MATLAB Web App Server. The username must be at least 7 characters long. This username is also used to login to the network license manager portal. For example: `webappadmin`. You cannot use `admin` as a username. |
| **Password to Remote into Server VM and Network License Manager Web Interface** | Specify a password to use when remoting into server VM hosting MATLAB Web App Server. This password is also used to login to the network license manager portal. Password requirements are: <p><ul><li>Must be between 12-123 characters.</li><li>Have uppercase and lowercase characters.</li><li>Have a digit.</li><li>Have a special character.</li></ul> |
| **Deploy Network License Manager** | Select whether you want to deploy the Network License Manager for MATLAB to manage your license files. Selecting 'Yes' deploys the Network License Manager for MATLAB reference architecture. Select 'No' if you want to use an existing license manager. When using an existing license manager, the MATLAB Web App Server deployment and the license manager must be in the same virtual network.|

Click **Create** to begin the deployment. This can take up to 10 minutes.
@@ -61,7 +61,7 @@ To run applications on MATLAB Web App Server, you need to create applications us
>**NOTE:**The network license manager MAC address is available only after the deployment to the cloud is complete.
To get the MAC address of the network license manager:
1. Log in to the Network License Manager for MATLAB dashboard using the username and password you specified in the [Configure Cloud Resources](#step-2-configure-cloud-resources) step of the deployment process.
1. Click Administration > License.
1. Click **Administration** and then **License**.
1. Copy the license server MAC address displayed at the top.

# Upload Apps
14 changes: 7 additions & 7 deletions releases/R2023a/README.md
Original file line number Diff line number Diff line change
@@ -11,7 +11,7 @@ To deploy resources on Azure, click **Deploy to Azure**. The Azure Portal open i
<p><strong>Note:</strong> Creating resources on Azure can take up to 10 minutes.</p>

## Step 2. Configure Cloud Resources
Provide values for parameters in the custom deployment template on the Azure Portal :
Provide values for parameters in the custom deployment template on the Azure Portal:

| Parameter Name | Value |
|-------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
@@ -20,19 +20,19 @@ Provide values for parameters in the custom deployment template on the Azure Por
| **Region** | Choose the region to start resources in. Ensure that you select a location which supports your requested instance types. To check which services are supported in each location, see [Azure Region Services](<https://azure.microsoft.com/en-gb/regions/services/>). <p><em>Example:</em> `East US`</p> |
| **Server VM Instance Size** | Specify the size of the VM you plan on using for deployment. Each MATLAB Web App Server instance runs on a VM and each instance will run multiple workers. We recommend you choose a VM size where the number of cores on your VM match the number of MATLAB workers per VM you plan on using. The template defaults to: `Standard_D4_v3`. This configuration has 4 vCPUs and 16 GiB of Memory. For more information, see Azure [documentation](https://docs.microsoft.com/en-us/azure/virtual-machines/windows/sizes-general). <p><em>Example:</em> `Standard_D4_v3`</p> |
| **Operating System**| Choose the operating system for the server. Your options are `Windows` or `Linux`. |
|**Deploy to New or Existing Virtual Network**| Specify whether you want to create a `new` virtual network for your deployment or use an `existing` one. When deploying to a new virtual network, by default, the ports listed in [below](#how-do-i-deploy-to-an-existing-virtual-network) are opened. Depending on your security requirements, you can choose to close ports 22 and 3389 after the deployment is complete. |
|**Deploy to New or Existing Virtual Network**| Specify whether you want to create a `new` virtual network for your deployment or use an `existing` one. When deploying to a new virtual network, by default, the ports listed [here](/README.md#ports-to-open-in-existing-virtual-network) are opened. Depending on your security requirements, you can choose to close ports 22 and 3389 after the deployment is complete. |
| **Name of Virtual Network Where MATLAB Web App Server Will Be Deployed** | Specify the name of the virtual network where the server will be deployed.<ul><li>If deploying to a new virtual network, you can use the default `webapp-refarch-vnet` name or specify a new name for the virtual network.</li><li>If deploying to an existing virtual network, the name you specify must match the name of an existing virtual network.</li></ul> |
| **Resource Group Name of Virtual Network** | <ul><li>If deploying to a new virtual network, leave the default `resourceGroup().name` value unchanged.</li><li>If deploying to an existing virtual network, specify the name of the resource group containing the existing existing virtual network. For example: `webappserver_rsg`.</li></ul> |
| **Virtual Network CIDR Range** | Specify the virtual network CIDR range. For example: `10.0.0.0/16` .<ul><li>If deploying to a new virtual network, specify a suitable CIDR range to be used for the new virtual network.</li><li>If deploying to an existing virtual network, this must match the CIDR range of the existing virtual network.</li></ul> |
| **Name of Subnet for MATLAB Web App Server** | Specify the name of the subnet that the server can use.<ul><li>If deploying to a new virtual network, this specifies the name of the subnet to be created in the virtual network.</li><li>If deploying to an existing virtual network, this must match the name of a subnet in the existing virtual network.</li></ul> |
| **Server Subnet CIDR Range** | Specify subnet CIDR range. This is a CIDR range for the subnet specified above. For example: `10.0.0.0/24` .<ul><li>If deploying to a new virtual network, specify a suitable CIDR range to be used for the new subnet.</li><li>If deploying to an existing virtual network, this must match the CIDR range of the existing subnet.</li></ul> |
| **Specify Private IP Address to VM Hosting MATLAB Web App Server** | Specify an unused private IP address to be assigned to the VM hosting the server. For example: `10.0.0.4` . |
| **Assign Public IP Address to VM Hosting MATLAB Web App Server** | Select `Yes` if you want to assign a public IP address to the VM hosting the server. Otherwise, select `No`. If you select 'No', you must create a new virtual machine and add it to the same virtual network as the MATLAB Web App Server deployment. The ability to access the web apps home page or remotely connect to the server machine can be accomplished only through this virtual machine.|
| **IP Addresses Permitted to Remote into Server VM in CIDR Notation** | Specify the range of IP addresses in CIDR notation that can remote into the VM hosting MATLAB Web App Server and administer it. The format for CIDR addresses is IP Address/Mask. <p><em>Example</em>: `x.x.x.x/32`</p> You may also specify a comma separated list of CIDR addresses (no spaces). <p><em>*Example*</em>: `x.x.x.x/32,x.x.x.x/32`</p> <ul><li> To determine your IP address, you can search for **"what is my ip address"** on the web. The mask determines the number of IP addresses to include.</li><li>A mask of 32 is a single IP address.</li><li>Use a [CIDR calculator](https://www.ipaddressguide.com/cidr) if you need a range of more than one IP address.</li><li>You may need to contact your IT administrator to determine which address is appropriate.</li></ul>**NOTE:** Restricting access to the server using an IP address is not a form of authentication. MATLAB Web App Server supports authentication using OIDC. For details, see [Authentication](https://www.mathworks.com/help/webappserver/ug/authentication.html).|
| **IP Addresses Permitted to Remote into Server VM in CIDR Notation** | Specify the range of IP addresses in CIDR notation that can remote into the VM hosting MATLAB Web App Server and administer it. The format for CIDR addresses is IP Address/Mask. <p><em>Example</em>: `x.x.x.x/32`</p><ul><li> To determine your IP address, you can search for **"what is my ip address"** on the web. The mask determines the number of IP addresses to include.</li><li>A mask of 32 is a single IP address.</li><li>Use a [CIDR calculator](https://www.ipaddressguide.com/cidr) if you need a range of more than one IP address.</li><li>You may need to contact your IT administrator to determine which address is appropriate.</li></ul>**NOTE:** Restricting access to the server using an IP address is not a form of authentication. MATLAB Web App Server supports authentication using OIDC. For details, see [Authentication](https://www.mathworks.com/help/webappserver/ug/authentication.html).|
| **IP Addresses Allowed to Access MATLAB Web App Server Apps Home Page in CIDR Notation** | Specify the range of IP addresses that can access the MATLAB Web App Server apps home page in CIDR notation. The format for CIDR addresses is IP Address/Mask. <p><em>*Example*</em>: `x.x.x.x/24`</p> You may also specify a comma separated list of CIDR addresses (no spaces). <p><em>*Example*</em>: `x.x.x.x/24,z.z.z.z/24`</p> |
| **Base64 Encoded SSL Certificate** | Enter a string that is a base64-encoded value of an SSL certificate in PEM format. On Windows, you can Base64 encode a PEM file using a utility such as openssl. On Linux, you can Base64 encode a PEM file using the following command in the terminal: <p> ```base64 -w 0 "cert.pem" > "cert.txt"``` </p> You may need to change the filename arguments accordingly. The contents of the output file (here "cert.txt") should be used for this parameter. <p><strong>NOTE:</strong><ul><li>MATLAB Web App Server only supports the `.pem` SSL certificate format.</li><li>SSL keys must be 2048 bits in length and must be private.</li><li>Intermediate certificates are not supported by the server.</li><li>SSL certificate should not be password protected.</li><li>Private key should not be password protected.</li></ul>|
| **Base64 Encoded SSL Private Key** | Enter a string that is a base64-encoded value of an SSL private key file in PEM format. On Windows, you can Base64 encode a PEM file using a utility such as openssl. On Linux, you can Base64 encode a PEM file using the following command in the terminal: <p> ```base64 -w 0 "key.pem" > "key.txt"``` </p> You may need to change the filename arguments accordingly. The contents of the output file (here "key.txt") should be used for this parameter. |
| **Username to Remote into Server VM** | Specify a username to use when remoting into server VM hosting MATLAB Web App Server. The username must be at least 7 characters long. This username is also used to login to the network license manager portal. For example: webappadmin. You cannot use "admin" as a username. |
| **Base64 Encoded SSL Certificate** | Enter a string that is a base64-encoded value of an SSL certificate in PEM format. On Linux, you can Base64 encode a PEM file using the following command in the terminal: <p> ```base64 -w 0 "cert.pem" > "cert.txt"``` </p> On Windows, you can Base64 encode a PEM file with a utility such as openssl or by using the following command in a PowerShell terminal: <p> ```[Convert]::ToBase64String([System.IO.File]::ReadAllBytes("cert.pem")) \| Set-Content -NoNewline -Encoding Ascii "cert.txt"``` </p> You may need to change the filename arguments accordingly. The contents of the output file (here "cert.txt") should be used for this parameter. <p><strong>NOTE:</strong><ul><li>MATLAB Web App Server only supports the `.pem` SSL certificate format.</li><li>SSL keys must be 2048 bits in length and must be private.</li><li>Intermediate certificates are not supported by the server.</li><li>SSL certificate should not be password protected.</li><li>Private key should not be password protected.</li></ul>|
| **Base64 Encoded SSL Private Key** | Enter a string that is a base64-encoded value of an SSL private key file in PEM format. On Linux, you can Base64 encode a PEM file using the following command in the terminal: <p> ```base64 -w 0 "key.pem" > "key.txt"``` </p> On Windows, you can Base64 encode a PEM file with a utility such as openssl or by using the following command in a PowerShell terminal: <p> ```[Convert]::ToBase64String([System.IO.File]::ReadAllBytes("key.pem")) \| Set-Content -NoNewline -Encoding Ascii "key.txt"``` </p> You may need to change the filename arguments accordingly. The contents of the output file (here `"key.txt"`) should be used for this parameter. |
| **Username to Remote into Server VM** | Specify a username to use when remoting into server VM hosting MATLAB Web App Server. The username must be at least 7 characters long. This username is also used to login to the network license manager portal. For example: `webappadmin`. You cannot use `admin` as a username. |
| **Password to Remote into Server VM and Network License Manager Web Interface** | Specify a password to use when remoting into server VM hosting MATLAB Web App Server. This password is also used to login to the network license manager portal. Password requirements are: <p><ul><li>Must be between 12-123 characters.</li><li>Have uppercase and lowercase characters.</li><li>Have a digit.</li><li>Have a special character.</li></ul> |
| **Deploy Network License Manager** | Select whether you want to deploy the Network License Manager for MATLAB to manage your license files. Selecting 'Yes' deploys the Network License Manager for MATLAB reference architecture. Select 'No' if you want to use an existing license manager. When using an existing license manager, the MATLAB Web App Server deployment and the license manager must be in the same virtual network.|

@@ -61,7 +61,7 @@ To run applications on MATLAB Web App Server, you need to create applications us
>**NOTE:**The network license manager MAC address is available only after the deployment to the cloud is complete.
To get the MAC address of the network license manager:
1. Log in to the Network License Manager for MATLAB dashboard using the username and password you specified in the [Configure Cloud Resources](#step-2-configure-cloud-resources) step of the deployment process.
1. Click Administration > License.
1. Click **Administration** and then **License**.
1. Copy the license server MAC address displayed at the top.

# Upload Apps
10 changes: 5 additions & 5 deletions releases/R2023b/README.md
Original file line number Diff line number Diff line change
@@ -11,7 +11,7 @@ To deploy resources on Azure, click **Deploy to Azure**. The Azure Portal open i
<p><strong>Note:</strong> Creating resources on Azure can take up to 10 minutes.</p>

## Step 2. Configure Cloud Resources
Provide values for parameters in the custom deployment template on the Azure Portal :
Provide values for parameters in the custom deployment template on the Azure Portal:

| Parameter Name | Value |
|-------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
@@ -30,9 +30,9 @@ Provide values for parameters in the custom deployment template on the Azure Por
| **Assign Public IP Address to VM Hosting MATLAB Web App Server** | Select `Yes` if you want to assign a public IP address to the VM hosting the server. Otherwise, select `No`. If you select 'No', you must create a new virtual machine and add it to the same virtual network as the MATLAB Web App Server deployment. The ability to access the web apps home page or remotely connect to the server machine can be accomplished only through this virtual machine.|
| **IP Addresses Permitted to Remote into Server VM in CIDR Notation** | Specify the range of IP addresses in CIDR notation that can remote into the VM hosting MATLAB Web App Server and administer it. The format for CIDR addresses is IP Address/Mask. <p><em>Example</em>: `x.x.x.x/32`</p><ul><li> To determine your IP address, you can search for **"what is my ip address"** on the web. The mask determines the number of IP addresses to include.</li><li>A mask of 32 is a single IP address.</li><li>Use a [CIDR calculator](https://www.ipaddressguide.com/cidr) if you need a range of more than one IP address.</li><li>You may need to contact your IT administrator to determine which address is appropriate.</li></ul>**NOTE:** Restricting access to the server using an IP address is not a form of authentication. MATLAB Web App Server supports authentication using OIDC. For details, see [Authentication](https://www.mathworks.com/help/webappserver/ug/authentication.html).|
| **IP Addresses Allowed to Access MATLAB Web App Server Apps Home Page in CIDR Notation** | Specify the range of IP addresses that can access the MATLAB Web App Server apps home page in CIDR notation. The format for CIDR addresses is IP Address/Mask. <p><em>*Example*</em>: `x.x.x.x/24`</p> You may also specify a comma separated list of CIDR addresses (no spaces). <p><em>*Example*</em>: `x.x.x.x/24,z.z.z.z/24`</p> |
| **Base64 Encoded SSL Certificate** | Enter a string that is a base64-encoded value of an SSL certificate in PEM format. On Windows, you can Base64 encode a PEM file using a utility such as openssl. On Linux, you can Base64 encode a PEM file using the following command in the terminal: <p> ```base64 -w 0 "cert.pem" > "cert.txt"``` </p> You may need to change the filename arguments accordingly. The contents of the output file (here "cert.txt") should be used for this parameter. <p><strong>NOTE:</strong><ul><li>MATLAB Web App Server only supports the `.pem` SSL certificate format.</li><li>SSL keys must be 2048 bits in length and must be private.</li><li>Intermediate certificates are not supported by the server.</li><li>SSL certificate should not be password protected.</li><li>Private key should not be password protected.</li></ul>|
| **Base64 Encoded SSL Private Key** | Enter a string that is a base64-encoded value of an SSL private key file in PEM format. On Windows, you can Base64 encode a PEM file using a utility such as openssl. On Linux, you can Base64 encode a PEM file using the following command in the terminal: <p> ```base64 -w 0 "key.pem" > "key.txt"``` </p> You may need to change the filename arguments accordingly. The contents of the output file (here "key.txt") should be used for this parameter. |
| **Username to Remote into Server VM** | Specify a username to use when remoting into server VM hosting MATLAB Web App Server. The username must be at least 7 characters long. This username is also used to login to the network license manager portal. For example: webappadmin. You cannot use "admin" as a username. |
| **Base64 Encoded SSL Certificate** | Enter a string that is a base64-encoded value of an SSL certificate in PEM format. On Linux, you can Base64 encode a PEM file using the following command in the terminal: <p> ```base64 -w 0 "cert.pem" > "cert.txt"``` </p> On Windows, you can Base64 encode a PEM file with a utility such as openssl or by using the following command in a PowerShell terminal: <p> ```[Convert]::ToBase64String([System.IO.File]::ReadAllBytes("cert.pem")) \| Set-Content -NoNewline -Encoding Ascii "cert.txt"``` </p> You may need to change the filename arguments accordingly. The contents of the output file (here "cert.txt") should be used for this parameter. <p><strong>NOTE:</strong><ul><li>MATLAB Web App Server only supports the `.pem` SSL certificate format.</li><li>SSL keys must be 2048 bits in length and must be private.</li><li>Intermediate certificates are not supported by the server.</li><li>SSL certificate should not be password protected.</li><li>Private key should not be password protected.</li></ul>|
| **Base64 Encoded SSL Private Key** | Enter a string that is a base64-encoded value of an SSL private key file in PEM format. On Linux, you can Base64 encode a PEM file using the following command in the terminal: <p> ```base64 -w 0 "key.pem" > "key.txt"``` </p> On Windows, you can Base64 encode a PEM file with a utility such as openssl or by using the following command in a PowerShell terminal: <p> ```[Convert]::ToBase64String([System.IO.File]::ReadAllBytes("key.pem")) \| Set-Content -NoNewline -Encoding Ascii "key.txt"``` </p> You may need to change the filename arguments accordingly. The contents of the output file (here `"key.txt"`) should be used for this parameter. |
| **Username to Remote into Server VM** | Specify a username to use when remoting into server VM hosting MATLAB Web App Server. The username must be at least 7 characters long. This username is also used to login to the network license manager portal. For example: `webappadmin`. You cannot use `admin` as a username. |
| **Password to Remote into Server VM and Network License Manager Web Interface** | Specify a password to use when remoting into server VM hosting MATLAB Web App Server. This password is also used to login to the network license manager portal. Password requirements are: <p><ul><li>Must be between 12-123 characters.</li><li>Have uppercase and lowercase characters.</li><li>Have a digit.</li><li>Have a special character.</li></ul> |
| **Deploy Network License Manager** | Select whether you want to deploy the Network License Manager for MATLAB to manage your license files. Selecting 'Yes' deploys the Network License Manager for MATLAB reference architecture. Select 'No' if you want to use an existing license manager. When using an existing license manager, the MATLAB Web App Server deployment and the license manager must be in the same virtual network.|

@@ -61,7 +61,7 @@ To run applications on MATLAB Web App Server, you need to create applications us
>**NOTE:**The network license manager MAC address is available only after the deployment to the cloud is complete.
To get the MAC address of the network license manager:
1. Log in to the Network License Manager for MATLAB dashboard using the username and password you specified in the [Configure Cloud Resources](#step-2-configure-cloud-resources) step of the deployment process.
1. Click Administration > License.
1. Click **Administration** and then **License**.
1. Copy the license server MAC address displayed at the top.

# Upload Apps
10 changes: 5 additions & 5 deletions releases/R2024a/README.md
Original file line number Diff line number Diff line change
@@ -11,7 +11,7 @@ To deploy resources on Azure, click **Deploy to Azure**. The Azure Portal open i
<p><strong>Note:</strong> Creating resources on Azure can take up to 10 minutes.</p>

## Step 2. Configure Cloud Resources
Provide values for parameters in the custom deployment template on the Azure Portal :
Provide values for parameters in the custom deployment template on the Azure Portal:

| Parameter Name | Value |
|-------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
@@ -30,9 +30,9 @@ Provide values for parameters in the custom deployment template on the Azure Por
| **Assign Public IP Address to VM Hosting MATLAB Web App Server** | Select `Yes` if you want to assign a public IP address to the VM hosting the server. Otherwise, select `No`. If you select 'No', you must create a new virtual machine and add it to the same virtual network as the MATLAB Web App Server deployment. The ability to access the web apps home page or remotely connect to the server machine can be accomplished only through this virtual machine.|
| **IP Addresses Permitted to Remote into Server VM in CIDR Notation** | Specify the range of IP addresses in CIDR notation that can remote into the VM hosting MATLAB Web App Server and administer it. The format for CIDR addresses is IP Address/Mask. <p><em>Example</em>: `x.x.x.x/32`</p><ul><li> To determine your IP address, you can search for **"what is my ip address"** on the web. The mask determines the number of IP addresses to include.</li><li>A mask of 32 is a single IP address.</li><li>Use a [CIDR calculator](https://www.ipaddressguide.com/cidr) if you need a range of more than one IP address.</li><li>You may need to contact your IT administrator to determine which address is appropriate.</li></ul>**NOTE:** Restricting access to the server using an IP address is not a form of authentication. MATLAB Web App Server supports authentication using OIDC. For details, see [Authentication](https://www.mathworks.com/help/webappserver/ug/authentication.html).|
| **IP Addresses Allowed to Access MATLAB Web App Server Apps Home Page in CIDR Notation** | Specify the range of IP addresses that can access the MATLAB Web App Server apps home page in CIDR notation. The format for CIDR addresses is IP Address/Mask. <p><em>*Example*</em>: `x.x.x.x/24`</p> You may also specify a comma separated list of CIDR addresses (no spaces). <p><em>*Example*</em>: `x.x.x.x/24,z.z.z.z/24`</p> |
| **Base64 Encoded SSL Certificate** | Enter a string that is a base64-encoded value of an SSL certificate in PEM format. On Windows, you can Base64 encode a PEM file using a utility such as openssl. On Linux, you can Base64 encode a PEM file using the following command in the terminal: <p> ```base64 -w 0 "cert.pem" > "cert.txt"``` </p> You may need to change the filename arguments accordingly. The contents of the output file (here "cert.txt") should be used for this parameter. <p><strong>NOTE:</strong><ul><li>MATLAB Web App Server only supports the `.pem` SSL certificate format.</li><li>SSL keys must be 2048 bits in length and must be private.</li><li>Intermediate certificates are not supported by the server.</li><li>SSL certificate should not be password protected.</li><li>Private key should not be password protected.</li></ul>|
| **Base64 Encoded SSL Private Key** | Enter a string that is a base64-encoded value of an SSL private key file in PEM format. On Windows, you can Base64 encode a PEM file using a utility such as openssl. On Linux, you can Base64 encode a PEM file using the following command in the terminal: <p> ```base64 -w 0 "key.pem" > "key.txt"``` </p> You may need to change the filename arguments accordingly. The contents of the output file (here "key.txt") should be used for this parameter. |
| **Username to Remote into Server VM** | Specify a username to use when remoting into server VM hosting MATLAB Web App Server. The username must be at least 7 characters long. This username is also used to login to the network license manager portal. For example: webappadmin. You cannot use "admin" as a username. |
| **Base64 Encoded SSL Certificate** | Enter a string that is a base64-encoded value of an SSL certificate in PEM format. On Linux, you can Base64 encode a PEM file using the following command in the terminal: <p> ```base64 -w 0 "cert.pem" > "cert.txt"``` </p> On Windows, you can Base64 encode a PEM file with a utility such as openssl or by using the following command in a PowerShell terminal: <p> ```[Convert]::ToBase64String([System.IO.File]::ReadAllBytes("cert.pem")) \| Set-Content -NoNewline -Encoding Ascii "cert.txt"``` </p> You may need to change the filename arguments accordingly. The contents of the output file (here "cert.txt") should be used for this parameter. <p><strong>NOTE:</strong><ul><li>MATLAB Web App Server only supports the `.pem` SSL certificate format.</li><li>SSL keys must be 2048 bits in length and must be private.</li><li>Intermediate certificates are not supported by the server.</li><li>SSL certificate should not be password protected.</li><li>Private key should not be password protected.</li></ul>|
| **Base64 Encoded SSL Private Key** | Enter a string that is a base64-encoded value of an SSL private key file in PEM format. On Linux, you can Base64 encode a PEM file using the following command in the terminal: <p> ```base64 -w 0 "key.pem" > "key.txt"``` </p> On Windows, you can Base64 encode a PEM file with a utility such as openssl or by using the following command in a PowerShell terminal: <p> ```[Convert]::ToBase64String([System.IO.File]::ReadAllBytes("key.pem")) \| Set-Content -NoNewline -Encoding Ascii "key.txt"``` </p> You may need to change the filename arguments accordingly. The contents of the output file (here `"key.txt"`) should be used for this parameter. |
| **Username to Remote into Server VM** | Specify a username to use when remoting into server VM hosting MATLAB Web App Server. The username must be at least 7 characters long. This username is also used to login to the network license manager portal. For example: `webappadmin`. You cannot use `admin` as a username. |
| **Password to Remote into Server VM and Network License Manager Web Interface** | Specify a password to use when remoting into server VM hosting MATLAB Web App Server. This password is also used to login to the network license manager portal. Password requirements are: <p><ul><li>Must be between 12-123 characters.</li><li>Have uppercase and lowercase characters.</li><li>Have a digit.</li><li>Have a special character.</li></ul> |
| **Deploy Network License Manager** | Select whether you want to deploy the Network License Manager for MATLAB to manage your license files. Selecting 'Yes' deploys the Network License Manager for MATLAB reference architecture. Select 'No' if you want to use an existing license manager. When using an existing license manager, the MATLAB Web App Server deployment and the license manager must be in the same virtual network.|

@@ -61,7 +61,7 @@ To run applications on MATLAB Web App Server, you need to create applications us
>**NOTE:**The network license manager MAC address is available only after the deployment to the cloud is complete.
To get the MAC address of the network license manager:
1. Log in to the Network License Manager for MATLAB dashboard using the username and password you specified in the [Configure Cloud Resources](#step-2-configure-cloud-resources) step of the deployment process.
1. Click Administration > License.
1. Click **Administration** and then **License**.
1. Copy the license server MAC address displayed at the top.

# Upload Apps
12 changes: 6 additions & 6 deletions releases/R2024b/README.md
Original file line number Diff line number Diff line change
@@ -11,14 +11,14 @@ To deploy resources on Azure, click **Deploy to Azure**. The Azure Portal open i
<p><strong>Note:</strong> Creating resources on Azure can take up to 10 minutes.</p>

## Step 2. Configure Cloud Resources
Provide values for parameters in the custom deployment template on the Azure Portal :
Provide values for parameters in the custom deployment template on the Azure Portal:

| Parameter Name | Value |
|-------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **Subscription** | Choose an Azure subscription to use for purchasing resources.<p><em>Example:</em> `VERTHAM Dev`</p>|
| **Resource group** | Choose a name for the resource group that will hold the resources. <p><em>Example:</em> `Saveros`</p>|
| **Region** | Choose the region to start resources in. Ensure that you select a location which supports your requested instance types. To check which services are supported in each location, see [Azure Region Services](<https://azure.microsoft.com/en-gb/regions/services/>). <p><em>Example:</em> `East US`</p> |
| **Server VM Instance Size** | Specify the size of the VM you plan on using for deployment. Each MATLAB Web App Server instance runs on a VM and each instance will run multiple workers. We recommend you choose a VM size where the number of cores on your VM match the number of MATLAB workers per VM you plan on using. The template defaults to: `Standard_D4_v3`. This configuration has 4 vCPUs and 16 GiB of Memory. For more information, see Azure [documentation](https://docs.microsoft.com/en-us/azure/virtual-machines/windows/sizes-general). <p><em>Example:</em> `Standard_D4_v3`</p> |
| **Server VM Instance Size** | Specify the size of the VM you plan on using for deployment. Each MATLAB Web App Server instance runs on a VM and each instance will run multiple workers. We recommend you choose a VM size where the number of cores on your VM matches the number of MATLAB workers per VM you plan on using. The template defaults to: `Standard_D4_v3`. This configuration has 4 vCPUs and 16 GiB of Memory. For more information, see Azure [documentation](https://docs.microsoft.com/en-us/azure/virtual-machines/windows/sizes-general). <p><em>Example:</em> `Standard_D4_v3`</p> |
| **Operating System**| Choose the operating system for the server. Your options are `Windows` or `Linux`. |
|**Deploy to New or Existing Virtual Network**| Specify whether you want to create a `new` virtual network for your deployment or use an `existing` one. When deploying to a new virtual network, by default, the ports listed [here](/README.md#ports-to-open-in-existing-virtual-network) are opened. Depending on your security requirements, you can choose to close ports 22 and 3389 after the deployment is complete. |
| **Name of Virtual Network Where MATLAB Web App Server Will Be Deployed** | Specify the name of the virtual network where the server will be deployed.<ul><li>If deploying to a new virtual network, you can use the default `webapp-refarch-vnet` name or specify a new name for the virtual network.</li><li>If deploying to an existing virtual network, the name you specify must match the name of an existing virtual network.</li></ul> |
@@ -30,9 +30,9 @@ Provide values for parameters in the custom deployment template on the Azure Por
| **Assign Public IP Address to VM Hosting MATLAB Web App Server** | Select `Yes` if you want to assign a public IP address to the VM hosting the server. Otherwise, select `No`. If you select 'No', you must create a new virtual machine and add it to the same virtual network as the MATLAB Web App Server deployment. The ability to access the web apps home page or remotely connect to the server machine can be accomplished only through this virtual machine.|
| **IP Addresses Permitted to Remote into Server VM in CIDR Notation** | Specify the range of IP addresses in CIDR notation that can remote into the VM hosting MATLAB Web App Server and administer it. The format for CIDR addresses is IP Address/Mask. <p><em>Example</em>: `x.x.x.x/32`</p> You may also specify a comma separated list of CIDR addresses (no spaces). <p><em>*Example*</em>: `x.x.x.x/32,z.z.z.z/32`</p><ul><li> To determine your IP address, you can search for **"what is my ip address"** on the web. The mask determines the number of IP addresses to include.</li><li>A mask of 32 is a single IP address.</li><li>Use a [CIDR calculator](https://www.ipaddressguide.com/cidr) if you need a range of more than one IP address.</li><li>You may need to contact your IT administrator to determine which address is appropriate.</li></ul>**NOTE:** Restricting access to the server using an IP address is not a form of authentication. MATLAB Web App Server supports authentication using OIDC. For details, see [Authentication](https://www.mathworks.com/help/webappserver/ug/authentication.html).|
| **IP Addresses Allowed to Access MATLAB Web App Server Apps Home Page in CIDR Notation** | Specify the range of IP addresses that can access the MATLAB Web App Server apps home page in CIDR notation. The format for CIDR addresses is IP Address/Mask. <p><em>*Example*</em>: `x.x.x.x/24`</p> You may also specify a comma separated list of CIDR addresses (no spaces). <p><em>*Example*</em>: `x.x.x.x/24,z.z.z.z/24`</p> |
| **Base64 Encoded SSL Certificate** | Enter a string that is a base64-encoded value of an SSL certificate in PEM format. On Windows, you can Base64 encode a PEM file using a utility such as openssl. On Linux, you can Base64 encode a PEM file using the following command in the terminal: <p> ```base64 -w 0 "cert.pem" > "cert.txt"``` </p> You may need to change the filename arguments accordingly. The contents of the output file (here "cert.txt") should be used for this parameter. <p><strong>NOTE:</strong><ul><li>MATLAB Web App Server only supports the `.pem` SSL certificate format.</li><li>SSL keys must be 2048 bits in length and must be private.</li><li>Intermediate certificates are not supported by the server.</li><li>SSL certificate should not be password protected.</li><li>Private key should not be password protected.</li></ul>|
| **Base64 Encoded SSL Private Key** | Enter a string that is a base64-encoded value of an SSL private key file in PEM format. On Windows, you can Base64 encode a PEM file using a utility such as openssl. On Linux, you can Base64 encode a PEM file using the following command in the terminal: <p> ```base64 -w 0 "key.pem" > "key.txt"``` </p> You may need to change the filename arguments accordingly. The contents of the output file (here "key.txt") should be used for this parameter. |
| **Username to Remote into Server VM** | Specify a username to use when remoting into server VM hosting MATLAB Web App Server. The username must be at least 7 characters long. This username is also used to login to the network license manager portal. For example: `webappadmin`. You cannot use "admin" as a username. |
| **Base64 Encoded SSL Certificate** | Enter a string that is a base64-encoded value of an SSL certificate in PEM format. On Linux, you can Base64 encode a PEM file using the following command in the terminal: <p> ```base64 -w 0 "cert.pem" > "cert.txt"``` </p> On Windows, you can Base64 encode a PEM file with a utility such as openssl or by using the following command in a PowerShell terminal: <p> ```[Convert]::ToBase64String([System.IO.File]::ReadAllBytes("cert.pem")) \| Set-Content -NoNewline -Encoding Ascii "cert.txt"``` </p> You may need to change the filename arguments accordingly. The contents of the output file (here "cert.txt") should be used for this parameter. <p><strong>NOTE:</strong><ul><li>MATLAB Web App Server only supports the `.pem` SSL certificate format.</li><li>SSL keys must be 2048 bits in length and must be private.</li><li>Intermediate certificates are not supported by the server.</li><li>SSL certificate should not be password protected.</li><li>Private key should not be password protected.</li></ul>|
| **Base64 Encoded SSL Private Key** | Enter a string that is a base64-encoded value of an SSL private key file in PEM format. On Linux, you can Base64 encode a PEM file using the following command in the terminal: <p> ```base64 -w 0 "key.pem" > "key.txt"``` </p> On Windows, you can Base64 encode a PEM file with a utility such as openssl or by using the following command in a PowerShell terminal: <p> ```[Convert]::ToBase64String([System.IO.File]::ReadAllBytes("key.pem")) \| Set-Content -NoNewline -Encoding Ascii "key.txt"``` </p> You may need to change the filename arguments accordingly. The contents of the output file (here `"key.txt"`) should be used for this parameter. |
| **Username to Remote into Server VM** | Specify a username to use when remoting into server VM hosting MATLAB Web App Server. The username must be at least 7 characters long. This username is also used to login to the network license manager portal. For example: `webappadmin`. You cannot use `admin` as a username. |
| **Password to Remote into Server VM and Network License Manager Web Interface** | Specify a password to use when remoting into server VM hosting MATLAB Web App Server. This password is also used to login to the network license manager portal. Password requirements are: <p><ul><li>Must be between 12-123 characters.</li><li>Have uppercase and lowercase characters.</li><li>Have a digit.</li><li>Have a special character.</li></ul> |
| **Deploy Network License Manager** | Select whether you want to deploy the Network License Manager for MATLAB to manage your license files. Selecting 'Yes' deploys the Network License Manager for MATLAB reference architecture. Select 'No' if you want to use an existing license manager. When using an existing license manager, the MATLAB Web App Server deployment and the license manager must be in the same virtual network.|

@@ -61,7 +61,7 @@ To run applications on MATLAB Web App Server, you need to create applications us
>**NOTE:**The network license manager MAC address is available only after the deployment to the cloud is complete.
To get the MAC address of the network license manager:
1. Log in to the Network License Manager for MATLAB dashboard using the username and password you specified in the [Configure Cloud Resources](#step-2-configure-cloud-resources) step of the deployment process.
1. Click Administration > License.
1. Click **Administration** and then **License**.
1. Copy the license server MAC address displayed at the top.

# Upload Apps
2 changes: 1 addition & 1 deletion releases/R2022a/LICENSE.md → releases/R2025a/LICENSE.md
Original file line number Diff line number Diff line change
@@ -4,7 +4,7 @@ The files in this GitHub repository refer to commercial software products and se

The following license terms apply only to the files in this GitHub repository, including files in this folder and its subfolders, and do not apply to MathWorks Programs. References to “software” and “code” in the following license terms refer to the files in this GitHub repository.

Copyright (c) 2022, The MathWorks, Inc.
Copyright (c) 2025, The MathWorks, Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
65 changes: 46 additions & 19 deletions releases/R2022a/README.md → releases/R2025a/README.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -3,14 +3,15 @@
# This script
# 1. include storage account information to dynamicOption
# 2. start controller
while getopts "n:f:k:s:c:p:" opt; do
while getopts "n:f:k:s:c:p:d:" opt; do
case ${opt} in
n) storageAccountName="$OPTARG";;
f) resourceGroup="$OPTARG";;
k) subscriptionID="$OPTARG";;
s) enableSSL="$OPTARG";;
c) certFile="$OPTARG";;
p) privateKeyFile="$OPTARG";;
d) fqdn="$OPTARG";;
esac
done

@@ -21,7 +22,8 @@ JSONCMD='
"subscriptionID": "'"$subscriptionID"'",
"enableSSL": "'"$enableSSL"'",
"certFile": "'"$certFile"'",
"privateKeyFile": "'"$privateKeyFile"'"
"privateKeyFile": "'"$privateKeyFile"'",
"fqdn": "'"$fqdn"'"
}
'

@@ -31,6 +33,7 @@ rm $myPath
#load json string into dynamic option file
echo $JSONCMD >> $myPath


#to allow web app server to listen on port 443
sudo sysctl net.ipv4.ip_unprivileged_port_start=0

Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<#
.SYNOPSIS
This Script runs on master head node start, it is used in the ARM template to pass around the storage account name, key
as well as the mpsEndpoint. It saves the result to local disk and restarts the main nodeJS dashboard process running on the VM
This Script runs on master head node start, it is used in the ARM template to store the storage account name, key etc.
It saves the result to local disk and restarts the main nodeJS controller process running on the VM.
#>

Param (
@@ -16,7 +16,9 @@ Param (
[Parameter(Mandatory=$true)]
[String]$certFile,
[Parameter(Mandatory=$true)]
[String]$privateKeyFile
[String]$privateKeyFile,
[Parameter(Mandatory=$true)]
[String]$fqdn
)

$myObj = New-Object System.Object
@@ -27,6 +29,7 @@ $myObj | Add-Member -type NoteProperty -name subscriptionID -value $subscription
$myObj | Add-Member -type NoteProperty -name enableSSL -value $enableSSL
$myObj | Add-Member -type NoteProperty -name certFile -value $certFile
$myObj | Add-Member -type NoteProperty -name privateKeyFile -value $privateKeyFile
$myObj | Add-Member -type NoteProperty -name fqdn -value $fqdn

$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False

@@ -38,4 +41,4 @@ $myPath = "c:\\MathWorks\\controller\\config\\dynamicOptions.json"
net stop http /y

# Start the main service that performs bootstrapping and attaching the file share
Start-Process -FilePath "node" -ArgumentList("c:\\MathWorks\\controller\\index.js")
Start-Process -FilePath "node" -ArgumentList("c:\\MathWorks\\controller\\index.js")
594 changes: 594 additions & 0 deletions releases/R2025a/templates/azuredeploy-existing-vnet-R2025a.json

Large diffs are not rendered by default.

354 changes: 354 additions & 0 deletions releases/R2025a/templates/mainTemplate.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,354 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"instanceType": {
"type": "string",
"defaultValue": "Standard_B1ms",
"minLength": 1,
"metadata": {
"description": "Azure instance type, see https://docs.microsoft.com/en-us/azure/virtual-machines/windows/sizes."
}
},
"clientIPAddressList": {
"type": "string",
"defaultValue": "",
"minLength": 7,
"metadata": {
"description": "A list of comma separated IP address ranges that can be used to access the license manager. These must be valid IP CIDR ranges of the form x.x.x.x/x. Use the value &lt;your_client_ip_address&gt;/32 to restrict access to only your computer."
}
},
"adminUsername": {
"defaultValue": "manager",
"minLength": 7,
"type": "String",
"metadata": {
"description": "Admin username, this is used to login to the Network License Manager for MATLAB dashboard."
}
},
"adminPassword": {
"type": "securestring",
"metadata": {
"description": "Admin password for the chosen username. This is used to login to the Network License Manager for MATLAB dashboard."
}
},
"existingVnetResourceID": {
"defaultValue": "",
"type": "string",
"metadata": {
"description": "Use this optional parameter to specify the Resource ID of an existing virtual network to deploy your server into. Specify this parameter only when you deploy using the Existing Virtual Network option."
}
},
"existingSubnetName": {
"defaultValue": "",
"type": "string",
"metadata": {
"description": "Use this optional parameter to specify the name of an existing subnet within your virtual network to deploy your server into. Specify this parameter only when you deploy using the Existing Virtual Network option."
}
},
"createPublicIPAddress": {
"type": "string",
"defaultValue": "Yes",
"allowedValues": [
"Yes",
"No"
],
"metadata": {
"description": "Choose whether to create a public IP address for the VM."
}
}
},
"variables": {
"namingPrefix": "netlm",
"artifactsBase": "C:/Windows/Temp/",
"addressPrefix": "10.0.0.0/16",
"subnetPrefix": "10.0.0.0/24",
"newOrExistingVirtualNetwork": "[if(equals(parameters('existingVnetResourceID'), ''), 'new', 'existing')]",
"newVnetName": "[concat(variables('namingPrefix'), '-vnet')]",
"newSubnetName": "[concat(variables('namingPrefix'), '-subnet')]",
"virtualNetworkName": "[if(equals(variables('newOrExistingVirtualNetwork'),'existing'), last(split(parameters('existingVnetResourceID'),'/')), variables('newVnetName'))]",
"subnetName": "[if(equals(variables('newOrExistingVirtualNetwork'),'existing'), parameters('existingSubnetName'), variables('newSubnetName'))]",
"subnetRef": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]",
"subnetId": "[if(equals(variables('newOrExistingVirtualNetwork'),'new'), variables('subnetRef'), concat(parameters('existingVnetResourceID'), '/subnets/', parameters('existingSubnetName')))]",
"createPublicIPAddress": "[if(equals(parameters('createPublicIPAddress'), 'Yes'), bool('true'), bool('false'))]",
"cuaTrackingNum": "pid-3519fce2-01d2-4019-90dc-b6566eacbe89-partnercenter",
"serverMachineName": "[concat(take(variables('namingPrefix'), 8), '-server')]",
"publisher": "mathworks-inc",
"offer": "license-manager-ref-arch-win",
"sku": "license-manager-ref-arch-win-sku-r2025a-test",
"version": "latest",
"imageReference": {
"publisher": "[variables('publisher')]",
"offer": "[variables('offer')]",
"sku": "[variables('sku')]",
"version": "[variables('version')]"
},
"plan": {
"name": "[variables('sku')]",
"publisher": "[variables('publisher')]",
"product": "[variables('offer')]"
},
"publicIPName": "[concat(variables('serverMachineName'), '-ip')]",
"dnsLabelPrefix": "[concat('azure-', uniqueString(resourceGroup().id))]",
"publicIpTimeout": "20",
"networkSecurityGroupName": "[concat(variables('namingPrefix'), '-nsg')]",
"serverNICName": "[concat(variables('serverMachineName'), '-nic')]",
"serverIPConfigName": "[concat(variables('serverMachineName'), '-ipconfig')]",
"nicIpConfigurationWithPublicIP": [
{
"name": "[variables('serverIPConfigName')]",
"properties": {
"subnet": {
"id": "[variables('subnetId')]"
},
"privateIPAllocationMethod": "Dynamic",
"publicIpAddress": {
"id": "[resourceId('Microsoft.Network/publicIpAddresses', variables('publicIPName'))]"
}
}
}
],
"nicIpConfigurationWithoutPublicIP": [
{
"name": "[variables('serverIPConfigName')]",
"properties": {
"subnet": {
"id": "[variables('subnetId')]"
},
"privateIPAllocationMethod": "Dynamic"
}
}
],
"scriptsUrl": "C:/Windows/Temp/",
"startScript": "startserver.ps1",
"fileUris": [
"[concat(variables('scriptsUrl'), variables('startScript'))]"
],
"scriptExe": "[concat(variables('artifactsBase'), variables('startScript'))]",
"installCommand": "[concat('powershell -ExecutionPolicy Unrestricted -File ', variables('scriptExe'))]",
"tagsForAll": {
"provider": "[variables('cuaTrackingNum')]"
}
},
"resources": [
{
"condition": "[equals(variables('newOrExistingVirtualNetwork'),'new')]",
"name": "[variables('virtualNetworkName')]",
"type": "Microsoft.Network/virtualNetworks",
"apiVersion": "2023-11-01",
"location": "[resourceGroup().location]",
"tags": "[variables('tagsForAll')]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"[variables('addressPrefix')]"
]
},
"subnets": [
{
"name": "[variables('subnetName')]",
"properties": {
"addressPrefix": "[variables('subnetPrefix')]"
}
}
]
}
},
{
"condition": "[variables('createPublicIPAddress')]",
"name": "[variables('publicIPName')]",
"type": "Microsoft.Network/publicIPAddresses",
"apiVersion": "2023-11-01",
"location": "[resourceGroup().location]",
"tags": "[variables('tagsForAll')]",
"properties": {
"publicIPAllocationMethod": "Static",
"dnsSettings": {
"domainNameLabel": "[concat(variables('serverMachineName'), variables('dnsLabelPrefix'))]"
},
"idleTimeoutInMinutes": "[variables('publicIpTimeout')]"
}
},
{
"name": "[variables('networkSecurityGroupName')]",
"type": "Microsoft.Network/networkSecurityGroups",
"apiVersion": "2023-11-01",
"location": "[resourceGroup().location]",
"dependsOn": [
"[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworkName'))]"
],
"tags": "[variables('tagsForAll')]",
"properties": {
"securityRules": [
{
"name": "default-allow-rdp",
"properties": {
"priority": 1000,
"sourceAddressPrefixes": "[split(replace(parameters('clientIPAddressList'),' ', ''), ',')]",
"protocol": "TCP",
"destinationPortRange": "3389",
"access": "Allow",
"direction": "Inbound",
"sourcePortRange": "*",
"destinationAddressPrefix": "*"
}
},
{
"name": "allow-https",
"properties": {
"priority": 1010,
"sourceAddressPrefixes": "[split(replace(parameters('clientIPAddressList'),' ', ''), ',')]",
"protocol": "TCP",
"destinationPortRange": "443",
"access": "Allow",
"direction": "Inbound",
"sourcePortRange": "*",
"destinationAddressPrefix": "*"
}
},
{
"name": "allow-netlm",
"properties": {
"priority": 1020,
"sourceAddressPrefixes": "[split(replace(parameters('clientIPAddressList'),' ', ''), ',')]",
"protocol": "TCP",
"destinationPortRange": "27000-27010",
"access": "Allow",
"direction": "Inbound",
"sourcePortRange": "*",
"destinationAddressPrefix": "*"
}
},
{
"name": "allow-internal-traffic",
"properties": {
"priority": 1030,
"sourceAddressPrefix": "VirtualNetwork",
"protocol": "TCP",
"destinationPortRange": "*",
"access": "Allow",
"direction": "Inbound",
"sourcePortRange": "*",
"destinationAddressPrefix": "VirtualNetwork"
}
},
{
"name": "allow-ssh",
"properties": {
"description": "allow-ssh",
"protocol": "TCP",
"sourcePortRange": "*",
"destinationPortRange": "22",
"sourceAddressPrefixes": "[split(replace(parameters('clientIPAddressList'),' ', ''), ',')]",
"destinationAddressPrefix": "*",
"access": "Allow",
"priority": 1040,
"direction": "Inbound"
}
}
]
}
},
{
"name": "[variables('serverNICName')]",
"type": "Microsoft.Network/networkInterfaces",
"apiVersion": "2023-11-01",
"location": "[resourceGroup().location]",
"dependsOn": [
"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]",
"[resourceId('Microsoft.Network/publicIpAddresses', variables('publicIPName'))]"
],
"tags": "[variables('tagsForAll')]",
"properties": {
"ipConfigurations": "[variables(if(variables('createPublicIPAddress'), 'nicIpConfigurationWithPublicIP', 'nicIpConfigurationWithoutPublicIP'))]",
"networkSecurityGroup": {
"id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]"
}
}
},
{
"name": "[variables('serverMachineName')]",
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2023-09-01",
"location": "[resourceGroup().location]",
"dependsOn": [
"[resourceId('Microsoft.Network/networkInterfaces', variables('serverNICName'))]"
],
"tags": "[variables('tagsForAll')]",
"plan": "[variables('plan')]",
"properties": {
"osProfile": {
"computerName": "[variables('serverMachineName')]",
"adminUsername": "[parameters('adminUsername')]",
"adminPassword": "[parameters('adminPassword')]",
"windowsConfiguration": {
"provisionVmAgent": "true"
}
},
"hardwareProfile": {
"vmSize": "[parameters('instanceType')]"
},
"storageProfile": {
"imageReference": "[variables('imageReference')]",
"osDisk": {
"createOption": "fromImage",
"managedDisk": {
"storageAccountType": "Premium_LRS"
}
}
},
"networkProfile": {
"networkInterfaces": [
{
"id": "[resourceId('Microsoft.Network/networkInterfaces', variables('serverNICName'))]"
}
]
}
}
},
{
"name": "[concat(variables('serverMachineName'), '/Installation')]",
"type": "Microsoft.Compute/virtualMachines/extensions",
"apiVersion": "2023-09-01",
"location": "[resourceGroup().location]",
"dependsOn": [
"[resourceId('Microsoft.Compute/virtualMachines', variables('serverMachineName'))]"
],
"tags": "[variables('tagsForAll')]",
"properties": {
"publisher": "Microsoft.Compute",
"type": "CustomScriptExtension",
"typeHandlerVersion": "1.5",
"autoUpgradeMinorVersion": true,
"settings": {
"fileUris": "[variables('fileUris')]"
},
"protectedSettings": {
"commandToExecute": "[if(variables('createPublicIPAddress'), concat(variables('installCommand'),' -DNS ', reference(variables('publicIPName'), '2023-06-01').dnsSettings.fqdn), concat(variables('installCommand'),' -DNS ', reference(variables('serverNICName'), '2023-06-01').ipConfigurations[0].properties.privateIPAddress))]"
}
}
},
{
"name": "pid-3519fce2-01d2-4019-90dc-b6566eacbe89-partnercenter",
"type": "Microsoft.Resources/deployments",
"apiVersion": "2023-07-01",
"dependsOn": [
"[resourceId('Microsoft.Compute/virtualMachines', variables('serverMachineName'))]"
],
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": []
}
}
}
],
"outputs": {
"NetworkLicenseManagerAddress": {
"value": "[if(variables('createPublicIPAddress'), concat('https://', reference(variables('publicIPName')).dnsSettings.fqdn), concat('https://', reference(variables('serverNICName'), '2023-06-01').ipConfigurations[0].properties.privateIPAddress))]",
"type": "string"
}
}
}
13 changes: 13 additions & 0 deletions releases/release-notes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
## Release Notes for MATLAB Web App Server on Microsoft Azure

### R2025a
- You can now deploy MATLAB Web App Server R2025a using the Microsoft Azure reference architecture.
- The **Assign Public IP Address to VM Hosting MATLAB Web App Server** entry of the deployment template controls access to the storage account. For details, see the **Assign Public IP Address to VM Hosting MATLAB Web App Server** entry in the [Configure Cloud Resources](/releases/R2025a/README.md#step-2-configure-cloud-resources) step of the deployment process.
- If you assign a public IP address to the VM hosting MATLAB Web App Server, then public network access to the storage account is enabled only from selected virtual networks and IP addresses. Previously, public network access was enabled from all networks.
- If you assign a private IP address to the VM hosting MATLAB Web App Server, then public network access to the storage account is disabled. You must use the MATLAB Web App Server VM or a bastion host to connect to the storage account. Previously, public network access was enabled from all networks.
- If you deploy using an existing virtual network and assign a public IP address to the VM hosting MATLAB Web App Server, you must manually add a service endpoint to the virtual network before deploying MATLAB Web App Server in order to create and access the storage account. For details, see [How do I deploy to an existing virtual network?](/README.md#how-do-i-deploy-to-an-existing-virtual-network).

### R2024b
- You can now deploy MATLAB Web App Server R2024b using the Microsoft Azure reference architecture.
- You can assign a private IP address for the Network License Manager VM. Previously, you could only assign the Network License Manager VM a public IP address.
- You can allow a range of IP addresses to access the Network License Manager dashboard.