Created
January 15, 2025 15:44
-
-
Save kianurivzzz/d257a110b65d1f8bfa19dc514fe8a313 to your computer and use it in GitHub Desktop.
При разработке мини-приложения в Telegram нужен публичный HTTPS-доступ к локально-запущенному фронтенду. Эти скрипты автоматизируют создание безопасного туннеля с HTTPS при помощи Cloudflared и значительно ускоряют разработку. Файл с расширением .sh для Linux и macOS, а с .bat для Windows
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@echo off | |
setlocal EnableDelayedExpansion | |
:: Проверяем наличие cloudflared | |
where cloudflared >nul 2>nul | |
if %ERRORLEVEL% neq 0 ( | |
echo Error: cloudflared не установлен | |
echo Скачайте cloudflared с https://github.com/cloudflare/cloudflared/releases | |
exit /b 1 | |
) | |
echo 🚀 Запуск туннеля для Telegram Mini App... | |
:: Запускает туннель и сохраняет вывод | |
start /b cloudflared tunnel --url http://localhost:5173 > tunnel_url.txt 2>&1 | |
set TUNNEL_PID=%ERRORLEVEL% | |
echo ⏳ Ожидание создания туннеля... | |
:: Ожидает и ищет URL туннеля | |
set MAX_ATTEMPTS=30 | |
set ATTEMPT=1 | |
:WAIT_LOOP | |
if %ATTEMPT% gtr %MAX_ATTEMPTS% ( | |
echo ❌ Ошибка: Не удалось получить URL туннеля | |
taskkill /PID %TUNNEL_PID% /F >nul 2>&1 | |
del tunnel_url.txt | |
exit /b 1 | |
) | |
findstr "https://.*trycloudflare.com" tunnel_url.txt >nul | |
if %ERRORLEVEL% equ 0 ( | |
for /f "tokens=*" %%a in ('findstr /r "https://.*trycloudflare.com" tunnel_url.txt') do set TUNNEL_URL=%%a | |
goto :FOUND_URL | |
) | |
timeout /t 1 /nobreak >nul | |
set /a ATTEMPT+=1 | |
goto :WAIT_LOOP | |
:FOUND_URL | |
:: Очищает URL от лишних символов | |
set TUNNEL_URL=!TUNNEL_URL:*https=https! | |
for /f "tokens=1 delims= " %%a in ("!TUNNEL_URL!") do set TUNNEL_URL=%%a | |
del tunnel_url.txt | |
echo ✅ Туннель создан успешно! | |
echo 📱 URL для Telegram Mini App: !TUNNEL_URL! | |
:: Обновляет конфигурацию в .env | |
if exist ".env.development" ( | |
powershell -Command "(Get-Content .env.development) -replace 'VITE_TELEGRAM_WEBAPP_URL=.*', 'VITE_TELEGRAM_WEBAPP_URL=!TUNNEL_URL!' | Set-Content .env.development" | |
echo 📝 Обновлен .env.development | |
) | |
echo. | |
echo ℹ️ Используйте этот URL в BotFather для настройки webapp_url | |
echo ⚡️ Туннель активен и готов к разработке | |
echo 🛑 Нажмите Ctrl+C для завершения | |
:: Ожидаем Ctrl+C | |
:WAIT | |
timeout /t 1 /nobreak >nul | |
goto :WAIT |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Функция для получения URL туннеля | |
get_tunnel_url() { | |
local log_file=$1 | |
local max_attempts=30 | |
local attempt=1 | |
while [ $attempt -le $max_attempts ]; do | |
if grep -q "https://.*trycloudflare.com" "$log_file"; then | |
echo $(grep -m 1 "https://.*trycloudflare.com" "$log_file" | grep -o 'https://[^[:space:]]*') | |
return 0 | |
fi | |
sleep 1 | |
attempt=$((attempt + 1)) | |
done | |
return 1 | |
} | |
# Проверка установки на компухтере cloudflared | |
if ! command -v cloudflared &> /dev/null; then | |
echo "Error: cloudflared не установлен" | |
echo "Установите через brew: brew install cloudflared" | |
exit 1 | |
fi | |
echo "🚀 Запуск туннеля для Telegram Mini App..." | |
# Запуск туннеля, порт 5173 - стандартный порт Vite | |
cloudflared tunnel --url http://localhost:5173 > tunnel_url.txt 2>&1 & | |
TUNNEL_PID=$! | |
echo "⏳ Ожидание создания туннеля..." | |
# Получает URL туннеля | |
TUNNEL_URL=$(get_tunnel_url tunnel_url.txt) | |
if [ -z "$TUNNEL_URL" ]; then | |
echo "❌ Ошибка: Не удалось получить URL туннеля" | |
kill $TUNNEL_PID | |
rm tunnel_url.txt | |
exit 1 | |
fi | |
# Удаляет временный файл | |
rm tunnel_url.txt | |
echo "✅ Туннель создан успешно!" | |
echo "📱 URL для Telegram Mini App: $TUNNEL_URL" | |
# Обновляет переменную в .env | |
if [ -f ".env.development" ]; then | |
sed -i '' "s|VITE_TELEGRAM_WEBAPP_URL=.*|VITE_TELEGRAM_WEBAPP_URL=${TUNNEL_URL}|" .env.development | |
echo "📝 Обновлен .env.development" | |
fi | |
echo "" | |
echo "ℹ️ Используйте этот URL в BotFather для настройки webapp_url" | |
echo "⚡️ Туннель активен и готов к разработке" | |
echo "🛑 Нажмите Ctrl+C для завершения" | |
# Ожидает Ctrl+C | |
trap "echo '🔄 Завершение туннеля...'; kill $TUNNEL_PID" SIGINT SIGTERM | |
wait $TUNNEL_PID |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment