
WildFly: Formerly known as JBoss As, or just JBoss, is an open source Java EE application server. It is useful for creating, deploying, and hosting Java applications and services. It also handles servlets, JSP, EJB and JMS. Compatible with any operating system where the Java virtual machine is available.
WildFly WildFly is one of the most popular solutions for running Java-based enterprise applications. In this article, we'll explore what WildFly is, its main features, how to install it on Debian 12 from repositories, configure it, and its most notable advantages.
What is WildFly?
WildFly is an open-source Java EE (currently Jakarta EE) application server originally developed by JBoss. Its primary purpose is to provide a reliable, efficient, and scalable environment for running enterprise applications. WildFly stands out for its modular architecture and its ability to adapt to different needs, from small projects to large-scale deployments.
What is WildFly used for?
WildFly is ideal for running enterprise applications in Java, such as management systems, e-commerce platforms, and RESTful or SOAP web services. Its flexibility makes it useful in both on-premises and cloud environments.
Advantages of WildFly
- Speed and Efficiency: Its modular architecture optimizes resource consumption.
- Easy to Set Up: Web console and CLI tools simplify management.
- Scalability: Ideal for applications that need to grow with demand.
- Community Support: Being open source, it has a large active community and available resources.
- Compatibility with Modern Tools: Easily integrate with Docker, Kubernetes, and other container environments.
WildFly Features
- Modular Architecture: WildFly uses JBoss Modules, which allows loading only the necessary modules, reducing resource usage.
- Compliance with Jakarta EE: Compatible with Jakarta EE specifications, ensuring portability and standardization.
- Optimized Performance: Integrates technologies such as Undertow, a high-performance web server.
- Centralized Management and Configuration: Provides an intuitive management console and CLI tools for advanced configurations.
- Scalability and Clustering: Supports distributed environments, facilitating horizontal scalability.
- Container Support: Works seamlessly with Docker and Kubernetes for cloud deployments.
Installing WildFly on Debian 12
Follow these steps to install WildFly on Debian 12:
Yeah wget
is not present on your system, it can be installed by running the following commands
$ sudo apt install curl wget
Requires Java 17
:
WildFly requires Java to run, as it is a Java application server.
- Install Java default-jdk:
$ sudo apt install default-jdk
- Verify Java installation:
Check that Java is installed correctly.
$ java -version
openjdk version "17.0.13" 2024-10-15
OpenJDK Runtime Environment (build 17.0.13+11-Debian-2deb12u1)
OpenJDK 64-Bit Server VM (build 17.0.13+11-Debian-2deb12u1, mixed mode, sharing)
The latest versions of the software WildFly are available in: https://www.wildfly.org/downloads/
These 2 commands provide you, allow you to get the latest version of WildFly.
$ WILDFLY_RELEASE=$(curl -s https://api.github.com/repos/wildfly/wildfly/releases/latest|grep tag_name|cut -d '"' -f 4)
$ wget https://github.com/wildfly/wildfly/releases/download/${WILDFLY_RELEASE}/wildfly-${WILDFLY_RELEASE}.tar.gz
$ ls
Descargas Documentos Escritorio Imágenes Música Plantillas Público Vídeos wildfly-34.0.1.Final.tar.gz
After downloading, extract the compressed file.
$ tar xvf wildfly-${WILDFLY_RELEASE}.tar.gz
$ ls
Descargas Documentos Escritorio Imágenes Música Plantillas Público Vídeos wildfly-34.0.1.Final wildfly-34.0.1.Final.tar.gz
We should move the created folder from WildFly to the directory /opt
.
$ sudo mv wildfly-${WILDFLY_RELEASE} /opt/wildfly
Create a user for WildFly:
It is good practice to create a system-specific user for WildFly to enhance security.
$ sudo groupadd -r wildfly
$ sudo useradd -r -g wildfly -d /opt/wildfly -s /sbin/nologin wildfly
$ sudo chown -R wildfly:wildfly /opt/wildfly
Configure WildFly
- Configure the systemd service for WildFly:
Configure WildFly to run as a service.
$ sudo nano /etc/systemd/system/wildfly.service
Add the following content to the file: /etc/systemd/system/wildfly.service
[Unit]
Description=WildFly Application Server
After=syslog.target network.target
[Service]
Type=simple
User=wildfly
Group=wildfly
ExecStart=/opt/wildfly/bin/standalone.sh -b=0.0.0.0
Restart=on-failure
[Install]
WantedBy=multi-user.target
- Enable and start WildFly:
// Recargue los servicios de systemd antes de iniciar wildfly:
$ sudo systemctl daemon-reload
// Inicie y habilite el servicio WildFly:
$ sudo systemctl start wildfly
$ sudo systemctl enable wildfly
Check service status:
$ sudo systemctl status wildfly
Change WildFly's default port
To change WildFly's default port (port 8080 for HTTP or 9990 for the management console), you must modify its corresponding configuration file.
Change the HTTP port (8080) with standalone mode.
- Edit the configuration file:
- For the mode standalone:
$ sudo nano /opt/wildfly/standalone/configuration/standalone.xml
- For the mode domain:
$ sudo nano /opt/wildfly/domain/configuration/domain.xml
Find the HTTP port settings: In the archive standalone.xml
(either domain.xml
), locate the next block within <subsystem xmlns="urn:jboss:domain:undertow:...">
:
<socket-binding name="http" port="${jboss.http.port:8080}"/>
<socket-binding name="https" port="${jboss.https.port:8443}"/>
Change the port value: Modifies the attribute value port
with the new port number:
<socket-binding name="http" port="${jboss.http.port:9090}"/>
<socket-binding name="https" port="${jboss.https.port:8443}"/>
- Save and Exit: Save the file and close the editor.
- Restart WildFly: To apply the changes, restart the service:
$ sudo systemctl restart wildfly
Change the management console port (9990) with standalone mode.
- Edit the configuration file: Just like with the HTTP port, open the corresponding file:
- For the mode standalone:
$ sudo nano /opt/wildfly/standalone/configuration/standalone.xml
- For the mode domain:
$ sudo nano /opt/wildfly/domain/configuration/domain.xml
Find the management port settings: In the file, locate this block:
<socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
<socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
Change the port value: Modifies the attribute value port
:
<socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9999}"/>
<socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
- Save and Exit: Saves changes and closes the editor.
- Restart WildFly: For the new settings to take effect:
$ sudo systemctl restart wildfly
Access WildFly
- Access the WildFly administration panel:
Open your browser and visithttp://tu-direccion-ip:9090
. Here you should see the WildFly welcome page.

