Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

For a new Ubuntu VPS, the clearest documented route is to install the upstream WildFly archive, run it under a dedicated non-root account, test standalone mode, and then register the supplied systemd unit. “JBoss” is an ambiguous name: Red Hat JBoss Enterprise Application Platform (JBoss EAP) is a subscription product with a release-specific support matrix, while WildFly is the upstream project distributed as a downloadable archive. Identify which one you need before choosing Java, installation files, and support expectations.

JBoss EAP and WildFly are different products

Commands for WildFly should not be presented as a universal JBoss EAP installation method. EAP releases, Java combinations, operating-system certification, update policy, and subscription terms are controlled by Red Hat. WildFly is the upstream application server and can be installed from its ZIP or tar distribution on an operating system that supports those archive formats.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Decision point WildFly JBoss EAP
Distribution Official ZIP or tar archive, with other installation options such as Galleon and bootable JARs Subscription-based Red Hat distribution
Java guidance WildFly 37 states Java SE 11 or later Depends on the exact EAP release, update, and JDK vendor; EAP 7.4 and EAP 8 have separate matrices
Operating-system support Archive installation is portable to systems supporting the archive format Support and certification must be checked against the EAP release; the cited matrices enumerate specific RHEL and Windows combinations rather than every Ubuntu release
Updates and support Follow the WildFly project’s release and security process Red Hat subscription, supported update level, and certified platform determine production support

If your organization requires Red Hat support, pause here and verify the exact EAP release, update, JDK vendor, and operating system in the applicable support matrix. Do not assume that an Ubuntu VPS is a certified EAP platform merely because the Java runtime works.

Check the 64-bit Ubuntu VPS before installing

The VPS should be an x86_64 image with administrator access and a working systemd installation. There is no authoritative universal RAM or CPU minimum: sizing depends on deployed applications, traffic, heap settings, data sources, and concurrency. Start with the capacity required by your workload and leave headroom for the operating system, logs, and deployment tooling.

  1. Confirm the processor architecture:
uname -m

The expected result for a 64-bit VPS is x86_64. If it reports a 32-bit architecture, reprovision the server rather than continuing.

  1. Check the Ubuntu release and systemd:
cat /etc/os-release
systemctl --version

You need a distribution image that uses systemd because the service setup below relies on it.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Update package metadata and existing packages:
sudo apt update
sudo apt full-upgrade -y

Reboot if the upgrade installs a new kernel or otherwise requests it, then reconnect over SSH before continuing.

Choose a JDK that matches the server release

Java compatibility is tied to the application-server release, not simply to Ubuntu. WildFly 37’s getting-started guidance says “Java SE 11 or later.” A current LTS JDK such as OpenJDK 17 is a practical example for a WildFly installation, but you must substitute the JDK required by the exact WildFly or EAP release you selected.

sudo apt install -y openjdk-17-jdk unzip tar
java -version
readlink -f "$(command -v java)"

The first command installs an example JDK and archive tools. If the server’s compatibility information calls for Java 11 or 21 instead, install that package and adjust JAVA_HOME accordingly. The java -version result from your interactive shell is only a checkpoint; the systemd service must be configured to use the same JDK explicitly.

What the EAP matrices mean

  • The EAP 7.4 matrix lists combinations involving Red Hat build of OpenJDK, Oracle JDK, Adoptium, IBM, and Azul. Java 17 support is limited to particular EAP updates.
  • The EAP 8 matrix lists Java 11, 17, and 21 combinations by update and identifies tested x86_64 operating systems.
  • Changing an EAP update or JDK vendor requires checking the matrix again; a combination supported for one update is not automatically supported for another.

Install WildFly from the official archive

The following workflow is for WildFly on Ubuntu. Obtain the exact release archive from the official WildFly release page, and verify its published SHA-256 checksum before extracting it. Do not silently replace a version-specific archive with an older or unrelated build.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

1. Create a locked-down service account

Running an application server as root increases the impact of a web-application compromise. Create a group and a non-login user dedicated to WildFly:

