Question: I am developing a spring boot rest API for mobile application (without view or JSP pages) , I am deploying the API on a windows server (dedicated) , I installed the tomcat server and MySQL server on the server , when I am trying to access the application from the server localhost everything is ok , ex: `localhost:8080/api/users`, but when I am trying to access it from another pc using my server IP I get cannot reach ex: `162.144.188.112:8080/api/users` 
the same thing happens when I want to access MySQL server using server IP. 

so I do not know is there any issue in my server , or I just miss something in the configuration for MySQL and tomcat server ?

Answer: 
If you can access it locally but not remotely, it has to be a missing firewall rule in your Windows Server or there is an additional firewall between your remote desktop and your server.

For the firewall of your Windows Server:

In the `Start` menu, type `Windows Firewall with Advanced Security` and then...

1. Right click on `Inbound Rules` and select `New Rule...`
2. For the rule type, take `Port` then click `Next >`
3. Select `TCP` and `Specific local ports` with `8080` filled in the text box, then click `Next >`
4. `Allow the connection`, then click `Next >`
5. Keep the default for the next page (`Profile`), click `Next >`
6. Give a name to your rule and click `Finish`

As said before, as long as your MySQL server is on the same server than your application, do not expose its port (3306).
You don't need to install tomcat to use spring boot. There is a starter that allows you to [embed the servlet container](https://docs.spring.io/spring-boot/docs/current/reference/html/howto-embedded-servlet-containers.html) and package everything inside a jar at build time
Therefore, starting the application is done simply by running `java -jar`.
Check out the tutorial to know how to correctly [deploy a spring boot application](https://spring.io/guides/gs/spring-boot/)