Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Fix the driver behind crashes, sound loss and screen glitches3Repair Windows errors before they cause bigger problems“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.
Need a server to try this on? Antihost offers Linux VPS plans with NVMe storage, full root access and a 14-day free trial.
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.
| # | Preview | Product | Price | |
|---|---|---|---|---|
| 1 |
|
JBoss in Action: Configuring the JBoss Application Server | $26.02 | Buy on Amazon |
| 2 |
|
JBoss AS 5 Development | $50.60 | Buy on Amazon |
| 3 |
|
Enterprise Application Servers CookBook - Part 2: JBoss EAP | $9.99 | Buy on Amazon |
| 4 |
|
Mastering JBoss Enterprise Application Platform 7 | $50.08 | Buy on Amazon |
| 5 |
|
JBoss A Complete Guide | $93.76 | Buy on Amazon |
As an Amazon Associate I earn from qualifying purchases.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →| 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
- 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:
Recommended Free Tools
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.
Rank #2
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.
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.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →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
- Change to the installed server’s
bindirectory:cd /opt/wildfly/bin. - 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. - If the archive includes a ready-made unit instead, copy that unit and its accompanying configuration to the locations specified by the WildFly documentation.
- Set the JDK path, server mode, server options, bind address and log locations in the accompanying configuration file. Ensure
JAVA_HOMEpoints to the same supported JDK verified withjava -version. - Confirm that the unit’s
UserandGroupare the dedicatedwildflyaccount 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:
Rank #4
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.
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.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.
Best Value
Red Hat’s RPM documentation identifies these default installation paths:
- 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 -versioninteractively and inspect the systemd environment or configuration to confirm the same JDK is used by the service. - Ownership: verify that
wildflycan 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 wildflyimmediately after startup and after every unit change. - Journal: inspect
journalctl -u wildflyfor 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.
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.”
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallQuick Recap
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.

