VK Tunnel
VK Tunnel — это утилита, которая позволит отобразить в интернете веб-сервер, работающий на вашем локальном компьютере.
Очень часто в веб-разработке требуется показать своё приложение другим пользователям. Если во время разработки вы пользуетесь локальным сервером, то показать промежуточные результаты на нём — нетривиальная задача. Ещё сложнее становится, когда вам нужно проверить взаимодействие приложения с внешними инструментами, например с VK Bridge, внутри мобильных приложений ВКонтакте.
После запуска VK Tunnel вы можете отслеживать в терминале информацию о состоянии и показателях соединений, установленных через ваш туннель.
NPM:
vk-tunnel
.
Использование
Вы можете настроить работу через VK Tunnel для любого сервера. Ниже мы приведём пример запуска при создании VK Mini Apps из шаблона. В иных случаях внимательно изучите используемые параметры и их значения.
Проект мини-приложения из шаблона
- 1.
Установите библиотеку:
Shellnpm install @vkontakte/vk-tunnel -g
- 2.
- 3.
Перейдите к папке проекта мини-приложения:
Shellcd <ПУТЬ_К_МИНИ_ПРИЛОЖЕНИЮ>
- 4.
В командной строке проекта запустите его:
Shellnpm start
- 5.
Откройте новую командную строку. Вызовите VK Tunnel:
- •
Через переменные окружения:
Shellcross-env NODE_TLS_REJECT_UNAUTHORIZED=0 PROXY_HTTP_PROTO=https PROXY_WS_PROTO=wss PROXY_HOST=0.0.0.0 PROXY_PORT=10888 vk-tunnel
- •
Через параметры:
Shellvk-tunnel --insecure=1 --http-protocol=https --ws-protocol=wss --host=0.0.0.0 --port=10888
- •
- 6.
Или добавьте в файл
package.json
скриптtunnel
, после чего сохраните файл:Shell"tunnel": "vk-tunnel --insecure=1 --http-protocol=https --ws-protocol=wss --host=0.0.0.0 --port=10888 app_id=8174360 endpoints=[web]"
И вызовите VK Tunnel:
Shellnpm run tunnel
- 7.
В командной строке будет предложено перейти по адресу в формате
https://oauth.vk.com/code_auth?stage=check&code=2a2aaaa
для авторизации. Откройте ссылку в браузере, вернитесь в терминал и нажмите Enter.После успешной авторизации в командной строке появится ссылка вида
https://user12345-jv7zlzzz.wormhole.vk-apps.com
.Укажите её в поле URL в Настройках для дальнейшей работы. Если приложение ещё не создано, воспользуйтесь разделом Регистрация мини-приложения ВКонтакте.
Проект мини-приложения на Node.js
- 1.
Установите библиотеку:
Shellnpm install @vkontakte/vk-tunnel -g
- 2.
Перейдите к папке проекта мини-приложения:
Shellcd <ПУТЬ_К_МИНИ_ПРИЛОЖЕНИЮ>
- 3.
Установите библиотеку
react-scripts
:Shellnpm i react-scripts
- 4.
Создайте папку
public
и переместите в неё файлindex.html
. - 5.
Создайте папку
src
и переместите в неё оставшиеся статические файлы.Обратите внимание! Каталог
src
должен иметь файлindex.js
.Структура каталога проекта мини-приложения:
. └── mini-app ├── public └── index.html ├── src ├── cactus.png ├── dinosaur.png ├── index.js └── style.css ├── package-lock.json ├── package.json └── README.md
- 6.
В командной строке проекта запустите его:
Shellenv PORT=10888 HTTPS=true react-scripts start
- 7.
Или добавьте в файл
package.json
скриптstart
, после чего сохраните файл:Shell"start": "cross-env PORT=10888 HTTPS=true react-scripts start",
И запустите проект:
Shellnpm start
- 8.
Откройте новую командную строку. Вызовите VK Tunnel:
- •
Через переменные окружения:
Shellenv NODE_TLS_REJECT_UNAUTHORIZED=0 PROXY_HTTP_PROTO=https PROXY_WS_PROTO=wss PROXY_HOST=0.0.0.0 PROXY_PORT=10888 vk-tunnel
- •
Через параметры:
Shellvk-tunnel --insecure=1 --http-protocol=https --ws-protocol=wss --host=0.0.0.0 --port=10888
- •
- 9.
Или добавьте в файл
package.json
скриптtunnel
, после чего сохраните файл:Shell"tunnel": "vk-tunnel --insecure=1 --http-protocol=https --ws-protocol=wss --host=0.0.0.0 --port=10888 app_id=8174360 endpoints=[web]"
И вызовите VK Tunnel:
Shellnpm run tunnel
- 10.
В командной строке будет предложено перейти по адресу в формате
https://oauth.vk.com/code_auth?stage=check&code=2a2aaaa
для авторизации. Откройте ссылку в браузере, вернитесь в терминал и нажмите Enter.После успешной авторизации в командной строке появится ссылка вида
https://user12345-jv7zlzzz.wormhole.vk-apps.com
.Укажите её в поле URL в Настройках для дальнейшей работы. Если приложение ещё не создано, воспользуйтесь разделом Регистрация мини-приложения ВКонтакте.
Переменные окружения и параметры
Вы можете настроить работу библиотеки при помощи переменных окружения или параметров.
NODE_TLS_REJECT_UNAUTHORIZED
Флаг, который позволяет пропустить проверку самоподписанных сертификатов. Возможные значения:
- •
0
— пропустить проверку; - •
1
— проверить сертификат.
Аналогом переменной окружения является параметр --insecure
. Возможные значения:
- •
0
— проверить сертификат; - •
1
— пропустить проверку.
PROXY_HTTP_PROTO
Схема для протокола HTTP. Возможные значения:
- •
http
— нешифрованное соединение (значение по умолчанию); - •
https
— шифрованное соединение.
Аналогом переменной окружения является параметр --http-protocol
. Возможные значения совпадают.
PROXY_WS_PROTO
Схема для WebSocket-протокола. Возможные значения:
- •
ws
— нешифрованное соединение (значение по умолчанию); - •
wss
— шифрованное соединение.
Аналогом переменной окружения является параметр --ws-protocol
. Возможные значения совпадают.
PROXY_HOST
Хост, на котором запущен проект. Значение по умолчанию: localhost
.
Аналогом переменной окружения является параметр --host
.
PROXY_PORT
Порт, на котором запущен ваш проект. Значение по умолчанию: 10888
.
Аналогом переменной окружения является параметр --port
.
PROXY_TIMEOUT
Тайм-аут запросов к вашему приложению. Значение по умолчанию: 5000
(5 секунд). Увеличьте тайм-аут, если мини-приложение получает ответ с ошибкой Bad gateway
и вы видите в логах сообщение Error: timeout of 5000ms exceeded
.
Аналогом переменной окружения является параметр --timeout
.
Файл vk-tunnel-config.json
Для удобства настройки утилиты в проекте мини-приложения создайте файл vk-tunnel-config.json
, в котором укажите идентификатор мини-приложения и платформы.
Пример файла:
{
"app_id": "8174360",
"endpoints": ["mobile", "mvk", "web"]
}
app_id
Идентификатор мини-приложения.
endpoints
Массив платформ, для которых нужно автоматически заменить адрес в Настройках. Возможные значения:
- •
mobile
— мобильное приложение; - •
mvk
— мобильная версия сайта; - •
web
— десктопная версия сайта.
Ошибки
Получаю ошибку Error: Пользователь не является создателем приложения
. Что делать?
Если при запуске утилиты вы видите ошибку ERROR: Пользователь не является создателем приложения
, обновите токен утилиты:
rm ~/.config/configstore/@vkontakte/vk-tunnel.json
Обратите внимание! Если ошибка сохраняется, убедитесь, что вас добавили в администраторы мини-приложения.
Получаю ошибку Error: connect ECONNREFUSED 127.0.0.1:10888
. Что делать?
Убедитесь, что вы запустили проект:
npm start