Advanced Installation

Additional requirements and considerations when installing the United Manufacturing Hub on a virtual machine.

This page describes advanced requirements and considerations when installing the United Manufacturing Hub. It is meant to be an additional guide for the Installation guide page.

You may also find these step-by-step installation guides helpful:

Storage Configuration

When setting up your virtual machine for UMH:

Partition Layout

  • The default Rocky Linux installation typically creates a large /home partition
  • During OS installation, you may use custom partitioning to ensure the root partition (/) has sufficient space ()

Install location

  • The kubernetes data directory is stored in /var/lib/rancher/k3s by default.
  • This can be overridden by setting the K3S_DATA_DIR environment variable. See Kubernetes Configuration Variables for more information.

Virtual Machine Configuration

There are some specific settings that are recommended for the virtual machine:

Networking

  • Use a bridged network adapter
  • NAT or host-only adapters will prevent external connections to your instance
  • The VM must be able to:
    • Access the internet for installation and updates
    • Communicate with other devices on your network
    • Accept incoming connections from clients

Advanced Requirements

  1. CPU Configuration

    • Enable CPU virtualization extensions (VT-x/AMD-V) on the host
    • Allocate physical CPU cores rather than virtual cores when possible
    • For production environments, reserve the CPU resources
  2. Memory Settings

    • Use static memory allocation rather than dynamic/balloon drivers
    • Reserve the memory in the hypervisor to prevent memory swapping
  3. Other Settings

    • Disable unnecessary virtual hardware (like sound cards, USB controllers)
    • Use paravirtualized drivers when available for better performance

General Script Control Variables

For advanced users, the following variables can be used to control the behavior of the script:

Environment VariableScript VariableDefault ValueDescription
AUTO_SELECT_EXTERNAL_IPauto_select_external_ipfalseIf true, automatically pick the first non-loopback network interface and set EXTERNAL_IP/EXTERNAL_IP_INTERFACE/EXTERNAL_IP_GATEWAY based on it.
GENERAL_IGNORE_ERRORSignore_errorsfalseIf true, the script will ignore errors and continue, mainly used for troubleshooting.
GENERAL_TIMEOUTTIMEOUT120Time in seconds to wait for a process before timing out (default: 2 minutes).
GENERAL_INTERVALINTERVAL5Interval in seconds to check a process status (default: every 5 seconds).
GENERAL_RETRIESRETRIES10Number of retries for certain checks (default: 10).
UNINSTALLUNINSTALLfalseIf true, the script will uninstall the UMH, Companion, and Kubernetes instead of installing them.
EXTERNAL_IPEXTERNAL_IP(unset)Manually set the external IP of the machine.
EXTERNAL_IP_INTERFACEEXTERNAL_IP_INTERFACE(unset)Manually set the network interface associated with EXTERNAL_IP.
EXTERNAL_IP_GATEWAYEXTERNAL_IP_GATEWAY(unset)Manually set the default gateway associated with EXTERNAL_IP_INTERFACE.
DNS_SERVERDNS_SERVER(unset)Manually set the DNS server to be used by mgmtcompanion.

Tooling Installation Variables

Environment VariableScript VariableDefault ValueDescription
TOOL_K3S_VERSIONINSTALL_K3S_VERSIONv1.29.5+k3s1Specifies the version of k3s to be installed.
TOOL_K3S_SELINUX_VERSIONINSTALL_K3S_SELINUX_VERSIONk3s-selinux-1.5-1.el9.noarch.rpmSpecifies the version (or RPM) of k3s SELinux policy to install on RHEL systems.
TOOL_KUBECTL_VERSIONINSTALL_KUBECTL_VERSIONv1.29.5Specifies the version of kubectl to be installed.
TOOL_HELM_VERSIONINSTALL_HELM_VERSIONv3.13.2Specifies the version of helm to be installed.
TOOL_K3S_CUSTOM_TLS_SANCUSTOM_TLS_SAN(unset)Custom TLS Subject Alternative Names for k3s. For example, IP addresses or a domain name for TLS certificates.
TOOL_K3S_KUBECONFIGKUBECONFIG/etc/rancher/k3s/k3s.yamlPath to the kubeconfig file to be used by kubectl, helm, etc.

Kubernetes Configuration Variables

