A curated list of resources for deploying Flask applications to production — WSGI servers, reverse proxies, process managers, containers, HTTPS, scaling, monitoring, and the guides that tie them together.
Most Flask tutorials stop at flask run. This list is about everything after
that: getting a Flask app served reliably, securely, and repeatably in
production. The step-by-step guides come from
flask-deployment.com; the rest point to the
canonical docs for each tool.
- Start Here
- WSGI Servers
- Reverse Proxies
- Process Management
- Containers
- HTTPS & TLS
- Configuration & Secrets
- Databases & Migrations
- Static & Media Files
- Performance & Scaling
- Background Jobs
- Monitoring, Logging & Backups
- CI/CD
- Hosting & Platforms
- Checklists
- Troubleshooting
- Templates & Tools
- Flask — Deploying to Production — the official deployment overview.
- Deploy Flask with Nginx + Gunicorn — the canonical single-server stack, end to end.
- Deploy Flask on an Ubuntu VPS — from a bare server to a running app.
- Flask Production Starter — a ready-made baseline repo (Gunicorn + Nginx + systemd + Docker).
- Gunicorn · docs — the most common WSGI server for Flask on Linux.
- Waitress — pure-Python WSGI server; works on Windows.
- uWSGI — powerful, feature-rich, steeper learning curve.
- Gunicorn vs Waitress for Flask — how to choose.
- Gunicorn performance tuning — workers, threads, worker classes.
- Nginx — the standard reverse proxy in front of Gunicorn.
- Caddy — automatic HTTPS out of the box.
- Nginx reverse proxy for Flask, explained.
- Nginx performance tuning — gzip, caching, keepalive, buffers.
- systemd — keep Gunicorn running and start it on boot.
- Supervisor — alternative process control system.
- systemd basics for Flask.
- systemd + Gunicorn service setup.
- Let's Encrypt · Certbot — free, automated certificates.
- Set up HTTPS for Flask (Nginx + Let's Encrypt).
- Domain & DNS setup for production.
- Flask — Configuration handling.
- Flask production config basics.
- Config environments: dev vs staging vs production.
- Environment variables & secrets.
- SQLAlchemy · Flask-SQLAlchemy.
- Flask-Migrate (Alembic) — schema migrations.
- PostgreSQL docs.
- Flask + PostgreSQL production setup.
- WhiteNoise — serve static files from the app when you can't use Nginx.
- Static vs media files, explained.
- Static & media files in production.
- Scaling basics for small apps.
- Caching basics for production · Redis.
- Zero-downtime deploys (Gunicorn reload strategy).
- Celery — distributed task queue.
- RQ (Redis Queue) — simpler Redis-backed queue.
- Background jobs & task queue basics.
- Sentry for Flask — error tracking.
- Production logging setup.
- Monitoring & error tracking setup.
- Backup & recovery basics.
- Fly.io · Render · Railway — modern PaaS options.
- DigitalOcean — VPS / droplets.
- PythonAnywhere — beginner-friendly Python hosting.
- Flask production checklist (everything you must do).
- Security checklist · HTTPS & domain checklist.
- flask-deployment-checklist — a copy-pasteable launch checklist repo.
- Fix Flask 502 Bad Gateway.
- Nginx not connecting to Gunicorn (connection refused).
- Gunicorn service failed to start.
- HTTPS not working after Certbot.
- Static files not loading in production.
- Flask Production Starter — Gunicorn + Nginx + systemd + Docker baseline.
- Cookiecutter Flask — opinionated Flask project template.
Contributions are welcome! Please read the contribution guidelines first. Keep entries production-focused, alphabetical within reason, and prefer canonical/official sources.