Esta guía explica cómo acceder a la aplicación desde otros dispositivos en tu red local (LAN).
- IP Local:
192.168.100.98 - Puerto:
8080 - Sistema: Fedora Linux
- http://localhost:8080/terminal/Terminal-1
- http://localhost:8080/terminal/Terminal-2
- http://localhost:8080/terminal/Terminal-3
- http://192.168.100.98:8080/terminal/Terminal-1
- http://192.168.100.98:8080/terminal/Terminal-2
- http://192.168.100.98:8080/terminal/Terminal-3
Se agregó la siguiente línea en application.properties:
server.address=0.0.0.0Significado:
0.0.0.0= Escuchar en todas las interfaces de red- Permite conexiones desde localhost Y desde otros dispositivos en la red
- Spring Boot usa Tomcat embebido (ya incluido, no necesitas instalarlo)
Abrir puerto 8080:
sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reloadVerificar puertos abiertos:
sudo firewall-cmd --list-portsVerificar estado del firewall:
sudo firewall-cmd --stateAbrir puerto 8080:
sudo ufw allow 8080/tcp
sudo ufw reloadVerificar estado:
sudo ufw status- Panel de Control → Sistema y seguridad → Firewall de Windows Defender
- Configuración avanzada → Reglas de entrada
- Nueva regla → Puerto → TCP → Puerto específico: 8080
- Permitir la conexión → Aplicar a todos los perfiles
- Nombre: "Spring Boot App - Puerto 8080"
# 1. Navegar al directorio del proyecto
cd C:\ruta\al\proyecto\javainge
# 2. Arrancar el servidor
java -jar target\venta-boletos-1.0.0.jar# 1. Navegar al directorio del proyecto
cd C:\ruta\al\proyecto\javainge
# 2. Arrancar el servidor
java -jar .\target\venta-boletos-1.0.0.jar- Abre el Explorador de archivos
- Navega a la carpeta
javainge\target - Haz doble clic en
venta-boletos-1.0.0.jar - Se abrirá una ventana de consola negra (no la cierres)
# Crear archivo start-server.bat
@echo off
cd /d C:\ruta\al\proyecto\javainge
java -jar target\venta-boletos-1.0.0.jar
pauseGuarda como start-server.bat y haz doble clic para ejecutar.
Detener el servidor en Windows:
- Presiona
Ctrl + Cen la ventana de CMD/PowerShell - O cierra la ventana de consola
Obtener tu IP en Windows:
ipconfig
# Busca "Dirección IPv4" en la sección de tu adaptador WiFi/Ethernet# 1. Navegar al directorio del proyecto
cd ~/ruta/al/proyecto/javainge
# 2. Arrancar el servidor
java -jar target/venta-boletos-1.0.0.jar# Arrancar en background
cd ~/ruta/al/proyecto/javainge
nohup java -jar target/venta-boletos-1.0.0.jar > server.log 2>&1 &
# Ver el PID del proceso
echo $!
# Ver logs en tiempo real
tail -f server.log# Crear archivo start-server.sh
cat > start-server.sh << 'EOF'
#!/bin/bash
cd ~/ruta/al/proyecto/javainge
echo "🚀 Iniciando servidor..."
java -jar target/venta-boletos-1.0.0.jar
EOF
# Dar permisos de ejecución
chmod +x start-server.sh
# Ejecutar
./start-server.shDetener el servidor en macOS:
# Opción 1: Si está en terminal, presiona Ctrl + C
# Opción 2: Buscar y matar el proceso
ps aux | grep venta-boletos
kill <PID>
# Opción 3: Usar pkill
pkill -f venta-boletosObtener tu IP en macOS:
ipconfig getifaddr en0 # WiFi
# o
ifconfig | grep "inet " | grep -v 127.0.0.1# 1. Navegar al directorio del proyecto
cd ~/Downloads/javainge
# 2. Arrancar el servidor
java -jar target/venta-boletos-1.0.0.jar# Arrancar en background
cd ~/Downloads/javainge
nohup java -jar target/venta-boletos-1.0.0.jar > server.log 2>&1 &
# Guardar el PID
echo $! > server.pid
# Ver logs en tiempo real
tail -f server.log# Crear archivo de servicio
sudo nano /etc/systemd/system/venta-boletos.serviceContenido del archivo:
[Unit]
Description=Sistema de Venta de Boletos
After=network.target
[Service]
Type=simple
User=deepdevjose
WorkingDirectory=/home/deepdevjose/Downloads/javainge
ExecStart=/usr/bin/java -jar /home/deepdevjose/Downloads/javainge/target/venta-boletos-1.0.0.jar
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.targetComandos para usar el servicio:
# Recargar systemd
sudo systemctl daemon-reload
# Habilitar inicio automático
sudo systemctl enable venta-boletos
# Iniciar el servicio
sudo systemctl start venta-boletos
# Ver estado
sudo systemctl status venta-boletos
# Ver logs
sudo journalctl -u venta-boletos -f
# Detener el servicio
sudo systemctl stop venta-boletos
# Reiniciar el servicio
sudo systemctl restart venta-boletos# Crear archivo start-server.sh
cat > start-server.sh << 'EOF'
#!/bin/bash
cd ~/Downloads/javainge
echo "🚀 Iniciando servidor de venta de boletos..."
echo "📡 IP Local: $(hostname -I | awk '{print $1}')"
echo "🌐 Accede desde: http://$(hostname -I | awk '{print $1}'):8080/terminal/Terminal-1"
echo ""
java -jar target/venta-boletos-1.0.0.jar
EOF
# Dar permisos
chmod +x start-server.sh
# Ejecutar
./start-server.shDetener el servidor en Linux:
# Opción 1: Si está en terminal, presiona Ctrl + C
# Opción 2: Buscar proceso y matar
ps aux | grep venta-boletos
kill <PID>
# Opción 3: Usar pkill (más rápido)
pkill -f venta-boletos
# Opción 4: Matar con fuerza si no responde
pkill -9 -f venta-boletos
# Opción 5: Si usas systemd
sudo systemctl stop venta-boletosObtener tu IP en Linux:
# Método 1
hostname -I | awk '{print $1}'
# Método 2
ip addr show | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}' | cut -d/ -f1
# Método 3
ifconfig | grep "inet " | grep -v 127.0.0.1A veces necesitas reiniciar el servidor después de hacer cambios:
# Detener (Ctrl + C) y volver a ejecutar
java -jar target\venta-boletos-1.0.0.jar# Detener
pkill -f venta-boletos
# Esperar un momento
sleep 2
# Iniciar de nuevo
java -jar target/venta-boletos-1.0.0.jar# Crear restart-server.sh
cat > restart-server.sh << 'EOF'
#!/bin/bash
echo "🔄 Reiniciando servidor..."
pkill -f venta-boletos
sleep 2
cd ~/Downloads/javainge
java -jar target/venta-boletos-1.0.0.jar
EOF
chmod +x restart-server.sh
./restart-server.sh# En Linux/Mac
ss -tlnp | grep 8080
# Debe mostrar: 0.0.0.0:8080 (no solo 127.0.0.1:8080)
# O con netstat
netstat -tlnp | grep 8080En Windows:
netstat -an | findstr :8080Resultado esperado:
0.0.0.0:8080 (escucha en todas las interfaces) ✅
Resultado incorrecto:
127.0.0.1:8080 (solo localhost) ❌
Linux/Mac:
hostname -I | awk '{print $1}'
# o
ip addr show | grep "inet " | grep -v 127.0.0.1Windows:
ipconfig
# Busca "Dirección IPv4"Tu IP actual: 192.168.100.98
Desde tu teléfono, tablet u otra computadora en la misma red WiFi:
- Abre el navegador
- Ve a:
http://192.168.100.98:8080/terminal/Terminal-1 - Deberías ver la interfaz de compra de boletos
- Conecta tu dispositivo al mismo WiFi que tu servidor
- Abre Chrome/Safari
- Navega a:
http://192.168.100.98:8080/terminal/Terminal-1http://192.168.100.98:8080/terminal/Terminal-2http://192.168.100.98:8080/terminal/Terminal-3
Escenario realista:
- Computadora 1: Terminal-1
- Computadora 2: Terminal-2
- Teléfono 1: Terminal-3
- Tablet: Terminal-4
Todos pueden comprar simultáneamente y ver las actualizaciones sincronizadas.
Esta configuración expone la aplicación en tu red local solamente:
- ✅ Dispositivos en tu WiFi/Red local pueden acceder
- ❌ Internet externo NO puede acceder (protegido por tu router)
Si realmente necesitas acceso desde Internet, considera:
-
Configurar router (Port Forwarding)
- Requiere acceso al router
- Reenviar puerto 8080 a 192.168.100.98:8080
- Usar IP pública del router
-
Usar servicios de túnel (Desarrollo)
- ngrok:
ngrok http 8080 - localtonet
- serveo
- ngrok:
-
Desplegar en la nube (Producción)
- AWS EC2 / Lightsail
- Google Cloud
- Azure
- Heroku
- Railway
- Autenticación de usuarios
- HTTPS/SSL
- Rate limiting
- CORS configurado
- Auditoría de seguridad
1. Verifica que ambos dispositivos están en la misma red
# En el servidor
hostname -I
# En el otro dispositivo (Windows)
ipconfig
# Ambos deben tener IPs en el mismo rango
# Ejemplo: 192.168.100.x o 192.168.1.x2. Verifica el firewall
# Linux
sudo firewall-cmd --list-ports # Debe incluir 8080/tcp
# O temporalmente desactivar (SOLO PARA PRUEBA)
sudo systemctl stop firewalld
# Probar acceso
# Si funciona, el problema es el firewall
sudo systemctl start firewalld3. Verifica que el servidor escucha en 0.0.0.0
ss -tlnp | grep 8080
# Debe mostrar: 0.0.0.0:8080Si muestra 127.0.0.1:8080, revisa que application.properties tenga:
server.address=0.0.0.04. Ping al servidor
# Desde el otro dispositivo
ping 192.168.100.98
# Si no responde, hay problema de red/firewall5. Verifica que la aplicación está corriendo
ps aux | grep venta-boletos
# o
curl http://localhost:8080/api/asientosNecesitas configurar Port Forwarding en tu router:
- Accede a tu router (generalmente 192.168.1.1 o 192.168.0.1)
- Busca "Port Forwarding" o "Reenvío de puertos"
- Configura:
- Puerto externo: 8080
- Puerto interno: 8080
- IP interna: 192.168.100.98
- Protocolo: TCP
- Obtén tu IP pública: https://whatismyipaddress.com
- Accede desde Internet:
http://TU_IP_PUBLICA:8080/terminal/Terminal-1
- Aplicación recompilada con
server.address=0.0.0.0 - Aplicación corriendo (puerto 8080)
- Firewall configurado (puerto 8080/tcp abierto)
- IP local identificada (192.168.100.98)
- Acceso desde localhost funciona
- Acceso desde otro dispositivo en la red funciona
- Múltiples terminales pueden conectarse simultáneamente
# Ejecutar en el servidor
echo "=== VERIFICACIÓN DE RED ==="
echo "IP Local: $(hostname -I | awk '{print $1}')"
echo "Puerto: 8080"
echo ""
echo "Servidor escuchando en:"
ss -tlnp 2>/dev/null | grep 8080 | awk '{print $4}' || netstat -tlnp 2>/dev/null | grep 8080
echo ""
echo "Puertos del firewall:"
sudo firewall-cmd --list-ports 2>/dev/null || echo "ufw: $(sudo ufw status 2>/dev/null | grep 8080)"
echo ""
echo "Acceso desde red:"
echo " http://$(hostname -I | awk '{print $1}'):8080/terminal/Terminal-1"http://localhost:8080/terminal/Terminal-1
http://localhost:8080/terminal/Terminal-2
http://localhost:8080/terminal/Terminal-3
http://192.168.100.98:8080/terminal/Terminal-1
http://192.168.100.98:8080/terminal/Terminal-2
http://192.168.100.98:8080/terminal/Terminal-3
GET http://192.168.100.98:8080/api/asientos
POST http://192.168.100.98:8080/api/comprar-aleatorio?terminalId=Terminal-X
POST http://192.168.100.98:8080/api/comprar-especifico?terminalId=Terminal-X&numeroAsiento=Y
Spring Boot incluye Tomcat embebido:
- ✅ No necesitas instalar Tomcat por separado
- ✅ Todo está en el JAR (aplicación autocontenida)
- ✅ Más fácil de desplegar y mantener
- ✅ Configuración más simple
- ✅ Producción-ready
Si necesitaras Tomcat externo:
- Cambiar empaquetado a WAR en
pom.xml - Extender
SpringBootServletInitializer - Desplegar WAR en servidor Tomcat
- Configurar Tomcat para escuchar en 0.0.0.0
Para este proyecto, Tomcat embebido es suficiente y recomendado.
# Iniciar servidor
cd C:\ruta\al\proyecto\javainge
java -jar target\venta-boletos-1.0.0.jar
# Obtener IP
ipconfig
# Detener servidor
Ctrl + C# Iniciar servidor
cd ~/ruta/al/proyecto/javainge
java -jar target/venta-boletos-1.0.0.jar
# Obtener IP
ipconfig getifaddr en0
# Detener servidor
Ctrl + C o pkill -f venta-boletos# Iniciar servidor
cd ~/Downloads/javainge
java -jar target/venta-boletos-1.0.0.jar
# Obtener IP
hostname -I | awk '{print $1}'
# Detener servidor
Ctrl + C o pkill -f venta-boletos| Acción | Windows | macOS | Linux |
|---|---|---|---|
| Navegar al proyecto | cd C:\ruta\javainge |
cd ~/ruta/javainge |
cd ~/Downloads/javainge |
| Iniciar servidor | java -jar target\venta-boletos-1.0.0.jar |
java -jar target/venta-boletos-1.0.0.jar |
java -jar target/venta-boletos-1.0.0.jar |
| Detener servidor | Ctrl + C |
Ctrl + C o pkill -f venta-boletos |
Ctrl + C o pkill -f venta-boletos |
| Ver IP local | ipconfig |
ipconfig getifaddr en0 |
hostname -I |
| Ver puerto activo | netstat -an | findstr :8080 |
lsof -i :8080 |
ss -tlnp | grep 8080 |
| Firewall abrir puerto | GUI (ver arriba) | sudo ufw allow 8080/tcp (si usa ufw) |
sudo firewall-cmd --add-port=8080/tcp --permanent |
| Ejecutar en background | No recomendado | nohup java -jar target/venta-boletos-1.0.0.jar & |
nohup java -jar target/venta-boletos-1.0.0.jar & |
| Crear servicio | No aplica | No aplica | sudo systemctl enable venta-boletos |
- README.md - Información general
- INSTALL.md - Instalación multiplataforma
- TESTING.md - Guía de pruebas
- CHANGES.md - Registro de cambios
Configurado para: Red Local (LAN)
Tomcat: Embebido en Spring Boot ✅
Puerto: 8080
IP del Servidor: 192.168.100.98
Última actualización: 10 de Marzo, 2026