Topic · Hosting & servers

Platforms & PaaS for Django in production

Managed and self-hosted platforms that build and run the app for you, from Heroku and Render to Coolify and Dokku.

what a platform does after git pushgit pushBuildinstall, collectstaticReleasemigrateRunweb, workerRouteHTTPS domainYou still own settings, migrations, and backups; the platform owns the servers

Platforms such as Render, Railway, Fly.io, Heroku, and App Platform run the servers for you. You bring a repository and a few settings; the platform builds, releases, and routes traffic.

What stays with you is the Django side: production settings, migrations in the release step, static and media storage, and backups. Each guide covers one platform end to end.

33Set it up
1Run it well
8Fix it

Set it up

Guides that take this from nothing to running in production.

  • Best Hosting Options for Django Deployment in 2026

    Choosing the best hosting for Django deployment is not about finding the cheapest server or the most popular cloud.

  • How to Deploy Django on Render

    It is easy to get a Django app running on Render, but it is also easy to ship an unsafe or incomplete production setup.

  • How to Deploy Django on Railway

    If you want to deploy Django on Railway, the main challenge is not just getting a container to start.

  • Deploy Django on Fly.io with Postgres

    A production-safe Fly.io Django deployment needs more than fly launch and fly deploy.

  • Deploy Django on Google Cloud Run

    If you want to deploy Django on Google Cloud Run, the basic path is straightforward: build a container and run it. The production-safe part is where most deployments fail.

  • Deploy Django on Heroku with Postgres

    Deploy a Django app to Heroku with Gunicorn, Heroku Postgres, WhiteNoise, a release-phase migration, and production-safe settings.

  • Deploy Django on Azure App Service

    Deploy Django to Azure App Service on Linux with Oryx builds, Gunicorn startup commands, Azure Database for PostgreSQL, and secure app settings.

  • Deploy Django on PythonAnywhere

    Deploy an existing Django project on PythonAnywhere with a virtualenv, a correct WSGI file, MySQL, static file mappings, environment variables, and forced HTTPS.

  • Deploy Django with Dokku on Your Own Server

    Run a Heroku-style git push deploy for Django on your own server with Dokku, the Postgres plugin, predeploy migrations, persistent media storage, and Let's Encrypt.

  • Deploy Django with Kamal

    Deploy a Dockerized Django app with Kamal 2: deploy.yml, secrets, kamal-proxy HTTPS, a Postgres accessory, safe migrations, health checks, and rollbacks.

  • Deploy Django on Google App Engine

    Deploy Django to the Google App Engine standard environment with app.yaml, Gunicorn, Cloud SQL for PostgreSQL, Secret Manager, static handlers, and Cloud Storage media.

  • Deploy Django on Azure Container Apps

    Deploy a containerized Django app to Azure Container Apps with Azure Container Registry, PostgreSQL Flexible Server, secrets, a migration job, custom domains, and revisions.

  • Deploy Django with Coolify

    Deploy Django on your own server with Coolify: Dockerfile builds from Git, managed PostgreSQL and Redis, automatic HTTPS, environment variables, migrations, and backups.

  • Deploy Django with CapRover

    Deploy Django with CapRover: captain-definition, a Gunicorn Dockerfile, one-click PostgreSQL, container port and HTTPS settings, persistent media, and safe migrations.

  • Deploy Django on DigitalOcean App Platform

    Deploy Django on DigitalOcean App Platform with an app spec, Gunicorn, managed PostgreSQL, bindable environment variables, a pre-deploy migration job, and WhiteNoise.

  • Deploy Wagtail CMS to Production

    Deploy a Wagtail site to production: Sites and WAGTAILADMIN_BASE_URL, image renditions and media storage, scheduled publishing, search indexing, document serving, and caching.

  • Deploy Django on Vercel (and Its Limits)

    Deploy a Django app on Vercel’s Python runtime: expose the WSGI app, collect static files at build time, use an external PostgreSQL such as Neon, and understand what serverless Django on Vercel cannot do.

  • Deploy Django on cPanel Shared Hosting

    Deploy Django on cPanel shared hosting with Setup Python App and Phusion Passenger: create the app and virtualenv, write passenger_wsgi.py, use MySQL or PostgreSQL, serve static files from public_html, and know the hosting limits.

  • Alternatives to Heroku for Hosting Django

    Compare Heroku alternatives for deploying Django: Render, Railway, Fly.io, DigitalOcean App Platform, Google Cloud Run, AWS App Runner, PythonAnywhere, and self-hosted PaaS like Coolify and Dokku, by workflow, workers, databases, and cost model.

  • Render vs Railway vs Fly.io for Django

    Compare Render, Railway, and Fly.io for hosting Django: build and deploy workflow, workers and cron, managed PostgreSQL, migrations, regions and latency, persistent storage, billing models, and operational effort, with picks for common scenarios.

  • Deploy Django on Koyeb

    Deploy a Django app on Koyeb from GitHub or a Docker image: configure Gunicorn and the PORT, add a PostgreSQL database, set secrets, health checks, and regions, run migrations safely, serve static files with WhiteNoise, and attach a custom domain.

  • Deploy Django on Northflank

    Deploy Django on Northflank: build from Git with a Dockerfile or buildpack, add PostgreSQL and Redis addons, share configuration with secret groups, run migrations as a job in a release flow, add Celery workers, and expose the app with a custom domain.

  • Deploy Django on Upsun (Formerly Platform.sh)

    Deploy Django on Upsun, formerly Platform.sh: write the application, services, and routes configuration, run collectstatic in the build hook and migrate in the deploy hook, read service credentials from relationships, and use mounts and preview environments.

  • Deploy Django on Scalingo

    Deploy Django on Scalingo, the European PaaS: prepare a Procfile with web and postdeploy commands, add the PostgreSQL addon, configure environment variables, static files, and workers, and scale containers while keeping data in EU regions.

  • Deploy Django on Divio

    Deploy Django on Divio, a cloud platform built around Django and Docker: structure the project for Divio’s Dockerfile, read DEFAULT_DATABASE_DSN and storage DSNs, configure release commands for migrations, and promote changes from test to live environments.

  • Deploy Django With Dokploy on Your Own Server

    Deploy Django with Dokploy, an open-source self-hosted PaaS: install it on a VPS, create an application from Git with a Dockerfile or Nixpacks, add PostgreSQL and Redis, configure domains with automatic HTTPS, run migrations, and schedule database backups.

  • Deploy Django With Easypanel

    Deploy Django with Easypanel, a Docker-based server control panel: create an app service from GitHub with a Dockerfile or buildpacks, add Postgres and Redis services, set environment variables, mount volumes for media, and enable HTTPS on a custom domain.

  • Deploy Django on AWS Elastic Beanstalk

    Deploy Django to AWS Elastic Beanstalk with the EB CLI, Gunicorn, RDS PostgreSQL, leader-only migrations, static file mapping, and working health checks.

  • Deploy Django on AWS App Runner

    Deploy a containerised Django app on AWS App Runner: build an image in ECR, configure the port and health check, connect to RDS through a VPC connector, run migrations, serve static files, and know when ECS fits better.

  • Deploy Django to AWS Lambda

    Deploy Django to AWS Lambda with Zappa or a container image and the Lambda Web Adapter: package size limits, static files on S3, database connections with RDS Proxy, cold starts, and when serverless Django is a poor fit.

  • Run Celery Workers on Heroku for a Django App

    Run Celery on Heroku with a Django app: add a worker process type, use Heroku Key-Value Store or another Redis as the broker with TLS, schedule periodic tasks without running beat on several dynos, size concurrency to dyno memory, and handle SIGTERM restarts.

  • Run Celery Workers on Render, Railway, and Fly.io

    Run Celery workers and beat for a Django app on Render background workers, Railway services, and Fly.io process groups: share the image and environment, connect a Redis broker, keep beat to one instance, and handle shutdowns and scaling on each platform.

  • Use Upstash Redis With Django

    Use Upstash serverless Redis with Django for caching, sessions, rate limiting, and Celery: connect over rediss:// with TLS, understand per-request pricing and connection limits, choose regions, and know when the REST API suits serverless deployments better.

