Как можно сделать Flask-приложение доступным для пользователей за пределами локальной сети?

На данный момент имеется возможность доступа к сайту только через подключение к локальной сети, так как внешний доступ не осуществляется. Вот несколько уточняющих данных: 
- Имеется белый IP-адрес.
- Порт 80 открыт как на компьютере, с которого запускается Flask-приложение, так и на роутере.
- Исходный код приложения рабочий.

Вот код приложения:

<pre><code class="python">from flask import Flask, render_template, jsonify
import psutil

app = Flask(__name__, static_folder="front", template_folder="front")

@app.route("/")
def index():
    return render_template("index.html")

@app.route("/cpu_percent", methods=["GET"])
def cpu_percent():
    return jsonify(cpu_percent=psutil.cpu_percent(interval=1))

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=80)</code></pre>

Также приведу список открытых портов:
  • 13 декабря 2024 г. 21:23
Ответы на вопрос 1
Чтобы сделать ваше Flask-приложение доступным для пользователей за пределами локальной сети, вам нужно выполнить несколько шагов. Учитывая, что у вас уже есть белый IP-адрес и порт 80 открыт, вот подробная инструкция:

1. **Проверка IP-адреса**:
   Убедитесь, что ваш белый IP-адрес действительно доступен извне. Вы можете использовать сайты, такие как [https://www.whatismyip.com/](https://www.whatismyip.com/), чтобы проверить ваш внешний IP-адрес.

2. **Настройка Flask-приложения**:
   В вашем коде Flask-приложение запускается на `0.0.0.0`, что позволяет ему принимать соединения с любого IP-адреса. Это хорошо, и тут ничего менять не нужно.

3. **Переход к маршрутизатору (роутеру)**:
   Вам нужно настроить переадресацию портов (port forwarding) на вашем роутере. Вот как это сделать:
   - Войдите в настройки вашего роутера (обычно через веб-интерфейс по IP-адресу, который может быть `192.168.0.1`, `192.168.1.1` или другой, указанный в документации роутера).
   - Найдите раздел, отвечающий за переадресацию портов (обычно это "Port Forwarding" или "NAT").
   - Создайте новое правило, переадресовывающее внешний порт 80 на внутренний IP вашего компьютера (обычно что-то вроде `192.168.0.x`, вы можете узнать его, используя команду `ipconfig` в Windows или `ifconfig` в Linux).
   - Убедитесь, что указали правильный протокол (TCP) для переадресации.

4. **Проверка доступности**:
   После настройки роутера запустите ваше Flask-приложение и попробуйте получить доступ к его URL-адресу из внешней сети через веб-браузер. Например, если ваш внешний IP-адрес `203.0.113.10`, попробуйте открыть `http://203.0.113.10`.

5. **Безопасность**:
   Имейте в виду, что открытие вашего сервера для внешнего доступе может сделать его уязвимым. Убедитесь, что ваше приложение защищено и используйте такие инструменты, как `HTTPS`, для шифрования трафика. Можно использовать Nginx или Apache для этого.

6. **Проверка брандмауэра**:
   Убедитесь, что настройки брандмауэра (если он у вас есть) на вашем компьютере также позволяют входящие соединения на 80 порт.

Если вы выполните все эти шаги, ваше Flask-приложение должно стать доступным для пользователей за пределами вашей локальной сети.
Похожие вопросы