Открыть Flask dev сервер для LAN (host 0.0.0.0 и firewall)
Запустите Flask с host=0.0.0.0, откройте порт 5000 в брандмауэре и настройте переменные окружения или Docker. Доступ через <IP>:5000 с любого устройства в сети.
Как сделать сервер разработки Flask доступным с других машин в сети?
Сейчас, когда я запускаю приложение в режиме разработки, оно открывается только по адресу http://localhost:5000, поэтому с другого устройства я к нему не могу подключиться. Хочу обращаться к нему по http://[ip‑устройства]:5000. Какие настройки или параметры командной строки нужно задать, чтобы включить сетевой доступ?
The Flask dev server binds to 127.0.0.1 by default, so it only listens on the local machine. To expose it on your network, just tell Flask to listen on all interfaces and ensure the firewall allows traffic on the port you pick.
Contents
- Run Flask with host=0.0.0.0
- Command‑line options for
flask run - Using environment variables
- Opening the port in firewalls
- Running inside Docker
- Security considerations
- Conclusion
- Sources
Запуск Flask с host=0.0.0.0
Самый простой способ сделать разработческий сервер доступным с других машин – привязать его к 0.0.0.0, что говорит ОС принимать подключения на любом сетевом интерфейсе.
# app.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello from the dev server!"
if __name__ == "__main__":
# Listen on all interfaces, port 5000
app.run(host="0.0.0.0", port=5000, debug=True)
Запустив python app.py, вы увидите:
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
Другие устройства в той же локальной сети могут подключиться, открыв http://<dev‑host‑ip>:5000.
Параметры командной строки
Если предпочитаете использовать CLI flask, просто передайте тот же аргумент:
# Сначала активируйте окружение
export FLASK_APP=app.py
flask run --host=0.0.0.0 --port=5000
По официальной документации Flask, добавление
--host=0.0.0.0делает сервер видимым в сети.
Flask Quickstart
Использование переменных окружения
Можно избежать правки кода или командной строки, установив переменные окружения:
| Переменная | Значение | Пример |
|---|---|---|
FLASK_RUN_HOST |
Хост для привязки | export FLASK_RUN_HOST=0.0.0.0 |
FLASK_RUN_PORT |
Порт прослушивания | export FLASK_RUN_PORT=5000 |
export FLASK_APP=app.py
export FLASK_RUN_HOST=0.0.0.0
export FLASK_RUN_PORT=5000
flask run
Такой подход удобен для CI/CD пайплайнов или Dockerfile.
Stack Overflow discussion
Открытие порта в файрволах
Даже если Flask слушает 0.0.0.0, ОС‑файрвол может всё равно блокировать входящий трафик.
Linux (UFW)
sudo ufw allow 5000/tcp
sudo ufw reload
Windows
- Откройте Windows Defender Firewall with Advanced Security.
- Создайте новое Inbound Rule → Port → TCP → Specific local ports:
5000. - Разрешите соединение для всех профилей.
После открытия порта проверьте связь, пинганием IP сервера с другого устройства и открытием
http://<dev‑host‑ip>:5000.
Ask Ubuntu guide
Запуск внутри Docker
Когда приложение Flask работает в контейнере, нужно сопоставить порт контейнера с хостом:
# Dockerfile
FROM python:3.12-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
EXPOSE 5000
CMD ["flask", "run", "--host=0.0.0.0", "--port=5000"]
docker build -t flask-dev .
docker run --rm -p 5000:5000 flask-dev
Теперь любой узел, который может достичь хоста по порту 5000, увидит Flask‑приложение.
Модуль сети Docker использует
0.0.0.0внутри контейнера для экспонирования сервисов.
Reddit discussion on Docker
Проблемы безопасности
Разработческий сервер Flask не предназначен для продакшена.
- Оставляйте
debug=Trueтолько в доверенных сетях. - При публичном развертывании лучше использовать легковесный продакшн‑сервер (Gunicorn, uWSGI) за обратным прокси.
Расширение доступности dev‑сервера может привести к случайным утечкам данных или атакам отказа в обслуживании.
Sentry guidance on dev server visibility
Вывод
- Привяжите Flask к всем интерфейсам, используя
host="0.0.0.0"вapp.run()илиflask run --host=0.0.0.0. - Убедитесь, что файрвол пропускает трафик на выбранный порт (по умолчанию 5000).
- При работе в Docker сопоставьте порт контейнера с хостом.
- Помните, что dev‑сервер подходит только для локальных или доверенных сетей; для публичного доступа переключитесь на продакшн‑сервер.
Следуя этим шагам, вы сможете открыть свой Flask‑приложение с любого устройства в той же локальной сети через http://<dev‑host‑ip>:5000.
Источники
- Configure Flask dev server to be visible across the network – Stack Overflow
- Flask Quickstart – Official Documentation
- What does app.run(host=‘0.0.0.0’) mean in Flask – Stack Overflow
- Explain command —-flask run — host=0.0.0.0 – Medium
- How to allow remote connections to Flask? – Ask Ubuntu
- Docker and host 0.0.0.0 in Flask – Reddit
- Sentry: Configure Flask Dev Server to be Visible Across the Network