Run it well

Tuning, reliability, and operations once it works.

Fix it

Errors and symptoms, each traced to a cause and a fix.

  • Fix Heroku H10 App Crashed for Django

    Fix Heroku H10 App crashed errors for Django apps: read the crash in heroku logs, fix the Procfile and gunicorn command, bind to $PORT, set config vars like SECRET_KEY and DATABASE_URL, and handle release-phase failures.

  • Fix Heroku H12 Request Timeout in Django

    Fix Heroku H12 Request timeout errors for Django: understand the 30-second router limit, find slow views, set Gunicorn timeouts below it, move long work to worker dynos with Celery or RQ, and avoid H13 cascades.

  • Fix "No open ports detected" and Port Binding on PaaS Hosts

    Fix Django deploys failing on Render, Railway, Fly.io, Cloud Run, and App Runner with no open ports detected, failed to bind to PORT, or application failed to respond: bind Gunicorn to 0.0.0.0 and the platform's PORT variable.

  • Fix Heroku R14 "Memory Quota Exceeded" for a Django App

    Fix Heroku R14 Memory quota exceeded and R15 errors for Django: measure memory per Gunicorn worker, set WEB_CONCURRENCY to fit the dyno, recycle workers with max-requests, find leaks in views and Celery, and choose a dyno size that matches.

  • Fix Heroku "Error While Running collectstatic" for Django

    Fix the Heroku Python build error while running python manage.py collectstatic --noinput: read the hidden traceback, set STATIC_ROOT, avoid settings that need runtime config vars at build time, and fix WhiteNoise manifest errors.

  • Fix Heroku "Failed to Compile Python App" for Django

    Fix Heroku push rejected, failed to compile Python app for Django: set the Python version with .python-version, fix requirements and lock files, resolve packages that need system libraries, and clear a stale build cache.

  • Fix Vercel FUNCTION_INVOCATION_FAILED for a Django App

    Fix Vercel 500 FUNCTION_INVOCATION_FAILED and serverless function crashed errors for Django: read the function logs, expose the WSGI app correctly, fix ALLOWED_HOSTS, static files, database connections, and bundle size limits.

  • Fix DigitalOcean App Platform Health Check Failed for Django

    Fix DigitalOcean App Platform deploys that fail with health check failed or container exited for Django: bind Gunicorn to the right port, configure the HTTP health check path, allow the internal host, give migrations a pre-deploy job, and size the instance.

Related topics