This FAQ page is a work in progress. Please contribute!
Q: How do I set up Streamlit in a virtual environment?
How do I deploy Streamlit on a domain so it appears to run on a regular port (i.e. port 80)?
A: You should use a reverse proxy to forward requests from a webserver like Apache2 or Nginx to the port that your Streamlit app is running on. You can accomplish this in several different ways. The simplest way is to forward all requests sent to your domain so that your Streamlit app appears as the content of your website.
Another nifty and not much more difficult approach is to configure your webserver to forward requests to designated subfolders (e.g. "http://awesomestuff.net/streamlitapp") to different Streamlit apps on the same domain, as in this example config for Nginx submitted by a Streamlit community member.
Q: How can I deploy multiple Streamlit apps on different subdomains?
A: Subdomains are handled by a web server, like Apache2 and Nginx, two very popular open source choices.
What you need to make this work is to set up a web server on a machine with a public IP address, then use a DNS server to point all desired subdomains to your webserver's IP address. Next, configure your web server to route requests for each subdomain to the different ports that your Streamlit apps are running on.
For example, let’s say you had 2 streamlit apps called Calvin and Hobbes. App “Calvin” is running on port 8501. You set up app “Hobbes” to run on port 8502.
Your webserver would then be set up to “listen” for requests on subdomains calvin.somedomain.com and hobbes.subdomain.com, and route requests to port 8501 and 8502, respectively.
Check out these two tutorials for Apache2 and Nginx that deal with setting up a webserver to redirect subdomains to different ports:
Q: How do I deploy Streamlit on Heroku, AWS, Google Cloud, etc...?
A: Here are some user-submitted tutorials for different cloud services. Feel free to add more to the list!
- How to Deploy Streamlit to a Free Amazon EC2 instance, by Rahul Agarwal
- Host Streamlit on Heroku, by Maarten Grootendorst
- Host Streamlit on Azure, by Richard Peterson
Q: Does Streamlit support the WSGI Protocol? (aka Can I deploy Streamlit with gunicorn?)
A: Streamlit does not support the WSGI protocol at this time, so deploying Streamlit with (for example) gunicorn is not currently possible. Check out this thread regarding deploying Streamlit in a gunicorn-like manner to see how other users have accomplished this.