Существует множество различных способов запуска Telegram Mini Apps, но я для себя выделил несколько наиболее удобных и простых методов.
Ngrok — это мощная утилита для создания защищённых туннелей, которая позволяет преобразовать локальный URL, такой как http://localhost
, в публичный HTTPS-адрес. Этот инструмент особенно полезен для разработчиков, которым нужно протестировать веб-приложения или интеграции с внешними сервисами, такими как Telegram-боты, прямо с их локальной машины.
Чтобы использовать Ngrok, сначала необходимо запустить ваше приложение на локальном сервере, например, по адресу http://localhost:3000
. После этого вы можете запустить Ngrok с помощью команды:
ngrok http 3000
Ngrok создаст временный публичный HTTPS-адрес, который будет проксировать запросы к вашему локальному серверу. Этот адрес можно использовать, например, для тестирования Telegram Mini Apps или других сервисов, требующих HTTPS-ссылки.
Ngrok не только упрощает доступ к локально запущенным приложениям из интернета, но и предоставляет дополнительные функции, такие как просмотр и анализ трафика, управление аутентификацией и настройка постоянных доменов для более долгосрочного использования.
Этот инструмент широко используется в разработке и тестировании, когда нет необходимости или возможности развернуть приложение на удалённом сервере, но требуется взаимодействие с внешними системами или пользователями через интернет.
Порты в Visual Studio Code
Второй способ запуска Telegram Mini Apps, который я считаю удобным, — это использование встроенного инструмента управления портами в Visual Studio Code (VSCode). Этот метод позволяет легко и быстро открывать доступ к локальному приложению для внешних сервисов, включая Telegram.
Открытие порта в VSCode:
Начните с запуска вашего приложения в локальной среде разработки. Затем откройте терминал в VSCode и перейдите на вкладку "Порты" (Ports). В этой вкладке можно увидеть все порты, которые используются в вашем проекте.-
Настройка порта:
Найдите порт, на котором работает ваше приложение (например, порт 3000). Чтобы сделать его доступным извне, измените его состояние с "Приватный" на "Публичный". Это позволит создать публичный URL для доступа к вашему приложению через интернет. Использование полученного URL:
После изменения состояния порта вы сможете скопировать сгенерированный URL и использовать его для открытия вашего приложения в Telegram в формате Mini App. Это простой и быстрый способ интеграции локально разрабатываемых приложений с Telegram, без необходимости устанавливать дополнительные инструменты.
Использование страницы переадресации
Ещё один удобный способ запуска Telegram Mini Apps — использование HTTPS-страницы с переадресацией на ваше локальное HTTP-приложение. Этот метод позволяет обходить ограничения на использование небезопасных (HTTP) адресов, сохраняя при этом простоту настройки.
-
Получение IP-адреса:
Для начала, вам нужно узнать IP-адрес вашей машины в локальной сети. Это можно сделать, открыв командную строку и введя команду:ipconfig
Полученный IP-адрес будет использоваться для создания редиректа.
-
Создание страницы редиректа:
Следующим шагом создайте простую HTML-страницу, которая автоматически перенаправит пользователей на ваш локальный сервер. Пример такой страницы:<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8" /> <meta http-equiv="refresh" content="0; url=http://192.168.1.212:3000" /> <title>Redirecting...</title> </head> <body> <p> Если вы не были перенаправлены автоматически, <a href="http://192.168.1.212:3000">нажмите здесь</a>. </p> </body> </html>
Здесь
192.168.1.212:3000
— это пример локального адреса, который необходимо заменить на ваш действительный IP и порт. -
Запуск приложения с доступом по IP:
Для того чтобы ваше приложение могло открываться по IP-адресу, нужно запускать его с указанием параметра--host
. Например, если вы используете React, выполните следующую команду:npm run dev -- --host
Это гарантирует, что ваше приложение будет доступно по IP-адресу в локальной сети, что необходимо для корректной работы редиректа.
Хостинг страницы на HTTPS:
Теперь вам нужно разместить эту HTML-страницу на ресурсе, который поддерживает HTTPS. Одним из самых простых и популярных способов является использование GitHub Pages. Вы загружаете вашу страницу на GitHub, а затем указываете в Telegram-боте ссылку на эту страницу. Когда пользователь перейдёт по этой ссылке, произойдёт автоматический редирект на ваше локальное приложение.
Этот метод удобен тем, что вы можете быстро создать и разместить редирект на надёжной платформе, обеспечив при этом доступ к вашему приложению через защищённый канал. Это особенно полезно в случаях, когда прямой доступ через HTTP невозможен из-за ограничений безопасности.
Режим разработчика Telegram
Ещё один способ запуска Telegram Mini Apps — использование режима разработчика в Telegram. Этот метод, хотя и не идеально стабильный, может быть крайне удобным, если у вас есть возможность его использовать.
Стоит отметить, что этот способ работает корректно только на устройствах с iOS, и его поведение может быть непредсказуемым. Однако, если вам удастся его настроить, вы сможете запускать Mini Apps и открывать HTTP-ссылки прямо в боте, без необходимости дополнительных настроек для обеспечения безопасности (HTTPS).
Как включить режим разработчика:
Для того чтобы активировать режим разработчика, вам потребуется следовать инструкциям, представленным в официальной документации Telegram. После активации этого режима, бот, работающий в нём, сможет открывать HTTP-ссылки, что значительно упрощает процесс тестирования и разработки ваших Mini Apps.
Несмотря на ограничения и нестабильность этого метода, он остаётся привлекательным вариантом для разработчиков, работающих на iPhone, которые хотят быстро и без лишних сложностей проверять свои проекты.
Использование локальных серверов через localhost.run
Ещё один удобный метод для запуска Telegram Mini Apps — использование сервиса localhost.run
. Этот сервис позволяет быстро и просто сделать ваш локальный сервер доступным в интернете без необходимости установки дополнительного программного обеспечения.
Запуск приложения на локальном сервере:
Для начала запустите ваше приложение на локальном сервере, например, по адресуhttp://localhost:3000
.-
Использование
localhost.run
для туннелирования:
Откройте терминал и выполните следующую команду:ssh -R 80:localhost:3000 localhost.run
Эта команда создаст туннель через
localhost.run
, предоставив вам временный публичный URL, который будет перенаправлять трафик на ваш локальный сервер. Использование полученного URL:
После выполнения команды, в терминале будет отображён публичный URL, который можно использовать для доступа к вашему приложению через интернет. Этот URL также можно использовать для открытия вашего приложения в Telegram Mini App.
Этот метод похож на использование Ngrok, но имеет свои преимущества в виде простоты и отсутствия необходимости в предварительной настройке. Он особенно полезен для быстрого и временного доступа к вашему приложению.
Использование облачных платформ
Если вам нужно быстро развернуть и протестировать ваше приложение в реальном облачном окружении, вы можете использовать облачные платформы, такие как Heroku, Vercel или Netlify. Эти сервисы позволяют вам развернуть ваше приложение в несколько шагов и предоставляют автоматическое масштабирование и управление инфраструктурой.
-
Heroku:
Для развертывания приложения на Heroku выполните следующие шаги:Установите Heroku CLI и войдите в аккаунт.
Создайте новое приложение командой
heroku create
.Разверните ваше приложение командой
git push heroku main
.
Vercel:
Vercel особенно хорошо подходит для развертывания фронтенд-приложений. После авторизации в Vercel вы можете подключить репозиторий вашего проекта, и он автоматически развернёт ваше приложение.Netlify:
Похожий на Vercel, Netlify позволяет легко развернуть статические и динамические сайты, предоставляя простой в использовании интерфейс и автоматическое управление CI/CD.
Эти платформы подходят для быстрого и удобного развертывания приложений с минимальной настройкой, что делает их отличным выбором для тестирования и демонстрации Telegram Mini Apps.
Заключение
Каждый из описанных способов запуска Telegram Mini Apps имеет свои преимущества и особенности, и выбор подходящего метода зависит от ваших конкретных потребностей и условий. Использование Ngrok, портов в Visual Studio Code, страницы переадресации или режима разработчика Telegram позволяет разработчикам адаптироваться к разным сценариям и тестировать свои приложения наиболее удобным образом.
Ngrok предоставляет быстрый доступ к локальному серверу через HTTPS, что идеально для тестирования и интеграции с внешними сервисами. Порты в VSCode — простой способ открыть доступ к вашему приложению без необходимости установки дополнительного ПО. Страница переадресации — это элегантное решение для обхода ограничений на HTTP-ссылки, а режим разработчика Telegram позволяет использовать HTTP-ссылки прямо в ботах, хотя и с некоторыми ограничениями.
В зависимости от ваших нужд и инструментов, которые вы используете, вы можете выбрать один из этих методов или комбинировать их для достижения наилучшего результата. В конечном счёте, ключ к успешному запуску Telegram Mini Apps — это гибкость и умение адаптироваться к разным условиям, что позволит вам эффективно тестировать и разрабатывать ваши проекты.
kubk
В статье не описано, что ngrok даёт бесплатно 1 стабильный URL: https://docs.telegram-mini-apps.com/platform/getting-app-link#ngrok (c ограничением 20000 запросов в месяц)
Это важно, потому что при разработке вы не будете каждый раз генерировать новый URL и идти менять его в настройках BotFather
Tazer16179 Автор
Да, согласен с вами, спасибо за уточнение.
TakoiNickNameUgeZanyat
Тоже использовал ngrok при разработке мини апы, но лимит исчерпался за 2 дня, он всегда был 20000?
kubk
Если у вас вдруг используется Vite, то он в дев режиме для каждого модуля делает отдельный файл, соответственно HTTP запрос. Это нужно для HMR и увеличения скорости за счёт того что браузер нативно поддерживает модули. C ngrok это приводит к быстрому исчерпанию лимитов. Если у вас действительно в этом причина, то думаю можно отключить минификацию если запуск через Ngrok (например если проверять переменную окружения в конфиге): https://vitejs.dev/config/build-options#build-minify