A five-line Dockerfile
A ready template is in the FAQ below - copy it, commit it, and the build starts itself. Port 8501 is read from EXPOSE.
Built a dashboard or demo with Streamlit, but Streamlit Cloud barely works from Russia? Deploy to Dada Cloud: add a five-line Dockerfile - the platform builds and runs the app and issues an HTTPS domain. Free tier, servers in Russia.
A ready template is in the FAQ below - copy it, commit it, and the build starts itself. Port 8501 is read from EXPOSE.
The dashboard gets a name.dada-tuda.ru address with a certificate - share it with colleagues or a client immediately.
Servers in Russia: no VPN needed for you or anyone you send the link to. Pay in rubles when you outgrow the free tier.
If the dashboard needs data, a managed database is one click away with DATABASE_URL wired in.
The process restarts automatically after a failure.
Your first app can run for free, no card required.
Six steps from a local app.py to a link you can send a colleague.
Save requirements.txt with pip freeze > requirements.txt. Streamlit and everything your script imports must be listed, or the build fails on import.
FROM python:3.12-slim, COPY . ., RUN pip install -r requirements.txt, EXPOSE 8501, CMD streamlit run app.py --server.address 0.0.0.0 --server.port 8501. Put it in the repo root.
Name the app inside a project and connect a GitHub repo. Without git, upload a zip - the two paths are equivalent.
API keys and passwords are set in the console and injected at start. Read them with os.environ - no secrets.toml in the repo.
The first build takes 2-3 minutes while dependencies install and the image is assembled. Progress and errors show up in the build logs.
The dashboard is live at name.dada-tuda.ru over HTTPS and opens from Russia without a VPN. A custom domain takes a couple of minutes.
Real platform tiers, and an honest comparison with renting your own VPS.
| Tier | Price | What you get |
|---|---|---|
| Free | 0 ₽/mo | One dashboard with a domain, no card required. Enough for a demo or an internal report with a couple of viewers. |
| Startup | 990 ₽/mo | 5 apps and 2 databases - several dashboards plus memory headroom for concurrent sessions. |
| Business | 2,900 ₽/mo | 20 apps, 10 databases, 30-day backups, priority support. |
| Your own VPS | comparable on hardware | A VPS is cheaper per unit of hardware. But the systemd unit, nginx, the certificate and restarts after an OOM cost your time. |
Three places a Streamlit deploy usually trips.
By default streamlit run binds localhost and the dashboard stays unreachable. The --server.address 0.0.0.0 --server.port 8501 flags are mandatory - they are already in the template above.
Every viewer is a separate session with its own state, and a cached pandas frame lives in process memory. Precompute heavy data and keep it in PostgreSQL.
Files taken through st.file_uploader and CSVs written to disk disappear on the next build. Write results to a database or object storage.
Five lines: FROM python:3.12-slim, then COPY . ., RUN pip install -r requirements.txt, EXPOSE 8501 and CMD streamlit run app.py --server.address 0.0.0.0 --server.port 8501. Commit it to the repo root - the platform builds the image itself.
From Russia Streamlit Cloud is unstable and dashboard links may not open for your colleagues. Here the servers are in Russia - the link works for everyone without a VPN.
Yes: create a managed PostgreSQL next door - DATABASE_URL appears in the environment, read it in the app as usual.
The platform restarts the process automatically; logs are visible in the panel.
Yes, the first app runs on the free tier, no card required.
Yes. Zip the project folder (up to 100MB) and drop it into the console - on upload, streamlit in requirements.txt is recognised and port 8501 is filled in automatically. For repo builds it is safer to commit a Dockerfile.
The simple route is a password check on entry with st.text_input compared against an environment variable set in the console, so the secret never enters the repo. For internal dashboards that is usually enough.
Wrap data loading in st.cache_data so a heavy query runs once instead of on every slider move. If the dataset is large, move up a tier: dashboards hit memory limits long before CPU ones.
Yes, Streamlit keeps a session per viewer. Each session costs memory, so for dozens of concurrent viewers pick a paid tier.
Create an account and deploy your first app. The Free plan costs $0.