Внешний url для localhost сервера

Есть замечательная тулза под названием ngrok. Она позволяет привязать URL для вашего localhost сервера!

Например, вы запускаете тестовый сервер django у себя на компьютере:

  python manage.py runserver

и этот сервер будет доступен через внешний URL.

Для чего?

Как минимум есть такие задачи:

  • продемонстрировать проект заказчику
  • проверить интеграцию вашего сайта с платежной системой, которая отправляет уведомления. Например paypal, где для получения IPN сообщения нужен работающий URL, даже в sandbox

Как

  • Скачиваем ngrok отсюда
  • Распаковываем скаченный архив
  • Запускаем тестовый django сервер (по умолчанию это 8000 порт)
  • Запускаем ngrok:
    ./ngrok 8000
    
  • В коносле видим примерно следующее:
    ngrok
    
    Tunnel Status                 online
    Version                       1.6/1.6
    Forwarding                    http://51c85c8a.ngrok.com -> 127.0.0.1:8000
    Forwarding                    https://51c85c8a.ngrok.com -> 127.0.0.1:8000
    Web Interface                 127.0.0.1:4040
    # Conn                        0
    Avg Conn Time                 0.00ms
    

Теперь заходим по адресу http://51c85c8a.ngrok.com и видим наш сервер!

Улучшения

Не совсем удобно, что при каждом запуске ngrok будет присваивать новый url вида ********.ngrok.com.

Но можно присвоить свой поддомен и сервер будет доступен по этому адресу.

Для этого надо лишь:

  • зарегистрироваться
  • получить auth token
  • один раз указать ngrok полученный auth token (после первого запуска создается файл ~/.ngrok, в котором сохраняется введенный token):

    ./ngrok -authtoken your_auth_token 8000
    
  • теперь можно запускать так:

    ./ngrok  -subdomain=mysupersite 8000
    

Теперь наш локальный сервер доступен по адресу http://mysupersite.ngrok.com