ThingWorx Flow > Installation and Configuration > Installing ThingWorx Flow > Prerequisites for Installing or Upgrading ThingWorx Flow with No Internet Access on Linux machine
Prerequisites for Installing or Upgrading ThingWorx Flow with No Internet Access on Linux machine
ThingWorx Flow
* 
The instructions assume that each step is completed successfully prior to passing to next step.
On an Internet-connected machine
1. Install yum createrepo and yum-utils to enable yumdownloader
a. yum install createrepo
b. yum install yum-utils
2. Create the following three repos under /etc/yum.repos.d
a. rabbitmq_erlang.repo
[rabbitmq_erlang]
name=Erlang repository
baseurl=https://packagecloud.io/rabbitmq/erlang/el/8/$basearch
enabled=1
gpgcheck=0
sslverify=0
skip_if_unavailable=1
b. rabbitmq_server.repo
[rabbitmq_server]
name=RabbitMQ repository
baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/8/$basearch
enabled=1
gpgcheck=0
sslverify=0
skip_if_unavailable=1
c. nginx-repo.repo
[nginx-repo]
name=Nginx repository
baseurl=https://nginx.org/packages/rhel/8/$basearch/
enabled=1
gpgcheck=0
sslverify=0
skip_if_unavailable=1
3. Run the following command to get a Node repo:
curl -sL https://rpm.nodesource.com/setup_14.x | sudo bash -
This creates the needed repo for downloading nodejs at yum.repos.d
4. Download the following packages using yumdownloader to the desired folder without installing:
yumdownloader --destdir=/opt/packages/nginx --resolve nginx
yumdownloader --destdir=/opt/packages/erlang erlang
yumdownloader --destdir=/opt/packages/rabbitmq -–resolve rabbitmq-server
yumdownloader --destdir=/opt/packages/nodejs nodejs
* 
Nginx-repo & Rabbitmq-server has the --resolve flag to enable dependencies download as well.
5. Check if the logrotate package was downloaded as part of rabbitmq-server download command.
If not, download it explicitly using the following command:
yumdownloader --destdir=/opt/packages/rabbitmq logrotate
6. For each package folder, create a repo using the createrepo command to get the metadata for each package:
createrepo /opt/packages/nginx
createrepo /opt/packages/erlang
createrepo /opt/packages/rabbitmq
createrepo /opt/packages/nodejs
* 
Perform steps 7-9 only when nginx download results in more than one rpm file under /opt/packages/nginx.
7. Nginx installation has multiple packages. Transform the repository, with no internet access, from package repo into module repo. Use the modulemd-tools package to create a modules.yaml configuration file to be used to transform the repository to a module repo. Enable the repository for respective package:
dnf copr enable frostyx/modulemd-tools-epel
dnf install modulemd-tools
8. Run the following command from the packages folder to create the modules.yaml file:
repo2module --debug --module-name=nginx --module-stream=stable nginx modules.yaml
The debug flag outputs the path where the modules.yaml was created.
9. Transform the nginx repo using the obtained configuration yaml file:
a. Make sure the modules.yaml file is locate at /opt/packages.
b. Move the content of nginx/repodata folder to the parent nginx folder mv repodata/*.
c. Run the following command from the packages folder:
modifyrepo_c --mdtype=modules modules.yaml nginx
This creates new modules.yaml.gz and elaborate the repomd.xml.
d. Move back all the content of the repodata folder, alongwith the new gz file back into nginx/repodata folder, leaving only the rpm files and repodata folder, under nginx repo folder.
10. Copy the packages folder to the machine with no internet access.
On the server machine dedicated for ThingWorx Flow installation with no internet access
1. Make sure the policycoreutils package exists: policycoreutils-python for RHEL version below 8 or policycoreutils-python-utils for version 8 and higher. Install the package if it does not exist.
Use the following command to check:
yum list --installed | grep policycoreutils
2. Make sure the perl module is enabled. Enable it if it is not enabled
Use the following command to check:
dnf module list --enabled | grep perl
3. Look for AppStream.repo under /etc/yum.repos.d. If it exists, set it to enabled=0.
4. Create the following repos under /etc/yum.repos.d and configure the baseurl to point the local rpm package using file://.
a. rabbitmq_erlang.repo
[rabbitmq_erlang]
name=Erlang repository
baseurl=file:///opt/packages/erlang
enabled=1
gpgcheck=0
sslverify=0
skip_if_unavailable=1
b. rabbitmq_server.repo
[rabbitmq_server]
name=RabbitMQ repository
baseurl=file:///opt/packages/rabbitmq
enabled=1
gpgcheck=0
sslverify=0
skip_if_unavailable=1
c. nginx-repo.repo
[nginx-repo]
name=Nginx repository
baseurl=file:///opt/packages/nginx
enabled=1
gpgcheck=0
sslverify=0
skip_if_unavailable=1
d. nodesource-el8.repo
[nodesource]
name=Node.js Packages for Enterprise Linux 8
baseurl=file:///opt/packages/nodejs
enabled=1
gpgcheck=0
sslverify=0
skip_if_unavailable=1
5. You can now run the ThingWorx Flow installer.
See no internet access installation in Installing ThingWorx Flow on Microsoft SQL Server
Prerequisite for upgrading ThingWorx Flow on server machine with no internet access:
1. The user must upgrade all the in-use third-party applications since there is no internet connection. To get the latest versions of the third-party applications, repeat steps 2- 10 for installation on the internet connected machine
* 
It is recommended to remove all previously downloaded rpm files (result of step 4 for installation on the internet connected machine) to avoid confusion.
* 
For Node upgrade, you must verify with Node documentation for any major version for change Node installer and update the repository accordingly (using the command line in step 3 here).
3. Repeat step 5 here to perform the ThingWorx Flow upgrade installation.
Troubleshooting
1. Enabling the perl module and installing the policycoreutils module if needed, requires Internet connection
2. You can use the sample modules.yaml as a template instead of using the modulesmd tools package. The modules.yaml list is based on specific Nginx versions and OS version and might not work for different Nginx modules versions over different OS. In case you want to use the supplied file, you must edit the specified modules under artifacts/rpms at the bottom of the file
You must omit the extension and add a version and colon, before the file version for each entry.
For example, for nginx-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64.rpm file, you must make an entry: nginx-1:1.14.1-9.module_el8.0.0+184+e34fea82.x86_64:
artifacts:
rpms:
- nginx-1:1.14.1-9.module_el8.0.0+184+e34fea82.x86_64
- <same action per rpm file>
The version number must be taken from the data section of the yaml
data:
name: nginx
stream: rolling
version: 1
Refer to the following links for more information, if needed:
How to download and use repo2module and create modules.yaml file:https://github.com/rpm-software-management/modulemd-tools#readme
How to create modules repo based on modules.yaml file: https://docs.fedoraproject.org/en-US/modularity/hosting-modules
3. Use the following commands to make sure the repositories are created successfully:
yum --disablerepo=”*” --enablerepo=”nodesource” list nodejs
yum --disablerepo=”*” --enablerepo=”nginx-repo” list nginx
yum --disablerepo=”*” --enablerepo=”rabbitmq_erlang” list erlang
yum --disablerepo=”*” --enablerepo=”rabbitmq_server” list rabbitmq-server
4. Incase re-installing the ThingWorx Flow (for any reason) make sure the nodesource-el8.repo did not receive the .rpmsave extension making it unusable for next installation. Read more at https://fileinfo.com/extension/rpmsave
module.yaml
---
document: modulemd-defaults
version: 1
data:
module: nginx
stream: rolling
profiles:
rolling: [everything]
...
---
document: modulemd
version: 2
data:
name: nginx
stream: rolling
version: 1
context: abcdef12
summary: <auto-generated module summary>
description: >-
<auto-generated module description>
license:
module:
- MIT
content:
- <FILL THIS IN>
profiles:
everything:
rpms:
- nginx
- nginx-all-modules
- nginx-filesystem
- nginx-mod-http-image-filter
- nginx-mod-http-perl
- nginx-mod-http-xslt-filter
- nginx-mod-mail
- nginx-mod-stream
api:
rpms:
- nginx
- nginx-all-modules
- nginx-filesystem
- nginx-mod-http-image-filter
- nginx-mod-http-perl
- nginx-mod-http-xslt-filter
- nginx-mod-mail
- nginx-mod-stream
components:
rpms:
nginx:
rationale: Present in the repository
artifacts:
rpms:
- nginx-1:1.14.1-9.module_el8.0.0+184+e34fea82.x86_64
- nginx-all-modules-1:1.14.1-9.module_el8.0.0+184+e34fea82.noarch
- nginx-filesystem-1:1.14.1-9.module_el8.0.0+184+e34fea82.noarch
- nginx-mod-http-image-filter-1:1.14.1-9.module_el8.0.0+184+e34fea82.x86_64
- nginx-mod-http-perl-1:1.14.1-9.module_el8.0.0+184+e34fea82.x86_64
- nginx-mod-http-xslt-filter-1:1.14.1-9.module_el8.0.0+184+e34fea82.x86_64
- nginx-mod-mail-1:1.14.1-9.module_el8.0.0+184+e34fea82.x86_64
- nginx-mod-stream-1:1.14.1-9.module_el8.0.0+184+e34fea82.x86_64
...
Was this helpful?