sudo groupadd --system wildfly
sudo useradd --system --gid wildfly --home-dir /opt/wildfly --shell /usr/sbin/nologin wildfly

If the group or user already exists on a rebuilt VPS, verify it rather than creating a second identity.

2. Verify the downloaded archive

Place the downloaded ZIP or tar archive in /tmp or another administrator-only directory. Compare its digest with the checksum published for that exact release:

sha256sum /tmp/wildfly-*.zip
# For a tar archive, use the matching file name instead.

A matching digest confirms file integrity; it does not prove that the release is compatible with your JDK or EAP subscription.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

3. Extract under /opt

Use the command that matches the archive format:

sudo unzip /tmp/wildfly-*.zip -d /opt
sudo tar -xzf /tmp/wildfly-*.tar.gz -C /opt

Run only the applicable command. The archive normally creates a versioned directory such as /opt/wildfly-37.0.0.Final. Rename that directory to a stable path so service configuration does not change at every upgrade:

sudo mv /opt/wildfly-* /opt/wildfly
sudo chown -R wildfly:wildfly /opt/wildfly

Use the real directory name when more than one WildFly directory exists; an unrestricted wildcard can move the wrong tree.

4. Verify a first standalone launch

Start the server once in the foreground from its bin directory. Binding to loopback during this test avoids exposing an unconfigured service publicly:

sudo -u wildfly /opt/wildfly/bin/standalone.sh -b=127.0.0.1

Watch the console for startup errors and confirm that the server reaches its normal started state. Stop it with Ctrl+C. A first launch creates or updates runtime files beneath the WildFly installation, which is why the service account must own the tree. If startup fails, correct Java selection, permissions, or configuration before moving to systemd.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Configure WildFly as a systemd service

WildFly’s documentation provides standalone and domain service patterns and includes generate_systemd_unit.sh. A single VPS normally begins with standalone mode. Domain mode is intended for deployments that need managed host and domain controllers; it adds operational complexity and is not a default requirement for one server.

1. Generate or inspect the supplied unit

cd /opt/wildfly/bin
sudo ./generate_systemd_unit.sh

The script’s output and comments identify the generated service unit and its accompanying configuration file. Read those files before copying them: the exact file names and variable names are part of the generated release content.

2. Set the service environment

In the configuration file referenced by the unit, set at least:

  • JAVA_HOME to the JDK directory selected for this WildFly release.
  • The WildFly home directory to /opt/wildfly, if the generated unit does not already define it.
  • Server options and the bind address appropriate for your deployment.
  • Log locations and any limits required by your operations policy.

Set these values in the systemd environment or the generated configuration, not only in an interactive SSH profile. A shell setting that works when you run standalone.sh manually is not inherited by a service launched at boot.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

3. Install the unit and reload systemd

Copy the generated .service file to the systemd directory specified by the WildFly instructions, commonly /etc/systemd/system/. Copy its companion configuration to the location referenced inside the unit. Preserve the file names used by the generated service so its paths remain valid.

sudo cp /path/to/generated-wildfly.service /etc/systemd/system/wildfly.service
sudo systemctl daemon-reload
sudo systemctl enable wildfly
sudo systemctl start wildfly

Replace the source path with the actual generated file location; do not copy a domain unit when you intend to run standalone mode.

4. Confirm startup and persistence

sudo systemctl status wildfly --no-pager
sudo journalctl -u wildfly -b --no-pager

Check the standalone server log as well as the journal. Stop and start the service once more to confirm that it can recover without an interactive shell:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
sudo systemctl restart wildfly
sudo systemctl is-enabled wildfly

is-enabled should report that the service is enabled for boot. If the unit uses a different service name, use that exact name in every systemctl command.

Bind addresses, firewall rules, and management access

Choose the bind address deliberately. A loopback bind is useful for a reverse-proxy arrangement in which the proxy is the only public listener. A public bind may be required for a direct application endpoint, but it increases the exposure of every configured listener.

  • Open only the ports required by the deployed application and by any reverse proxy or load balancer.
  • Restrict the management interface to an administrator network, private subnet, or VPN. Do not expose management access broadly just because the application endpoint is public.
  • Check both the Ubuntu firewall and the VPS provider’s security-group or network ACL rules.
  • After changing a bind address, inspect the service log and verify the listening sockets from the VPS before declaring the deployment complete.