Environment VariableScript VariableDefault ValueDescription
KUBE_NODE_NAMENODE_NAMEUses the system’s hostnameNode name in the Kubernetes cluster.
AUTO_PATCH_HOSTNAMEauto_patch_hostnamefalseIf true, automatically sets the system hostname to NODE_NAME without user confirmation.
(Set internally)INSTALL_K3S_EXEC(constructed dynamically)Internal variable to pass additional flags (like --tls-san) during k3s installation. This is auto-generated; not usually set directly.
K3S_DATA_DIRK3S_DATA_DIRk3s default (/var/lib/rancher/k3s or ${HOME}/.rancher/k3s if not root)Specifies the data directory for k3s by setting the --data-dir flag.

Speedtest Configuration Variables

Environment VariableScript VariableDefault ValueDescription
SPEEDTEST_MIN_DOWNLOADMIN_DOWNLOAD50000000Minimum download speed in bits per second (default: 50 Mbps).
SPEEDTEST_MIN_UPLOADMIN_UPLOAD10000000Minimum upload speed in bits per second (default: 10 Mbps).
SPEEDTEST_MIN_PINGMIN_PING50Maximum ping in milliseconds (default: 50).
(Script-internal)MEASURED_UPLOAD0Automatically set by script after running speed test; not typically set by the user.
(Script-internal)MEASURED_DOWNLOAD0Automatically set by script after running speed test; not typically set by the user.
(Script-internal)MEASURED_PING0Automatically set by script after running speed test; not typically set by the user.

UMH Installation Variables

Environment VariableScript VariableDefault ValueDescription
UMH_SKIP_INSTALLskip_umh_installfalseIf true, skips the installation of the United Manufacturing Hub (UMH).
UMH_FORCE_OVERWRITEforce_umh_overwritefalseIf true, forces overwriting an existing UMH installation without prompting the user.
UMH_VERSIONUMH_VERSION0.27.0Specifies which version of the UMH chart to install.
UMH_HELM_CHART_URLUMH_HELM_CHART_URLhttps://management.umh.app/helm/umhThe URL of the UMH Helm chart repository.
ALLOW_HELM_PRERELEASEALLOW_HELM_PRERELEASEfalseIf true, allows Helm to install pre-release versions of UMH.
IS_LITE_INSTALLIS_LITE_INSTALLfalseIf true, installs a “lite” version of UMH; forcibly sets skip_umh_install to true.
IS_FULL_INSTALLIS_FULL_INSTALLtrueTrue if installing the “full” version of UMH. Note that it becomes false if IS_LITE_INSTALL is true.

Management Companion Installation Variables

Environment VariableScript VariableDefault ValueDescription
MGMT_AUTH_TOKENAUTH_TOKEN(unset)Required. A 64-character hex string (256-bit) used by the Management Companion for authentication.
MGMT_INSECURE_TLS_SKIP_CERTIFICATE_CHECKinsecure_tls_skip_certificate_checkfalseIf true, skip TLS certificate checks. Useful in development or if you have a proxy intercepting traffic.
MGMT_CUSTOM_URLCUSTOM_MGMT_URLhttps://management.umh.appA custom management URL for specialized setups.
MGMT_CUSTOM_IMAGE_VERSIONIMAGE_VERSIONlatestCustom version tag for the Management Companion Docker image (e.g., staging).
MGMT_SKIP_INSTALLskip_companion_installfalseIf true, skips the installation of the Management Companion.
MGMT_SKIP_RHEL_SHA1_SIGNATURESSKIP_RHEL_SHA1_SIGNATURESfalseOn RHEL-based systems, if true, does not temporarily enable SHA1 signatures (needed for some older packages).
MGMT_CONFIG_DEBUG_DISABLE_BACKEND_CONNECTIONMGMT_CONFIG_DEBUG_DISABLE_BACKEND_CONNECTIONfalseDisables the backend connection for debugging.
MGMT_API_URLAPI_URL$CUSTOM_MGMT_URL/apiAPI endpoint used by the Management Companion to communicate with the UMH backend.
MGMT_STATIC_URLSTATIC_URL$CUSTOM_MGMT_URL/staticURL for static resources (Kubernetes YAML files, etc.).
MGMT_CONFIGMAP_URLCONFIGMAP_URL$STATIC_URL/kubernetes/configmap.yamlLocation of the companion’s ConfigMap YAML.
MGMT_SECRET_URLSECRET_URL$STATIC_URL/kubernetes/secret.yamlLocation of the companion’s Secret YAML.
MGMT_STATEFULSET_URLSTATEFULSET_URL$STATIC_URL/kubernetes/statefulset.yamlLocation of the companion’s StatefulSet YAML.
MGMT_ROLE_URLROLE_URL$STATIC_URL/kubernetes/role.yamlLocation of the companion’s Role YAML.
MGMT_ROLE_BINDING_URLROLE_BINDING_URL$STATIC_URL/kubernetes/rolebinding.yamlLocation of the companion’s RoleBinding YAML.
MGMT_PVC_URLPVC_URL$STATIC_URL/kubernetes/pvc.yamlLocation of the companion’s PVC YAML.
MGMT_KUBELET_URLKUBELET_URL$STATIC_URL/kubernetes/kubelet-config.yamlLocation of the Kubelet configuration YAML.
MGMT_REGISTRIES_URLREGISTRIES_URL$STATIC_URL/kubernetes/registries.yamlCustom Docker registry configuration for k3s.

