iReference only — for non-production environments. Always verify against official Stonebranch documentation; for production setups follow the documentation and contact Stonebranch support for help.
Target OS drives every option below
COMPONENTS
Java
Tomcat 10
Max heap (Xmx)
Default leaves Tomcat's memory untouched; a size fixes Xms at 512m.

Serving the Controller over HTTPS? → Configure Tomcat SSL in Post Config

Database

Replace CHANGE_ME before you run the script — this tool never accepts a real password.

Agent prereqs
+Supported versionsJava 17/21 · Tomcat 10.x

Universal Controller runs on Java 17 or Java 21 (headless recommended) with Apache Tomcat 10.x.

+Java 21 on RHEL: portable tar.xzoffline servers

For servers with no internet or no access to a dnf repository, download the Red Hat build of OpenJDK 21 portable JDK (.portable.jdk_x86_64.tar.xz) from Red Hat Developers on a machine that has internet access. Copy it to the server next to setup.sh and compare sha256sum with the checksum on the download page.

The script extracts the archive into the install folder you choose (default /opt/java) and points a jdk-21 symlink inside it at the extracted JDK. It then registers /usr/bin/java with alternatives. The Tomcat systemd unit gets JAVA_HOME=<install folder>/jdk-21 directly. Tick "set JAVA_HOME and PATH for all users" only if people also need them in their login shells; it writes /etc/profile.d/java.sh. Every command uses literal paths, so each line still works when pasted on its own. To upgrade, extract a newer archive and re-point the ln -sfn link.

If the Controller connects over TLS to a database, LDAP or SMTP server signed by an internal CA, import that CA into <install folder>/jdk-21/lib/security/cacerts with keytool -importcert.

+Tomcat: package vs tar.gzwhy manual on RHEL

No Tomcat 10 package is published for RHEL/CentOS or Amazon Linux 2023, so the manual tar.gz path is selected automatically there. Ubuntu/Debian ships tomcat10 via apt.

+Harden permissionsoptional

By default the whole Tomcat directory is handed to the Tomcat user. With this option, root takes back bin/, lib/ and conf/, so a compromised Tomcat cannot rewrite its own startup scripts, drop a jar or edit server.xml. The install root itself stays owned by the Tomcat user because Universal Controller creates uc_logs/ and uc_export/ underneath it, and logs/, temp/, work/ and webapps/ stay writable by inheritance.

+JVM memory (setenv)Xms 512m

Choosing a heap size writes a setenv.sh in the Tomcat bin/ directory that sets CATALINA_OPTS. Default leaves Tomcat's built-in settings alone. See the Sizing Calculator for heap sizing guidance. The file is written with sudo sh -c because the manual install has already handed that directory to the Tomcat user — a plain redirect would fail with "Permission denied", and so would sudo cat >, since the redirection still runs in your own shell.

+systemd service filemanual installs only

Only needed for tar.gz installs — package installs register their own unit. JAVA_HOME is optional; leave it blank to get a commented-out placeholder. Run systemctl daemon-reload after copying the file.

+DatabaseMySQL · MariaDB · Postgres

The generator scripts MySQL, MariaDB and PostgreSQL. Oracle and SQL Server are supported by the Controller but must be prepared by hand — follow the Stonebranch Database Installation Guide.

+Agent prerequisitesextra libraries

Universal Agent needs a few system libraries: libxcrypt-compat on Amazon Linux/RHEL. Install them before running the agent installer.