Documentation Index
Fetch the complete documentation index at: https://mintlify.com/frappe/frappe/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Frappe can be deployed in production using various methods, from fully managed hosting to self-hosted solutions. Choose the approach that best fits your infrastructure and operational requirements.Managed hosting
Frappe Cloud
Frappe Cloud is a fully managed hosting platform specifically designed for Frappe applications. It’s an open-source platform that handles all operational aspects of your deployment. Features:- Automated installation and setup
- Zero-downtime upgrades
- Built-in monitoring and maintenance
- Developer platform with deployment controls
- Manage multiple Frappe deployments from one interface
Self-hosted deployment
Prerequisites
Before deploying Frappe in production, ensure you have:- Python 3.14 (or compatible version)
- MariaDB or PostgreSQL database server
- Redis for caching and job queuing
- Node.js 20 for asset building
- nginx as reverse proxy
- supervisor for process management
Production server setup
For production deployments, Frappe requires several components running together:Web server (gunicorn)
Frappe uses gunicorn as the WSGI HTTP server. Configure multiple workers based on your server resources:Background workers
Frappe uses RQ (Redis Queue) for background job processing. Start workers for different queue types:Customize worker counts and timeouts in
common_site_config.json using the workers configuration.Scheduler
The scheduler runs periodic tasks defined in your applications:nginx reverse proxy
Configure nginx to proxy requests to gunicorn and serve static files. Bench can generate nginx configuration:Process management
Use supervisor to manage Frappe processes and ensure they restart automatically:Security considerations
- HTTPS only: Configure SSL certificates for all sites
- Database security: Use strong passwords and limit network access
- File permissions: Ensure proper ownership and permissions on site directories
- Firewall: Restrict access to database and Redis ports
- Regular updates: Keep Frappe and dependencies up to date
Environment variables
Frappe supports environment variables for configuration overrides:| Variable | Description | Default |
|---|---|---|
FRAPPE_DB_HOST | Database host | 127.0.0.1 |
FRAPPE_DB_PORT | Database port | 3306 (MariaDB) |
FRAPPE_DB_NAME | Database name | - |
FRAPPE_DB_USER | Database user | - |
FRAPPE_DB_PASSWORD | Database password | - |
FRAPPE_REDIS_CACHE | Redis cache URL | redis://127.0.0.1:13311 |
FRAPPE_REDIS_QUEUE | Redis queue URL | redis://127.0.0.1:11311 |
Performance optimization
Worker configuration
Optimize worker counts based on your workload. Add tocommon_site_config.json:
Restart supervisor on update
Automatically restart processes when code is updated:Monitoring
Monitor your production deployment health:Next steps
Docker deployment
Deploy using containerized environments
Configuration options
Explore all configuration settings