Halloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsPC HealthRecommendedCrashes, freezes, slowdowns? Check your PC nowSpot repairable issues before they interrupt work.Check PCHalloween DealsAmazon USOctober picks are moving - compare before checkoutAmazon US: current deals, useful picks and tech finds.See Picks×
FREEDOM251

Freedom251 › Blog › Java

How to Install JBoss (WildFly) on a 64-Bit Ubuntu VPS

By Freedom251 Team · · 11 min read

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

“JBoss” can refer to Red Hat JBoss Enterprise Application Platform (EAP) or the upstream WildFly project. They are distributed and supported differently, so choose the exact product and release before running a command. For a general-purpose Ubuntu VPS installation, WildFly’s official archive is the clearest route: download the release, install a compatible JDK, run it as a dedicated non-root account, verify standalone mode, and then register the server with systemd. JBoss EAP requires a Red Hat subscription and release-specific support checks; an Ubuntu VPS is not automatically a certified EAP platform.

Choose the server before you provision it

The installation path depends on whether you need Red Hat’s supported enterprise product or the upstream application server.

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Server Distribution and updates Java guidance Ubuntu support consideration Typical installation channel
WildFly 37 Upstream project with a freely downloadable archive Java SE 11 or later The ZIP or tar distribution can be installed on any operating system that supports those archive formats, including a 64-bit Ubuntu VPS Official ZIP or tar archive; optional Galleon or bootable-jar workflows
JBoss EAP 7.4 Subscription-based Red Hat product with version-specific updates and support The 7.4 compatibility matrix lists Red Hat build of OpenJDK, Oracle JDK, Adoptium, IBM and Azul combinations. Java 17 is limited to particular EAP updates. Do not assume Ubuntu is certified. Check the exact EAP 7.4 update, operating-system list and subscription terms. Red Hat distribution methods, including RPM documentation for supported platforms
JBoss EAP 8 Subscription-based Red Hat product with an update-specific support matrix The matrix lists Java 11, 17 and 21 combinations by EAP update Check the tested x86_64 operating systems for the exact update; the matrix does not make every Ubuntu release a supported platform. Red Hat distribution methods, including RPM documentation for supported platforms

If your requirement is simply “run a Java application server on Ubuntu,” select the WildFly release that matches your application and Java policy. If you require Red Hat support, obtain the EAP binaries through your subscription and validate the support matrix before committing the VPS.

Prerequisites for a 64-bit Ubuntu VPS

  • An x86_64 (64-bit) Ubuntu image with administrator access.
  • A working systemd installation. Standard Ubuntu VPS images provide this, but confirm that the provider has not replaced it with a container-only environment.
  • Network access for downloading the selected archive or Red Hat packages.
  • A JDK supported by the exact WildFly or EAP release. WildFly 37 states “Java SE 11 or later”; EAP compatibility depends on the EAP update and JDK vendor.
  • Enough CPU, memory and storage for your application, traffic, heap settings, logs and deployment artifacts. Authoritative installation material does not define a universal RAM or CPU minimum, so size the VPS from workload measurements rather than a generic number.
  • A plan for firewall rules, backups and restricted access to the management interface.

Install WildFly from the official archive

The following procedure uses WildFly because its archive installation is documented for general Linux systems. Replace the archive and JDK choices with the exact release you selected; do not mix files from different releases.

#1 Best Overall
Sale
JBoss in Action: Configuring the JBoss Application Server
  • New
  • Mint Condition
  • Dispatch same day for order received before 12 noon
  • Guaranteed packaging
  • No quibbles returns

1. Update Ubuntu and install archive tools plus the JDK

sudo apt update && sudo apt upgrade -y
sudo apt install -y unzip tar curl ca-certificates openjdk-17-jdk
java -version

The openjdk-17-jdk package is an example. If the WildFly or EAP matrix requires Java 11, install the Ubuntu package for Java 11 instead; if it requires another supported version, use that version. The important check is the java -version result, not the package name alone. Later, set the same JDK explicitly for systemd so an interactive shell’s Java selection cannot differ from the service’s.

2. Create a non-login service account

Never run the application server as root. Create a system group and a user with no interactive login shell:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
sudo groupadd --system wildfly
sudo useradd --system --gid wildfly --home-dir /opt/wildfly --shell /usr/sbin/nologin wildfly
sudo install -d -o wildfly -g wildfly /opt/wildfly

The service account should own the installation and the directories in which the server writes configuration, deployments, temporary files and logs. Keep administrative control with root while granting the service only the access it needs.

3. Download the exact release archive

Use the official WildFly release page and copy its current download URL. Keep the URL, archive name and release number consistent:

export WILDFLY_URL='PASTE_THE_OFFICIAL_ARCHIVE_URL_HERE'
export ARCHIVE='/tmp/wildfly-release.zip'
curl -fL "$WILDFLY_URL" -o "$ARCHIVE"

