Sorry, we didn't find any relevant articles for you.

Send us your queries using the form below and we will get back to you with a solution.

UDA-Generate - Environment Setup Steps

To set up UDA-Generate and start generating documents, a few steps must be completed to properly configure the Runtime environment. This guide walks you through the complete setup process for enabling UDF import functionality in your GenRocket environment. The setup includes downloading the runtime bundle for your platform, installing the required dependencies, and verifying the environment before your first generation.

Changelog from Last release

  • Node.js 22 or newer is now required (previously 20.18.0). Node 20 will fail the preflight check.
  • Python is now required for watermarking, augmentation, TIFF, EML and MSG output. A new
    python_runtime ships alongside node_runtime.
  • Google Chrome or Chromium must be installed separately. UDA renders through
    puppeteer-core, which deliberately downloads no browser of its own.
  • node_runtime.zip is replaced by a single platform-specific runtime bundle that contains
    both runtimes and all of their dependencies, pre-downloaded and hash-verified. Installation
    needs no internet access.
  • A new --doctor command checks every dependency and tells you exactly what is missing.

Prerequisites

Requirement Version Notes
GenRocket Runtime current GenRocket installation directory access
Java Runtime (JRE) 8 or newer runs the UDA jar
Node.js 22 or newer, with npm 10+ hard requirement — generation fails below this
Python (CPython) 3.14 recommended, 3.12 supported 3.13 is not supported — the bundled wheels are cp314 / cp312 only
Google Chrome or Chromium any recent version not bundled — see Step 6
Administrative privileges for the Node.js, Python and Chrome installers
Disk space ~2 GB bundle download, extraction and the installed dependencies

An internet connection is needed to download the bundle and the prerequisites above. The
installation itself is fully offline — no package registry is contacted.

Step 1 — Identify your platform

Two bundles are published. Pick the one that matches your machine before downloading.

macOS / Linux — open a terminal:

uname -s          # Darwin = macOS, Linux = Linux
uname -m          # arm64 = Apple Silicon, x86_64 = Intel/AMD
node -v           # expect v22.x or newer
python3 -V        # expect 3.14.x or 3.12.x  

Then choose your bundle:

Your platform Bundle to download
macOS on Apple Silicon (M1–M4) uda-runtime-3.0.0-posix.zip
Ubuntu / Linux, x86-64 uda-runtime-3.0.0-posix.zip
Windows 10 / 11, x64 uda-runtime-3.0.0-windows-x64.zip
macOS on Intel not supported — see the note below

macOS on Intel is not supported. Use an Apple Silicon Mac, a Linux host, or a Windows machine.

Step 2 — Enable Import from UDF

Ensure Import from UDF is enabled for your organization. To check simply see in new Domain section you are able to find Import from UDF option. Contact support@genrocket.com if it is not.

Step 3 — Download the UDA JAR file

  1. Download the UDA Jar from the GenRocket web platform under Options ▸ Download UDA Jar.
  2. Place the file in the genrocket/lib directory (the exact location varies by installation).

Common paths:

  • WindowsC:\Users\<username>\genrocket\lib
  • macOS / Linux/home/users/<username>/genrocket/lib

Step 4 — Install Node.js 22 or newer

UDA renders every template through Node.js. Version 22 or newer is required; the preflight check fails on anything older.

Windows — installer

  1. Download the Node.js 22 LTS Windows installer (.msi, x64) from https://nodejs.org/en/download.
  2. Run the .msi and follow the wizard, accepting the default values.
  3. Open a new command window and verify:
node --version  
npm --version

macOS / Linux — nvm (Node Version Manager)

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

nvm install 22
nvm use 22 

Verify: 

node --version    # v22.x.x or newer
npm --version     # 10.x.x or newer

Step 5 — Install Python

Windows  

py -3.14 -V  
py -3.14 -c "import struct; print(struct.calcsize('P') * 8)"    # must print 64

macOS

brew install python@3.14
python3.14 -V

Ubuntu / Debian

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.14 python3.14-venv
python3.14 -V

The python3.14-venv package is required — the installer creates a virtual environment.

Step 6 — Install Google Chrome or Chromium

UDA prints PDFs and images through a headless Chrome instance. The bundled renderer uses puppeteer-core, which does not download a browser, so Chrome or Chromium must already be present on the machine. Without it, generation fails and --doctor reports a FAIL.

Platform Install
Windows Google Chrome from https://www.google.com/chrome/
macOS Google Chrome, or brew install --cask chromium
Ubuntu / Debian sudo apt install chromium-browser


