Перейти к содержанию

Локальный запуск (Localhost) vs Публичный туннель (Tunnel)

В проекте поддерживается два режима запуска веб-сервера FastAPI: локальный облегченный сервер (для разработки и тестирования) и публичный сервер с туннелем (для внешнего доступа).

Ниже приведены ключевые отличия и особенности работы в каждом режиме.


📊 Таблица сравнения

Характеристика Локальный режим (Localhost) Режим туннеля (Cloudflare/Ngrock)
Скрипт запуска Run-LightServer.ps1 run.ps1 (вызывает Run-Cloudflared.ps1 / Run-Engrock.ps1)
Хост 127.0.0.1 0.0.0.0
Порт 3000 3000
Протокол HTTP (без шифрования) HTTPS (с шифрованием)
Количество воркеров 1 (один рабочий процесс) 4 (многопроцессорный режим)
Авторизация Автоматическая (user_id = 1) Google OAuth / Telegram / Пароль
Зависимость от сети Полностью локальный (офлайн) Требует интернет-соединение и токены

🛠️ Особенности локального режима (Localhost)

1. Отсутствие HTTPS / SSL

  • Запуск происходит по протоколу http://127.0.0.1:3000.
  • Отключены SSL-сертификаты. Это предотвращает ошибки протокола (ERR_EMPTY_RESPONSE) при локальной отладке и избавляет от предупреждений браузера о небезопасном подключении.

2. Отключение Google OAuth

  • В локальном режиме авторизация через Google OAuth не требуется.
  • Внедрен специальный auto_login_local_user middleware, который перехватывает запросы с адресов 127.0.0.1 и localhost. Если сессионная кука auth_token отсутствует, сервер автоматически генерирует JWT-токен и авторизует вас под пользователем с ID = 1.

3. Один рабочий процесс (Single worker)

  • Сервер запускается с флагом --workers 1.
  • Это упрощает отладку, так как все логи пишутся в один поток, нет конфликтов при перезапуске кода, а точки останова (breakpoints) работают предсказуемо.

🚀 Особенности режима туннеля (Tunnel / Production)

1. Полная защита HTTPS

  • Все соединения шифруются, трафик идет через домен (например, https://kino.davidka.net).
  • Для работы требуются SSL-сертификаты и провайдеры туннелей.

2. Строгая авторизация

  • Каждый пользователь должен войти через Google OAuth или привязанный Telegram-аккаунт.
  • Анонимный доступ запрещен.

3. Масштабируемость (Multi-worker)

  • Запуск с несколькими воркерами (по умолчанию 4) для параллельной обработки запросов и WebSocket-соединений.