I am trying to setup a server for app engine development. I cannot for the life of me figure out how to access the resulting web server externally. I am running a Debian image, Python GAE.

I have the following firewall rule in place which should let all http traffic through. I have restarted the server since it was setup, although I don't know that it was needed.

Source Ranges:
Allowed Protocols or Ports:

When I start app engine, I get no errors:

admin@dev:~$ sudo google_appengine/dev_appserver.py --port 80 appfiles
WARNING  2014-08-21 18:19:18,080 api_server.py:383] Could not initialize images API; you are likely missing the Python "PIL" module.
INFO     2014-08-21 18:19:18,083 api_server.py:171] Starting API server at: http://localhost:45536
INFO     2014-08-21 18:19:18,086 dispatcher.py:183] Starting module "default" running at: http://localhost
INFO     2014-08-21 18:19:18,086 admin_server.py:117] Starting admin server at: http://localhost:8000

I can't access the server using the external ephemeral IP - I just get a 500 status. I can access the website internally though.

admin@dev:~$ curl http://localhost/register/ > test.htm
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   815  100   815    0     0   2285      0 --:--:-- --:--:-- --:--:--  2295

admin@dev:~$ tail test.htm
    Email: <input type='email' id='email' name='email' /><br />
    Password: <input type='password' id='password' /><br />
    <input id='submit' type="submit" value="Register" />
    <footer><small>Website Footer</small></footer>

I know that the external IP is correct, because I use it to SSH in. Any ideas what I could be missing?


I installed Apache and I can get to the default page without issue on port 80. So why is GAE not working with external requests?


By default, it listens to requests on localhost only. You need to set the --host parameter:

sudo google_appengine/dev_appserver.py --port 80 --host appfiles
  • You da man. Stupid question I guess, but thank you! – Rip Leeb Aug 21 '14 at 19:34
  • Not stupid, something I had trouble with with Laravel (PHP)'s artisan serve command myself. – ceejayoz Aug 21 '14 at 19:42
  • 2
    Note that while it will work, it's an unauthenticated webserver, open to the world and if it has any GAE OAuth credentials to access (read or write) your data, it may be abused if discovered, e.g., via port scanning IP ranges. As an alternative, consider using SSH port forwarding to access the app securely instead. – Misha Brukman Aug 30 '14 at 17:27
  • Another alternative is to use a Managed VM -- cloud.google.com/appengine/docs/managed-vms , now in beta -- to get a "real" App Engine server running on your GCE w/o the sandbox limitations. dev_appserver.py isn't really meant for anything but local development!-) Alternatively, TyphoonAE, code.google.com/p/typhoonae , and AppScale, appscale.com , may be worth a try, but I have no personal experience with either. – Alex Martelli Feb 5 '15 at 18:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.