Where UDA looks for the browser 
If the browser is at one of these paths it is found automatically:  
  
Windows

C:\Program Files\Google\Chrome\Application\chrome.exe
C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
%LOCALAPPDATA%\Google\Chrome\Application\chrome.exe
C:\Program Files\Microsoft\Edge\Application\msedge.exe

  
macOS  

/Applications/Google Chrome.app/Contents/MacOS/Google Chrome
/Applications/Chromium.app/Contents/MacOS/Chromium
/usr/local/bin/google-chrome-stable
/usr/local/bin/chromium

Linux

/usr/bin/google-chrome-stable
/usr/bin/google-chrome
/usr/bin/chromium-browser
/usr/bin/chromium
/snap/bin/chromium

Pointing UDA at a browser elsewhere

If Chrome is installed somewhere else, set one of the following. They are checked in this order:  
 
1. chromePath in your configuration JSON  
2. the PUPPETEER_EXECUTABLE_PATH environment variable  
3. the CHROME_PATH environment variable   

export PUPPETEER_EXECUTABLE_PATH="/opt/google/chrome/chrome"
  
setx PUPPETEER_EXECUTABLE_PATH "D:\Apps\Chrome\chrome.exe"  

Note. If you set one of these overrides and the file does not exist, generation stops with
an error rather than falling back to auto-detection. Check the path carefully.

On Apple Silicon, Homebrew installs Chromium to /opt/homebrew/bin/chromium, which is not on the auto-detected list. Set PUPPETEER_EXECUTABLE_PATH if you install it that way.

Step 7 — Download the runtime bundle

Download the bundle you identified in Step 1.

Bundle Platforms Approx. size
uda-runtime-3.0.0-posix.zip macOS (Apple Silicon), Linux x86-64 545 MB
uda-runtime-3.0.0-windows-x64.zip Windows 10 / 11 x64 342 MB

Verify the download

Each bundle is published with a SHA-256 checksum. Confirm it matches before extracting.

# macOS  
shasum -a 256 uda-runtime-3.0.0-posix.zip  
  
# Linux  
sha256sum uda-runtime-3.0.0-posix.zip
Get-FileHash -Algorithm SHA256 uda-runtime-3.0.0-windows-x64.zip
Bundle SHA-256
uda-runtime-3.0.0-posix.zip 2d38e1c5f6bd738710cd21604d36e28b815adda85a6e090a9efa131eee1b0194
uda-runtime-3.0.0-windows-x64.zip 58a8962bf04a43f6c4fbea2cf706a355dbcb0c23e24173e2d91ffa985c7c702b

Step 8 — Extract into genrocket/lib

Extract the bundle directly into the same directory as the UDA jar — normally genrocket/lib. The zip has no wrapper folder, so node_runtime and python_runtime land beside the jar, which is exactly where UDA looks for them first.

cd ~/genrocket/libunzip ~/Downloads/uda-runtime-3.0.0-posix.zip
cd $env:USERPROFILE\genrocket\lib
Expand-Archive -Path $env:USERPROFILE\Downloads\uda-runtime-3.0.0-windows-x64.zip -DestinationPath .  

The result:

genrocket/lib/  
├── gr-uda-<version>.jar          ← from Step 3  
├── node_runtime/  
│   ├── templateToPdf.js  templateToImage.js  templateToHtml.js  templateRenderer.js  
│   ├── package.json  package-lock.json  
│   ├── node_deps_sha256.csv  
│   └── npm-cache/                ← offline package cache  
├── python_runtime/  
│   ├── python_runtime.enc  
│   ├── pyproject.toml  uv.lock  requirements-delivery.txt  
│   ├── wheelhouse/               ← offline Python packages  
│   └── wheelhouse_manifest.csv  
├── sbom/                         ← CycloneDX software bill of materials  
├── install.sh   install.ps1  
├── INSTALL.md   MANIFEST.json    SHA256SUMS.txt

Step 9 — Run the installer 

From the genrocket/lib directory:  

macOS / Linux

./install.sh  

Windows (PowerShell, as Administrator)

powershell -ExecutionPolicy Bypass -File .\install.ps1

The installer checks your Node and Python versions, installs the Node dependencies from the bundled cache, builds the Python virtual environment from the bundled wheelhouse, and import-verifies both runtimes. Nothing is downloaded.

Manual equivalent, if you prefer to run the steps yourself
cd node_runtime
npm ci --offline --cache ./npm-cache --no-audit --no-fund 

cd ../python_runtime
python3.14 -m venv .venv
.venv/bin/python -m pip install --no-index --find-links wheelhouse \ --require-hashes -r requirements-delivery.txt