The URL is intentionally taken from the release page rather than embedded here because WildFly publishes new release filenames and paths over time. Do not substitute an unofficial mirror or an archive from a different release.

4. Verify the checksum when one is published

Download the checksum file supplied for the same release and compare it with the archive before extraction. A direct hash calculation is a useful first check:

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.
sha256sum "$ARCHIVE"

Compare that output character-for-character with the value published alongside the release. A mismatch means the file must not be installed; download it again or investigate the transfer and source.

5. Extract under a controlled path

sudo unzip -q "$ARCHIVE" -d /opt
sudo chown -R wildfly:wildfly /opt/wildfly

WildFly archives normally contain a versioned directory. You can keep that directory for clear rollback and point a stable path at it:

sudo ln -sfn /opt/wildfly-version-directory /opt/wildfly
sudo chown -h wildfly:wildfly /opt/wildfly

Use the directory name actually created by the archive in place of /opt/wildfly-version-directory. Before continuing, verify that /opt/wildfly/bin/standalone.sh exists and that the service account can read it.

6. Set ownership on writable runtime locations

At minimum, the service account needs read access to the full installation and write access to the active configuration, deployments, temporary data and log locations. If you extracted as root, correct ownership after creating the final path:

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.
sudo chown -R wildfly:wildfly /opt/wildfly

If you deliberately keep immutable binaries root-owned, create separate writable directories for runtime data and grant wildfly ownership of those directories. Do not solve permission errors by running the server as root.

7. Start once in standalone mode

Run the shipped script from the server’s bin directory before creating a boot service. Binding to loopback keeps the first test private:

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

Watch the console for startup errors and confirm that the server reaches its normal running state. In a second SSH session, inspect the standalone log under the server’s standalone directory. Stop the foreground process cleanly with Ctrl+C after the runtime and configuration have been validated.

Do not bind the management interface to every network address merely to make testing convenient. A public VPS should expose only the application endpoints that users need, while management traffic remains on localhost, a private network or a tightly restricted administration address.

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

Run WildFly with systemd

WildFly’s documentation describes both a shipped service arrangement and generation with generate_systemd_unit.sh. Use the release-provided method first because unit names, environment-file locations and standalone/domain options can change between releases.

Generate or install the release-provided unit

  1. Change to the installed server’s bin directory: cd /opt/wildfly/bin.
  2. Run the release’s generator as an administrator: sudo ./generate_systemd_unit.sh. Follow the paths and filenames printed by that release; inspect the generated unit before enabling it.
  3. If the archive includes a ready-made unit instead, copy that unit and its accompanying configuration to the locations specified by the WildFly documentation.
  4. Set the JDK path, server mode, server options, bind address and log locations in the accompanying configuration file. Ensure JAVA_HOME points to the same supported JDK verified with java -version.
  5. Confirm that the unit’s User and Group are the dedicated wildfly account and group, not root.

Because the generator’s output is release-specific, do not overwrite its variable names with settings copied from a different WildFly version. Read the generated file and configuration together.

Install, enable and start the unit

sudo systemctl daemon-reload
sudo systemctl enable wildfly
sudo systemctl start wildfly
sudo systemctl status wildfly --no-pager

Use the actual unit name generated for your release if it differs from wildfly.service. enable makes the service start during boot; start launches it immediately. After a reboot or unit change, check both systemd and the server log.

Fallback: a simple standalone unit

If your archive does not provide a usable unit and the generator is unavailable, a minimal custom unit can launch standalone mode directly. First determine the absolute JDK directory with the JDK that should run the service, then replace the example JAVA_HOME value with that path:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
sudo tee /etc/systemd/system/wildfly.service > /dev/null <<'EOF'
[Unit]
Description=WildFly application server
After=network.target

[Service]
Type=simple
User=wildfly
Group=wildfly
Environment=JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
WorkingDirectory=/opt/wildfly
ExecStart=/opt/wildfly/bin/standalone.sh -c standalone.xml -b 127.0.0.1
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now wildfly

This unit keeps the server on loopback and lets systemd collect the process output. For a production deployment, adapt the generated or custom unit to your approved bind address, resource limits, log policy and deployment layout. If you change the unit, run daemon-reload and restart it.

Choose standalone or domain mode

Standalone mode

Standalone mode is the normal starting point for one VPS: one server process owns its configuration and deployments. It reduces moving parts and matches the first-run command above.

Domain mode

Domain mode is intended for coordinated groups of servers managed through host and domain controllers. WildFly’s systemd material provides separate standalone and domain unit patterns. Choose domain mode only when your deployment actually needs centralized host/domain management; it adds configuration and operational dependencies that are unnecessary for a single VPS.

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

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. Do not create a multi-controller layout on one host merely because domain mode exists.

