WildFly
Overview
WildFly 40 is the open-source Jakarta EE 11 application server and the upstream community project behind JBoss Enterprise Application Platform. This image runs it on Ubuntu 26.04 LTS, installed on a dedicated EBS data volume that you can resize independently, and reachable on the standard HTTP port through an nginx reverse proxy.
WildFly runs under a systemd service that starts the server on boot and restarts it on failure. The wildfly system account is unprivileged. A one-shot service rotates the seeded admin passwords to fresh per-instance secrets on the first boot of every deployed instance.
What you get:
- WildFly installed under
/opt/wildflyon a dedicated, independently resizable EBS data volume - The
standalone-fullprofile, so the web, Enterprise Bean, messaging (JMS), persistence (JPA) and web service subsystems are all available - An application HTTP listener bound to
0.0.0.0:8080, with nginx installed as a reverse proxy on port 80 that forwards every request to WildFly, so visitors reach the application without specifying a non-standard port number - The WildFly Management Console bound to the loopback address on port 9990 by design, so it is not exposed to the internet. You reach it from your workstation over an SSH tunnel, which arrives at the instance as a loopback connection. The application welcome page on port 80 needs no tunnel
- A ManagementRealm administrator named
adminand an ApplicationRealm user namedappuser, seeded at image build time with temporary passwords - On the first boot of every deployed instance, a one-shot service that rotates both passwords to fresh per-instance secrets and writes them to
/root/wildfly-credentials.txt(mode0600, readable only by root). Two instances launched from the same AMI never share a password - A default security group for this listing that opens port 22 (SSH) and port 80 (HTTP) only
Prerequisites
- An AWS account subscribed to this product in AWS Marketplace
- An EC2 key pair in your target region for SSH access
- A security group that allows inbound TCP 22 (SSH) from your IP and TCP 80 (HTTP) from your users. You reach the management console over SSH, so it does not need an open port
- Recommended instance type:
m5.largeor larger. WildFly is a Java application server and benefits from at least 8 GB RAM for production workloads
Step 1 - Launch from the AWS Marketplace console
- Open the product page in AWS Marketplace, then choose Continue to Subscribe and Continue to Configuration.
- Select the WildFly 40 on Ubuntu 26.04 delivery option and your region, then choose Continue to Launch.
- Choose your instance type, VPC and subnet, key pair, and the security group described above. Then launch the instance.
Step 2 - Launch from the AWS CLI
Replace the AMI ID with the one shown on the launch page of the product for your region. Use your own key pair and security group.
aws ec2 run-instances \
--image-id ami-xxxxxxxxxxxxxxxxx \
--instance-type m5.large \
--key-name your-key-pair \
--security-group-ids sg-xxxxxxxx \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=wildfly}]'Step 3 - Connect to your instance
Connect over SSH as the default login user for your AMI variant.
AMI variant SSH login user
WildFly 40 on Ubuntu 26.04 ubuntu
ssh -i /path/to/your-key.pem ubuntu@<instance-public-ip>Step 4 - Confirm the services are running
systemd manages WildFly and nginx. Confirm that both are active:
systemctl is-active wildfly nginxactive activeConfirm the listeners: nginx on port 80, the WildFly application port on 8080, and the management port bound to loopback only:
sudo ss -tlnp | grep -E ':80 |:8080 |:9990 ' | awk '{print $1, $4}'LISTEN 0.0.0.0:8080 LISTEN 0.0.0.0:80 LISTEN 127.0.0.1:9990 LISTEN [::]:80The management port is 127.0.0.1:9990, which is reachable only from the instance itself.
Step 5 - Retrieve your per-instance credentials
The first-boot service writes a fresh administrator password and a fresh application password to a root-only file. Read the file with:
sudo cat /root/wildfly-credentials.txt# WildFly 40 — generated on first boot by wildfly-firstboot.service
# These credentials are unique to this VM. Store them somewhere safe. WILDFLY_URL=http://172.31.83.236/ WILDFLY_CONSOLE_URL=http://127.0.0.1:9990/console WILDFLY_ADMIN_USER=admin WILDFLY_ADMIN_PASSWORD=<redacted> WILDFLY_APP_USER=appuser WILDFLY_APP_PASSWORD=<redacted>The admin user signs in to the Management Console (ManagementRealm). The appuser user is an ApplicationRealm identity that you can use to secure your own deployed applications.
Step 6 - Open the application
nginx serves the WildFly welcome page on port 80. From your workstation, browse to:
http://<instance-public-ip>/To confirm that it returns HTTP 200, run this from the instance itself:
curl -s -o /dev/null -w 'HTTP %{http_code}\n' http://127.0.0.1/HTTP 200Step 7 - Reach the Management Console over an SSH tunnel
The Management Console binds to loopback only. Open an SSH tunnel from your workstation that forwards your local port 9990 to the loopback interface of the instance:
ssh -L 9990:127.0.0.1:9990 ubuntu@<instance-public-ip>Leave that session open and browse to http://127.0.0.1:9990/console on your workstation. Sign in as admin with the password from /root/wildfly-credentials.txt. The Runtime tab shows the running server, JVM metrics and log files.
You can also verify the running version and state through the management API, without the console. The following command reads the per-instance admin password from the credentials file:
PASS=$(sudo grep '^WILDFLY_ADMIN_PASSWORD=' /root/wildfly-credentials.txt | cut -d= -f2-)
curl -s --digest -u "admin:${PASS}" -H 'Content-Type: application/json' \
-d '{"operation":"read-attribute","name":"product-version","address":[]}' \
http://127.0.0.1:9990/management{"outcome" : "success", "result" : "40.0.0.Final"}Step 8 - Deploy a Jakarta EE application
You can deploy a WAR or EAR in three ways.
a. Drop it into the deployments directory. Copy your archive to the WildFly deployments folder. The deployment scanner picks it up automatically:
scp -i /path/to/your-key.pem myapp.war ubuntu@<instance-public-ip>:/tmp/ ssh -i /path/to/your-key.pem ubuntu@<instance-public-ip> \
'sudo install -o wildfly -g wildfly /tmp/myapp.war /opt/wildfly/standalone/deployments/'b. Use the management CLI. WildFly ships jboss-cli.sh. Connect to the loopback management interface and deploy:
PASS=$(sudo grep '^WILDFLY_ADMIN_PASSWORD=' /root/wildfly-credentials.txt | cut -d= -f2-) sudo -u wildfly /opt/wildfly/bin/jboss-cli.sh --connect \
--controller=127.0.0.1:9990 --user=admin --password="${PASS}" \
--command=":read-attribute(name=server-state)"{ "outcome" => "success", "result" => "running" }c. Use the Management Console. Open the Deployments tab over the SSH tunnel, then choose Add and Upload a new deployment.
Step 9 - Confirm the Java runtime
WildFly 40 runs on OpenJDK 21:
java -versionopenjdk version "21.0.11" 2026-04-21 OpenJDK Runtime Environment (build 21.0.11+10-1-26.04.2-Ubuntu) OpenJDK 64-Bit Server VM (build 21.0.11+10-1-26.04.2-Ubuntu, mixed mode, sharing)Enabling HTTPS
The image fronts WildFly with nginx on port 80, which is the natural place to terminate TLS. Install a certificate from Let's Encrypt and let certbot configure nginx:
sudo apt-get update
sudo apt-get install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.example.comcertbot adds a TLS server block on port 443 and a redirect from port 80, and it renews the certificate automatically. Open port 443 in your security group.
Backup and maintenance
- Deployments and configuration live under
/opt/wildflyon a dedicated EBS volume. Take EBS snapshots of that volume to back up your applications and server configuration. - Restart the server with
sudo systemctl restart wildfly. Restart the proxy withsudo systemctl restart nginx. - Server logs are under
/opt/wildfly/standalone/log/and in the journal (sudo journalctl -u wildfly). - OS updates: apply them with
sudo apt-get update && sudo apt-get upgrade, and reboot during a maintenance window.
Support
24/7 SecureAnyCloud support backs this image. It covers WildFly deployment, Jakarta EE application hosting, datasource and messaging configuration, clustering, TLS and JVM tuning. Contact support through the channel listed on the AWS Marketplace page for the product.
All product and company names are trademarks or registered trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.
Deploy on AWS
Launch WildFly on AWS with 24/7 support from SecureAnyCloud.
View on Marketplace
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com