Ngrok — это сервис, который позволяет сделать локальный порт доступным из интернета без настройки NAT, роутера, DDNS и других протоколов. Программа создает туннель между вашим компьютером и удалённым сервером и предоставляет доступ к нему с уникального домена. Достаточно только зарегистрироваться на сайте сервиса, установить программу на компьютер и запустить команду создания туннеля.
Конечно, такой способ не подойдёт если вам нужно чтобы ваш сервис был доступен постоянно, но показать как работает ваш локальный сайт или потестировать работу Callback API довольно удобно. В этой статье мы рассмотрим как пользоваться Ngrok, а также как установить Ngrok в Ubuntu.
Установка Ngrok в Linux
Если вы пользуетесь Ubuntu или другим дистрибутивом, в котором установлен менеджер пакетов snap, вы можете использовать его для установки Ngrok. Просто выполните команду:
snap install ngrok
Кроме того, в Ubuntu и других дистрибутивах, основанных на Debian можно установить пакет из репозиториев разработчиков. Для этого сначала добавьте ключ в систему:
Как ЛЕГКО поиграть с другом по сети, через ngrok (Без Radmin vpn, Hamachi, Aternos)
curl -s https://ngrok-agent.s3.amazonaws.com/ngrok.asc | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null
Затем добавьте сам репозиторий:
echo «deb https://ngrok-agent.s3.amazonaws.com buster main» | sudo tee /etc/apt/sources.list.d/ngrok.list
Обновите список пакетов для того чтобы получить данные из только что добавленного репозитория:
sudo apt update
И установите Ngrok:
sudo apt install ngrok
Для любого другого дистрибутива необходимо скачать бинарные файлы из официального сайта. Откройте эту страницу, выберите Linux и нажмите кнопку Download.
Загруженный архив необходимо распаковать. Там находится только исполняемый файл Ngrok, поэтому его можно сразу же поместить в каталог /usr/local/bin используя такую команду:
sudo tar xvzf ~/Downloads/ngrok-v3-stable-linux-amd64.tgz -C /usr/local/bin
Для того чтобы убедится что программа установлена успешно, вы можете посмотреть её версию:
Синтаксис и опции Ngrok
Давайте сначала рассмотрим синтаксис и опции утилиты командной строки, которая будет использоваться для управления программой. Синтаксис довольно простой:
$ ngrok команда опции
Вот основные команды, которые вы можете использовать:
- completion — сгенерировать скрипт автодополнения для bash или zsh;
- config add-authtoken — сохранить токен аутентификации в конфигурационный файл;
- config check — проверить конфигурационный файл на ошибки;
- config edit — редактировать конфигурационный файл;
- http — создание HTTP туннеля;
- tcp — создание TCP туннеля;
- start — запуск туннелей, настроенных в конфигурационном файле;
- service install — установить конфигурационные файлы сервисов в систему;
- service start — запустить сервис;
- service stop — остановить сервис;
- update — пробросаобновить утилиту до последней версии;
- version — показать версию утилиты.
У большинства команд есть свои опции и мы рассмотрим их в разделе о том как пользоваться Ngrok.
MINECRAFT ПО СЕТИ БЕЗ HAMACHI И ОТКРЫТИЯ ПОРТОВ — ЧЕРЕЗ NGROK
Как пользоваться Ngrok
1. Регистрация аккаунта
Сервис имеет бесплатную версию для не коммерческого использования. Она поддерживает всё необходимое для того чтобы сделать локальный порт доступным из интернета. Для того чтобы зарегистрировать аккаунт откройте официальный сайт и нажмите кнопку Sign Up. На этой странице надо указать ваше имя, адрес электронной почты и пароль:
После регистрации вам придёт письмо с подтверждением на почту, необходимо перейти по ссылке из письма. После входа в аккаунт откроется панель управления где можно скачать клиент, если вы не сделали это ранее или посмотреть команды для его настройки:
2. Подключение аккаунта
Для того чтобы установленный клиент заработал необходимо указать ключ авторизации. Этот ключ можно найти внизу страницы Setup пользователь:пароль» 80
После этого для доступа к сайту необходимо будет ввести пароль. Если для вашего локального сайта необходимо указать Host, то это можно сделать с помощью опции —host-header. Например, для замены домена на example.local используйте такую команду:
ngrok http —host-header=»example.local» 80
По умолчанию сервис будет доступен извне по HTTPS. Если вы хотите чтобы он был доступен только по HTTP используйте опцию —scheme. Например:
ngrok http —scheme=»http» 80
Если вы хотите сделать доступным порт на другой машине, укажите её IP адрес вместе с портом. Например, для 192.168.1.143:
ngrok http 192.168.1.143:80
4. Веб-интерфейс Ngrok
После того как клиент Ngrok был запущен, вы можете открыть веб интерфейс, который доступен по адресу http://127.0.0.1:4040. Здесь доступна история запросов, в которой можно увидеть какие данные пришли и что было отправлено в ответ:
Здесь есть как заголовки так и тело запроса и ответа. С помощью кнопки Replay можно переотправить запрос. Также можно модифицировать его перед отправкой. Для этого выберите Replay with Modifications:
В открывшемся модальном окне можно изменить метод, путь, передаваемые заголовки, добавлять новые заголовки и менять тело запроса.
5. Настройка туннелей в конфигурационном файле
Ngrok имеет конфигурационный файл, в который сохраняется токен авторизации. Если вы не хотите каждый раз писать длинную команду запуска туннеля, вы можете описать его в конфигурационном файле, а потом запускать по имени. Ngrok хранит конфигурацию в формате Yaml в домашней папке в папке .config. Но не нужно редактировать файл напрямую. Для редактирования существует команда config edit:
ngrok config edit
Для описания туннелей необходимо добавить в конфигурационный файл секцию tunnels. Синтаксис описания туннеля такой:
tunnels: имя_туннеля: proto: протокол addr: порт
Здесь также доступны и другие параметры, которые раньше передавались в командной строке:
- basic_auth — добавить HTTP авторизацию;
- host_header — заменить значение заголовка Host;
- inspect — нужно ли сохранять запросы для инспектирования, по умолчанию включено;
- schemes — доступные схемы: http и/или https;
- hostname — указать своё доменное имя для сервиса, доступно только в платной подписке.
Например, для того чтобы создать туннель example для порта 80, с заменой заголовка Host на example.local добавьте в секцию tunnels такие строки:
example: proto: http addr: 80 host_header: «example.local»
Сохраните изменения и проверьте конфигурационный файл такой командой:
ngrok config check
Если всё хорошо и в конфигурационном файле нет ошибок команда выведет такое сообщение:
После этого вы можете запустить настроенный туннель по его имени:
ngrok start example
На этом настройка Ngrok завершена.
Выводы
Теперь вы знаете как пользоваться Ngrok для создания туннелей и проброса локального порта в интернет. В бесплатной версии этот сервис может использоваться только для не длительного проброса локальных сервисов. Например, для разработки или для того чтобы показать как выглядит локальный сайт кому-то.
По умолчанию при каждом подключении выдается динамический домен, который каждый раз меняется. Для того чтобы задать свой домен, а также запустить Ngrok в фоне в качестве systemd сервиса необходимо покупать подписку. Какими сервисами пользуетесь вы для того чтобы сделать локальные службы доступными из интернета? Напишите в комментариях!
Похожие записи
Оцените статью
(1 оценок, среднее: 5,00 из 5)
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .
Об авторе
Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.
Источник: losst.pro
Как я на Колабе в Minecraft играл
Google Colab – это бесплатный облачный сервис, позволяющий запускать Jupiter Notebook. Обычно его используют для машинного обучения, но в этой статье я буду запускать на нём сервер Minecraft.
Итак, приступим
В первую очередь хотелось бы отметить, что Colab, как и Jupiter Notebook, позволяет исполнять команды Linux, если поставить перед ней восклицательный знак(!).
Первым делом я решил узнать версию Linux:
lsb_release -a
Вывод был таким:
No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04.3 LTS Release: 18.04 Codename: bionic
Следующим шагом устанавливаем Java:
!apt-get update apt-get upgrade !apt-get install default-jdk
После этого мы можем приступить к установке ядра сервера, я выбрал Spigot:
Хочу сказать что если Вам нужно использовать команду cd, то необходимо использовать оператор для последовательного выполнения команд.
Скачивание BuildTools и сборка ядра:
!mkdir build cd build wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar java -jar BuildTools.jar
. Success! Everything completed successfully. Copying final .jar files now. Copying spigot-1.15.2-R0.1-SNAPSHOT.jar to /content/build/./spigot-1.15.2.jar — Saved as ./spigot-1.15.2.jar
Копируем ядро в отдельную папку:
!mkdir server cp build/spigot-1.15.2.jar server/spigot.jar
Запускаем сервер:
!cd server java -jar spigot.jar
После первого запуска сервер остановится и попросит согласиться с EULA в файле eula.txt, меняем строчку eula=false на eula=true
!cd server/ sed -i ‘s/.*eula=false.*/eula=true/’ eula.txt
Чтобы на наш сервер можно было зайти, заходим в файл server.properties и меняем в нём строчку online-mode=true на online-mode=false.
!cd server/ sed -i ‘s/.*online-mode=true.*/online-mode=false/’ server.properties
Получение доступа к серверу из сети:
К сожалению, наша «виртуальная машина» имеет серый IP, в этом мы можем убедиться выполнив команды:
!apt-get install net-tools
!ifconfig
Для решения этой проблемы я решил использовать ngrok
Скачиваем и распаковываем клиент:
!wget -q -c -nc https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip unzip -qq -n ngrok-stable-linux-amd64.zip
Переходим в панель управления dashboard.ngrok.com/status и копируем токен
После этого открываем тоннель:
print(«Token from https://dashboard.ngrok.com/auth») import getpass authtoken = getpass.getpass() get_ipython().system_raw(‘./ngrok authtoken $authtoken ./ngrok tcp 25565 import sys, json; print(json.load(sys.stdin)[‘tunnels’][0][‘public_url’])»
Запускаем сервер:
!cd server java -jar spigot.jar
Ждём, пока сервер не выдаст что запуск сервера завершён:
[12:00:00] [Server thread/INFO]: Done (63.279s)! For help, type «help»
Вводим в клиент Minecraft адрес(без tcp://) и заходим на сервер.
Тестирование
Я тестировал сервер взрывами TNT, что позволило сильно нагрузить сервер.
Сервер начинает лагать при взрыве более 10000 блоков динамита, TPS падает до 10 и ниже, что неудовлетворительно.
Однако для игры с друзьями мощностей Колаба хватит.
P.S.
Хотелось бы отметить, что наши данные исчезнут через 12 часов, поэтому лучше сохранить их заранее или держать данные сервера на примонтированом Google Drive.
- minecraft server
- minecraft хостинг
- google colaboratory
- ngrok
- настройка сервера
- бесплатный хостинг
- Python
- Серверное администрирование
- Хостинг
Источник: habr.com
ngrok: перенаправление TCP на 25565 (сервер minecraft)
Когда я пытаюсь использовать ./ngrok tcp 25565 , регион переходит к региону по умолчанию (США) и перенаправляет порт (x.xxx.ngrok.io:xxxxx).
Итак, я изменил регион на ближайший к моей стране, то есть азию, поэтому я использовал команду ./ngrok tcp -region=ap 25565 . он запускает tcp в указанном регионе, но не перенаправляет порт (вместо x.xxx.ngrok.io:xxxxx я получаю x.xxx.ngrok.io:xx)
Я не знаю, есть ли 2-значный порт — это то же самое, что и 5-значный порт, но я использовал это на сервере minecraft, и единственным работающим ip был (x.xxx.ngrok.io:xxxxx).
Jai 14 Апр 2021 в 06:47
1 ответ
Лучший ответ
Одно предположение: ваше окно терминала имеет фиксированную ширину и отсекает номер порта.
В частности, когда вы включаете region , имя хоста становится на 3 символа длиннее обычного: x.tcp.xx.ngrok.io vs x.tcp.ngrok.io , что соответствует тому факту, что вы видите номер порта, который на 3 цифры короче, чем обычный.
Чтобы получить правильный адрес, у вас есть несколько вариантов:
- Проверить адрес существующего туннеля можно было бы для просмотра интерфейса веб-инспекции ngrok, который работает по адресу http://localhost:4040 .
- Проверьте веб-панель управления ngrok на наличие онлайн-туннелей здесь: https://dashboard.ngrok.com/endpoints/status .
Номера портов для TCP-адресов ngrok всегда 5-значные.
Источник: question-it.com