Puerto 5000 en uso en Mac: AirPlay, Flask y cómo liberarlo
El puerto 5000 lo usan el Receptor de AirPlay de macOS y el servidor de desarrollo de Flask. Esto es por qué chocan, si es seguro cerrarlo y cómo liberarlo.
El puerto 5000 es el conflicto clásico de macOS. Inicias una aplicación de Flask, falla porque el puerto ya está ocupado y juras que no iniciaste nada. En macOS moderno, no lo hiciste: es el propio sistema el que lo está usando.
Qué suele escuchar en el puerto 5000
- Receptor de AirPlay (macOS Monterey y posteriores): El Receptor de AirPlay de Apple, parte del proceso
ControlCenter, usa el puerto 5000 (y el 7000) para que tu Mac pueda recibir transmisiones de AirPlay. Viene activado por defecto. - Flask: El servidor de desarrollo de Flask usa el 5000 por defecto, que es justo por lo que el conflicto es tan común.
- Rails antiguo y otras herramientas de desarrollo: Algunos frameworks también usan este puerto por defecto.
Así que un error de “puerto 5000 en uso” en una Mac suele ser AirPlay, no un servidor olvidado.
¿Es seguro terminarlo?
Depende de qué lo use. Si lsof muestra ControlCenter, eso es el Receptor de AirPlay, un proceso del sistema que no deberías forzar a cerrar. Desactiva la función en su lugar:
Ajustes del Sistema > General > AirDrop y Handoff > Receptor de AirPlay (desactívalo).
Eso libera el puerto 5000 en todo el sistema. Si lsof muestra tu propio proceso python o de Flask, terminarlo es perfectamente seguro.
¿Es sospechoso?
No. En macOS, el 5000 en uso casi siempre es el Receptor de AirPlay haciendo su trabajo. El único problema real es el choque con los servidores de desarrollo. Confirma el dueño antes de hacer cualquier cosa; el comando de abajo lo muestra.
Cómo encontrar y liberar el puerto 5000 en macOS
lsof -i :5000
Si es tu propio servidor de desarrollo:
kill -9 $(lsof -ti :5000)
Si es el Receptor de AirPlay, desactívalo en los ajustes en vez de terminar el proceso, o simplemente corre Flask en otro puerto:
flask run --port 5001
Para un recorrido más a fondo del caso del servidor de desarrollo, lee Puerto 5000 en uso en Mac. Portie hace que la pregunta de AirPlay contra tu servidor sea instantánea: muestra el puerto 5000 con la aplicación exacta que lo usa, así sabes de inmediato si debes desactivar AirPlay o terminar un proceso de Flask perdido.