Location Variables

Environment VariableScript VariableDefault ValueDescription
LOCATION_ENTERPRISELOCATION_ENTERPRISE(unset)Enterprise name/location for site identification.
LOCATION_SITELOCATION_SITE(unset)Site name/location for site identification.
LOCATION_AREALOCATION_AREA(unset)Area name/location for site identification.
LOCATION_LINELOCATION_LINE(unset)Production line name/location for site identification.
LOCATION_WORKCELLLOCATION_WORKCELL(unset)Workcell name/location for site identification.

Additional Installation Options

Environment VariableScript VariableDefault ValueDescription
SILENTSILENTfalseIf true, the script proceeds without interactive confirmations (all prompts default to “yes”).
SKIP_HARDWARE_TESTSKIP_HARDWARE_TESTfalseIf true, skip hardware checks (CPU cores, memory, disk space, SSE4.2). Useful for dev or limited resource machines.
DISABLE_HARDWARE_STATUS_CHECKDISABLE_HARDWARE_STATUS_CHECKfalseIf true, skip or ignore hardware checks in the status messages.

Release Channel

Environment VariableScript VariableDefault ValueDescription
RELEASE_CHANNELRELEASE_CHANNELstableChannel to use for UMH updates/notifications. Options: enterprise, stable, nightly

Helm Flags

Environment VariableScript VariableDefault ValueDescription
(Set internally)CHART_VERSIONUMH_VERSIONUsed by the script to pass --version to Helm when installing the UMH chart.
SAME_TOPIC_EXPERIENCESAME_TOPIC_EXPERIENCEfalseIf true, uses the same Kafka topic across certain analytics solutions (internal optional feature).

Environment Variables for Testing and Troubleshooting

These variables let you run only portions of the script for debugging:

Environment VariableDefaultDescription
INSTALL_HELMfalseIf true, only executes the Helm installation portion of the script.
UNINSTALL_HELMfalseIf true, only executes the Helm uninstallation portion of the script.
INSTALL_KUBECTLfalseIf true, only executes the kubectl installation portion of the script.
UNINSTALL_KUBECTLfalseIf true, only executes the kubectl uninstallation portion of the script.
INSTALL_KUBERNETESfalseIf true, only installs k3s (and does pre-checks).
UNINSTALL_KUBERNETESfalseIf true, only uninstalls k3s (and does relevant cleanup).

Other Internal Variables

Below variables are set or used internally and typically do not need to be overridden:

  • temp_dir (Defaults to /tmp/mgmt-installer)
  • SENTRY_DSN (Used for error reporting to Sentry)
  • INSTALL_HELM / UNINSTALL_HELM (See testing & troubleshooting table)
  • INSTALL_KUBECTL / UNINSTALL_KUBECTL (See testing & troubleshooting table)
  • INSTALL_KUBERNETES / UNINSTALL_KUBERNETES (See testing & troubleshooting table)

How to Override Variables

To override any variable, simply export it before running the script, or prepend it on the command line. For example:

export UMH_VERSION="0.28.1"
export MGMT_AUTH_TOKEN="0123456789abcdef..."
export SILENT="true"
./install.sh

Or in a single line:

export UMH_VERSION="0.28.1" && export MGMT_AUTH_TOKEN="0123456789abcdef..." && export SILENT="true" && ./install.sh