On Windows, use .venv\Scripts\python.exe in place of .venv/bin/python

Step 10 — Verify the environment

java -jar gr-uda-<version>.jar --doctor

A healthy environment looks like this:

UDA Preflight doctor
=========================
Base directory: /Users/aprilh/genrocket/lib
[ OK ] Node.js 22.19.0 (/Users/aprilh/.nvm/versions/node/v22.19.0/bin/node)
[ OK ] npm 10.9.3 (/Users/aprilh/.nvm/versions/node/v22.19.0/bin/npm)
[ OK ] node_runtime ready (/Users/aprilh/genrocket/lib/node_runtime)
[ OK ] Chrome/Chromium (/Applications/Google Chrome.app/Contents/MacOS/Google Chrome)
[ OK ] Python 3.14.3 (/opt/homebrew/bin/python3.14)
[ OK ] python_runtime venv ready (/Users/aprilh/genrocket/lib/python_runtime)
[ OK ] python_runtime.enc present

Result: READY — required dependencies satisfied.

Reading the result:

Marker Meaning
[ OK ] check passed
[WARN] optional feature unavailable — generation still works, but the Python-backed formats do not
[FAIL] generation will not work until this is fixed

Only three checks are fatal: the Node.js version, the node_runtime folder and its installed dependencies, and Chrome/Chromium. Every Python check is advisory.

Step 11 — (Optional) Download the fonts folder for signatures

To generate PDFs with signatures using different fonts, download the fonts.zip folder. Unzip it and place it in your output directory — the path defined by resource.output.directory.

Fonts Zip Folder Link: fonts.zip

Path example

My Resources Value
resource.home.directory /users/username
resource.jdbc.directory /users/username/databases
resource.output.directory /users/username/output

Note. You can also add your own fonts to this folder and use them when generating PDFs with signatures. Additional steps are required for adding signatures to a template in the Template Editor.

Appendix A — What each runtime provides

Runtime Output formats it enables
node_runtime PDF, PNG, JPEG, HTML
python_runtime watermarking, augmentation, TIFF, EML, MSG

Basic PDF and image generation works without the Python virtual environment — --doctor will report [WARN] rather than [FAIL]. The Python-backed formats will fail until Step 9 completes successfully.

Appendix B — Troubleshoot

Message Cause Fix
[FAIL] Node.js … is too old — version 22+ required. Node 20 or older on PATH Redo Step 4. On nvm, run nvm use 22, and check that no other Node is earlier on PATH.
[FAIL] Node.js executable not found Node not on PATH Open a new terminal after installing.
[FAIL] node_runtime folder with templateToPdf.js not found at … Bundle extracted to the wrong place, or a mismatched jar Extract into the same folder as the jar (Step 8). If the folder is correct, your jar is from an older runtime line — see the note in Step 3.
[FAIL] node_runtime dependencies not installed (no node_modules in …) Installer not run, or it failed Run ./install.sh / install.ps1 again (Step 9) and read its output.
[FAIL] No Chrome/Chromium found. No browser installed, or installed outside the standard paths Install Chrome (Step 6), or set PUPPETEER_EXECUTABLE_PATH.
[WARN] Python … — 3.12+ recommended. Python older than 3.12 resolved first Install 3.14 version
[WARN] python_runtime venv not installed (…) Python half of the install did not complete Re-run the installer and check for a Python version or 32-bit error.
[WARN] python_runtime.enc not found Incomplete extraction Re-extract the bundle and verify with SHA256SUMS.txt.
Installer stops: "No supported Python found" Only Python 3.13, 3.11 or older is present Install 3.14 or 3.12. 3.13 is not supported.
Installer stops: "is a 32-bit interpreter" 32-bit Python Reinstall the 64-bit build.
npm ci fails with network errors Run from the wrong directory, or the cache is missing Run the installer from the bundle root so it finds node_runtime/npm-cache.
Windows: path or filename too long Extracted too deep Re-extract to a short path such as C:\Users\<username>\genrocket\lib.
NoClassDefFoundError: org/slf4j/LoggerFactory Ran the jar with java -jar outside the GenRocket Runtime Logging is a provided dependency. Use the -cp form with slf4j-lib/* shown in Step 10.
Pipeline Error: net::ERR_INVALID_URL Relative paths passed to the CLI Pass absolute paths for the template, data and output files.

Do not run npm install puppeteer. The runtime pins puppeteer-core on purpose; installing the full puppeteer package pulls in a second Chromium and breaks the offline, hash-verified install.