The installation documentation does not prescribe one universal firewall policy; the correct rule set depends on your application and network design.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Standalone mode versus domain mode

Mode Use it when Operational implication
Standalone One VPS or an independently managed server One server configuration and one service lifecycle; the normal starting point for a single VPS
Domain Several servers must be coordinated through host and domain controllers Additional controllers, shared management decisions, and a different systemd unit pattern

Red Hat’s EAP RPM documentation also warns that multiple domain or host controllers on one machine are not supported for that RPM installation method. That warning is specific to the RPM method; it does not turn an Ubuntu archive installation into an EAP-supported platform.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

JBoss EAP on Ubuntu: what is and is not established

An Ubuntu VPS can run Java software, but that fact alone does not establish Red Hat support for JBoss EAP. The EAP support matrices enumerate tested operating systems and JDK combinations for each release and update. Because the cited matrices focus on specific RHEL and Windows combinations, you must confirm Ubuntu supportability with the exact EAP documentation and subscription terms before using it in a production system.

The documented EAP RPM paths are /opt/rh/eap7/root/usr/share/wildfly for EAP 7 and /opt/rh/eap8/root/usr/share/wildfly for EAP 8. Those paths describe the RPM installation layout on supported platforms; they are not a recommendation to install Red Hat RPMs on an arbitrary Ubuntu image. For a general Linux installation on Ubuntu, the WildFly archive workflow above is the clearest documented route.

Troubleshoot the common failure points

Java works in SSH but systemd fails

Run java -version as the service account and inspect the unit’s environment. Set JAVA_HOME in the systemd configuration, reload the daemon, and restart the service. Interactive shell profiles are not a reliable source of service variables.

The service cannot read or write files

Check ownership and permissions:

sudo -u wildfly test -r /opt/wildfly/bin/standalone.sh
sudo -u wildfly test -w /opt/wildfly/standalone

The wildfly account needs read access to the installation and write access to runtime directories, including the standalone configuration, deployment, temporary, and log areas that your release uses. Correct ownership rather than granting broad world-write permissions.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The process starts but is unreachable

Confirm the configured bind address, the listener shown in the server log, the VPS provider’s security rules, and the Ubuntu firewall. A service bound only to 127.0.0.1 will not accept connections sent to the VPS’s public address.

Startup errors appear only after boot

Compare the interactive launch with journalctl -u wildfly -b. Boot-time failures commonly expose a missing JAVA_HOME, an incorrect working directory, a stale archive path, or permissions that were hidden when testing as an administrator.

A release upgrade breaks the installation

Re-check the JDK compatibility information for the new WildFly or EAP release, verify the archive checksum, and review generated systemd files for changed variable names or paths. Keep the previous installation available until the new service has started and its logs have been checked.

Installation checklist

  • The VPS reports x86_64 and has administrator access.
  • The selected WildFly or EAP release is identified before Java is installed.
  • The JDK version and vendor match that release’s compatibility information.
  • The archive checksum matches the publisher’s value.
  • WildFly files are owned by a dedicated non-login service account.
  • A foreground standalone launch completed before systemd was enabled.
  • JAVA_HOME, bind settings, options, and log locations are defined in the service environment.
  • The correct standalone or domain unit was installed, reloaded, enabled, and started.
  • Both the systemd journal and server log show a clean startup.
  • Only required application ports are exposed, and management access is restricted.

Bottom line

On a 64-bit Ubuntu VPS, install WildFly from its official archive, match its JDK requirement, run it as a dedicated non-root user, validate standalone mode, and use the release’s generated systemd unit. Treat “JBoss EAP on Ubuntu” as a separate, support-matrix question: verify the exact EAP update, JDK combination, certified operating system, and subscription terms before calling the deployment production-supported.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.