Remote url for localhost server

There is a nice tool called ngrok. It allows to bind the URL for your localhost server!

For example, you’ve launched a django development server on you computer:

python manage.py runserver

and this project can be accessed by remote URL.

What for?

At least i can imagine such tasks:

  • demonstrate project to customer
  • check your site integration with payment system. For example paypal, where for receiving IPN messages you need a working site URL, even for sandbox

How

  • Download ngrok from here
  • Unpack downloaded archive
  • Start django development server (by default on 8000 port)
  • Start ngrok:
    ./ngrok 8000
    
  • In console you’ll see something like this:
    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
    

Now your server is bind to http://51c85c8a.ngrok.com

Improvements

It is not very useful, that on every start ngrok will generate new url like ********.ngrok.com.

But we can assign custom subdomain and project can be accessed by the same url.

To do it we need:

  • register
  • take auth token
  • let ngrok know your auth token (it is needed to do only once):

    ./ngrok -authtoken your_auth_token 8000
    
  • set your custom subdomain like this:

    ./ngrok  -subdomain=mysupersite 8000
    

After that our local server will be shown at http://mysupersite.ngrok.com.