Asked By – sa125
I’m not sure if this is Flask specific, but when I run an app in dev mode (
http://localhost:5000), I cannot access it from other machines on the network (with
http://[dev-host-ip]:5000). With Rails in dev mode, for example, it works fine. I couldn’t find any docs regarding the Flask dev server configuration. Any idea what should be configured to enable this?
Now we will see solution for issue: Configure Flask dev server to be visible across the network
While this is possible, you should not use the Flask dev server in production. The Flask dev server is not designed to be particularly secure, stable, or efficient. See the docs on deploying for correct solutions.
--host option to
flask run, or the
host parameter to
app.run(), controls what address the development server listens to. By default it runs on
localhost, change it to
flask run --host=0.0.0.0 (or
app.run(host="0.0.0.0")) to run on all your machine’s IP addresses.
0.0.0.0 is a special value that you can’t use in the browser directly, you’ll need to navigate to the actual IP address of the machine on the network. You may also need to adjust your firewall to allow external access to the port.
The Flask quickstart docs explain this in the “Externally Visible Server” section:
If you run the server you will notice that the server is only
accessible from your own computer, not from any other in the network.
This is the default because in debugging mode a user of the
application can execute arbitrary Python code on your computer.
If you have the debugger disabled or trust the users on your network,
you can make the server publicly available simply by adding
--host=0.0.0.0to the command line:
$ flask run --host=0.0.0.0
This tells your operating system to listen on all public IPs.