- Configure administrative access:
Set up an administrative user to manage WildFly through the management console.
$ sudo /opt/wildfly/bin/add-user.sh
You'll be prompted to choose the type of user you want to add. Since this is the first user, we want it to be an administrator. Choose
to.
What type of user do you wish to add?
a) Management User (mgmt-users.properties)
b) Application User (application-users.properties)
(a): a
Enter the name of the user to create.
Enter the details of the new user to add.
Using realm 'ManagementRealm' as discovered from the existing property files.
Username : javier02
Provide a strong password for this user. See the provided password policy guide.
Password recommendations are listed below. To modify these restrictions edit the add-user.properties configuration file.
The password should be different from the username
The password should not be one of the following restricted values {root, admin, administrator}
The password should contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), 1 non-alphanumeric symbol(s)
Password : <Enter Password>
Re-enter Password : <Confirm Password>
Press Enter and accept the subsequent prompts to complete user creation.
What groups do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[ ]:
About to add user 'javier02' for realm 'ManagementRealm'
Is this correct yes/no? yes
Added user 'javier02' to file '/opt/wildfly/standalone/configuration/mgmt-users.properties'
Added user 'javier02' to file '/opt/wildfly/domain/configuration/mgmt-users.properties'
Added user 'javier02' with groups to file '/opt/wildfly/standalone/configuration/mgmt-groups.properties'
Added user 'javier02' with groups to file '/opt/wildfly/domain/configuration/mgmt-groups.properties'
Please note that:
- User information is stored in: /opt/wildfly/domain/configuration/mgmt-users.properties
- Group information is stored in: /opt/wildfly/standalone/configuration/mgmt-groups.properties
Check the management console (9990): Login with http://localhost:9990
and enter your username and password:

Summary and Conclusion
WildFly is a robust and versatile tool that meets the requirements of modern enterprise applications. Its modularity, support for Jakarta EE, and ease of use make it a standout choice for both developers and system administrators. Whether used on-premises or in the cloud, WildFly is designed to deliver reliable and scalable performance.
Explore WildFly and discover how it can improve your Java application infrastructure. Ready to get started?