How to make Django's devserver public ? Is it generally possible?

I'm currently trying out the Django framework and I would share/present/show some stuff I've made to my workmate/friends. I work in Ubuntu under Win7 via VMware. So my wish/desire is to send my current pub-IP with port (e.g http://123.123.123.123:8181/django-app/) to my friends so they could test it.

the Problem is - I use django's Dev server (python /path-to-django-app/manage.py runserver $IP:$PORT).

How do I make the devserver public?

EDIT:

Oh, there's something I forgot to mention. As I sad I use VMware with Ubuntu. I have a shellscript that returns me my current int-IP 192.168.xx.xx and saves it in a environment-variable ($CUR_IP) So, each time I want to run django's devserver I simply execute

python /path-to-django-site/manage.py runserver $CUR_IP:8080

At this way I become an http-adress (e.g.http://192.168.40.145:8080/app-name/) which I CAN USE OUTSIDE my virtual machine. I could test it on my host (win7) machine. That's actually the reason why I asked the question. I thought there's a way to use the ext-IP and make runserver usable outside too


Solution 1:

python manage.py runserver 0.0.0.0:8181

This will run development server that should listen on all IP's on port 8181.

Note that as of Jun 17, 2011 Django development server is threaded by default (ticket #1609).

From docs:

Note that the default IP address, 127.0.0.1, is not accessible from other machines on your network. To make your development server viewable to other machines on the network, use its own IP address (e.g. 192.168.2.1) or 0.0.0.0.

Solution 2:

Assuming you have ruby installed, you just have to get localtunnel:

gem install localtunnel

then start your python development server with:

python manage.py runserver 0.0.0.0:8000

in another shell, start localtunnel:

localtunnel -k ~/.ssh/id_rsa.pub 8000 

That will output an url to access your local server.

Port 8000 is now publicly accessible from http://xxxx.localtunnel.com

That's it.