Networking and management security

  • Bind the application listener to the intended private or public address, not automatically to every interface.
  • Allow only required application ports in the VPS provider’s security group and Ubuntu firewall.
  • Keep the management interface on localhost, a private network or a VPN unless a specific administrative design requires remote access.
  • Use SSH access controls and key authentication for administration, and restrict source addresses for any exposed management endpoint.
  • Record which bind addresses and ports the systemd configuration uses so firewall rules and monitoring match the server.

The installation references do not prescribe one universal firewall policy. Port exposure must follow your application, reverse proxy, monitoring and administrative requirements.

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

If you need JBoss EAP instead of WildFly

EAP is not a drop-in label for the WildFly archive. Obtain the EAP release through the applicable Red Hat subscription, then follow that release’s installation documentation and support matrix. The EAP 7.4 and EAP 8 matrices list tested JDK vendors, Java versions and operating systems by update; support can change when you change the EAP update or JDK.

Red Hat’s RPM documentation identifies these default installation paths:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • EAP 7: /opt/rh/eap7/root/usr/share/wildfly
  • EAP 8: /opt/rh/eap8/root/usr/share/wildfly

Those paths describe the Red Hat RPM layout, not a promise that the RPM method is supported on every Ubuntu image. Before production use on Ubuntu, verify that the exact EAP release, Ubuntu version, architecture, JDK vendor and installation channel are covered by your subscription support terms. If Ubuntu is not listed as a certified platform for the selected EAP update, using it may be technically possible but outside the supported configuration.

Operational checks after installation

  • Java selected by the service: run java -version interactively and inspect the systemd environment or configuration to confirm the same JDK is used by the service.
  • Ownership: verify that wildfly can read the installation and write its runtime directories. Permission errors should be fixed with ownership or directory design, not root execution.
  • Service state: use systemctl status wildfly immediately after startup and after every unit change.
  • Journal: inspect journalctl -u wildfly for environment, permission, exit-code and restart-loop messages.
  • Server log: inspect the standalone server log for deployment failures, bind errors and configuration parsing errors.
  • Port binding: confirm that the intended address is listening and that provider security-group and Ubuntu firewall rules permit only the required traffic.
  • Release match: re-check the JDK and support matrix whenever you change WildFly, EAP or a JDK update.

Common failures and fixes

The service works over SSH but fails at boot

An interactive shell may have a different PATH or JAVA_HOME. Put the absolute JDK path in the systemd environment or the release’s configuration file, run systemctl daemon-reload, restart the service and inspect journalctl -u wildfly.

“Permission denied” in standalone directories

Check ownership of the active installation, configuration, deployment, temporary and log directories. Ensure the service account owns or can write each required runtime location. Avoid broad writable permissions on the entire VPS.

The server starts but cannot be reached

Check the bind address first. A loopback bind such as 127.0.0.1 is reachable only from the VPS; that is correct when a reverse proxy is local but not when clients must connect directly. Then verify the VPS security group and Ubuntu firewall.

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

Startup fails after a Java upgrade

Compare the new JDK with the exact WildFly release requirement or EAP update matrix. Restore a supported JDK, set its path explicitly for systemd and restart. Do not infer compatibility from the fact that a newer Java executable launches.

The archive or checksum does not match

Stop the installation, remove the untrusted archive, and download the exact file again from the official release page. A checksum mismatch is a release or transfer problem, not a condition to work around.

A domain configuration is unstable on one VPS

Return to standalone mode unless centralized host/domain management is a real requirement. Domain mode adds controllers and coordination; the documented EAP RPM limitation also rules out multiple domain or host controllers on one machine for that installation method.

Installation decision checklist

  • Have you written down “WildFly” or “JBoss EAP,” including the exact release and update?
  • Does the selected JDK vendor and version appear in that release’s compatibility information?
  • Is the VPS x86_64, administrator-accessible and running systemd?
  • Is the server owned by a dedicated non-login account?
  • Was the official archive or subscription package verified before installation?
  • Did standalone mode start successfully before systemd automation?
  • Does systemd use the intended JAVA_HOME, user, bind address and log configuration?
  • Are only required ports exposed, with management access restricted?
  • Have you recorded a rollback or snapshot plan before deploying applications?

For a single Ubuntu VPS, the practical path is therefore WildFly’s official archive, a compatible JDK, a dedicated service account and the release’s systemd instructions. Treat JBoss EAP as a separate, subscription-backed product whose Ubuntu supportability must be established for the precise release rather than assumed from the word “JBoss.”

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

Quick Recap

SaleBestseller No. 1
JBoss in Action: Configuring the JBoss Application Server
JBoss in Action: Configuring the JBoss Application Server
New; Mint Condition; Dispatch same day for order received before 12 noon; Guaranteed packaging
$26.02
SaleBestseller No. 2
SaleBestseller No. 5

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.

JavaJBossLinux serversystemdUbuntu VPSWildFly

Leave a Reply

Your email address will not be published. Required fields are marked *

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

Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
PC Slower Than It Used to Be?Free scan - under a minute

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.