Локальный запуск (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_usermiddleware, который перехватывает запросы с адресов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-соединений.