Configure Frappe site settings - manage site_config.json and environment variables
Manage Frappe site configuration including site_config.json, environment variables, and feature flags. Use this to configure database connections, email settings, developer mode, security options, and performance tuning for your Frappe sites.
/plugin marketplace add Venkateshvenki404224/frappe-apps-manager/plugin install frappe-apps-manager@frappe-marketplaceManage Frappe site configuration including site_config.json settings, environment variables, and feature flags.
Ask user what they want to configure:
A. View Current Config
B. Database Settings
C. Redis Settings
D. Email Settings
E. Developer Settings
F. Feature Flags
Display site_config.json:
cat sites/[site-name]/site_config.json | jq .
Get Specific Config:
bench --site [site-name] console
>>> frappe.conf.get('db_name')
>>> frappe.conf.get('developer_mode')
List All Configs:
import json
print(json.dumps(frappe.conf, indent=2))
Set Single Value:
bench --site [site-name] set-config [key] [value]
Examples:
# Enable developer mode
bench --site [site-name] set-config developer_mode 1
# Set session timeout
bench --site [site-name] set-config session_timeout 3600
# Set file size limit
bench --site [site-name] set-config max_file_size 10485760
Set Multiple Values:
# Via console
config_updates = {
'developer_mode': 1,
'allow_tests': 1,
'log_queries': 1
}
for key, value in config_updates.items():
frappe.db.set_value('Website Settings', None, key, value)
frappe.db.commit()
Database Settings:
{
"db_name": "site_db",
"db_host": "localhost",
"db_port": 3306,
"db_type": "mariadb",
"db_socket": "/var/run/mysqld/mysqld.sock"
}
Read Replica:
{
"read_from_replica": 1,
"replica_host": "replica.example.com",
"replica_port": 3306
}
Redis Connection Settings:
{
"redis_cache": "redis://localhost:13000",
"redis_queue": "redis://localhost:11000",
"redis_socketio": "redis://localhost:12000"
}
Redis with Password:
{
"redis_cache": "redis://:password@localhost:13000",
"redis_queue": "redis://:password@localhost:11000"
}
SMTP Settings:
bench --site [site-name] set-config mail_server "smtp.gmail.com"
bench --site [site-name] set-config mail_port 587
bench --site [site-name] set-config use_tls 1
bench --site [site-name] set-config mail_login "your-email@gmail.com"
bench --site [site-name] set-config mail_password "app-password"
Email Configuration:
{
"mail_server": "smtp.gmail.com",
"mail_port": 587,
"use_tls": 1,
"mail_login": "notifications@company.com",
"mail_password": "app-password",
"auto_email_id": "notifications@company.com",
"email_sender_name": "Company Notifications"
}
Enable Developer Mode:
bench --site [site-name] set-config developer_mode 1
bench --site [site-name] clear-cache
Developer Mode Features:
Debug Settings:
{
"developer_mode": 1,
"allow_tests": 1,
"log_queries": 1,
"logging": 2,
"auto_reload": 1
}
Performance Configuration:
{
"limits": {
"page_length": 20,
"posts_per_page": 10
},
"background_workers": 4,
"max_file_size": 10485760,
"enable_prepared_report": 1,
"global_search_doctypes": ["Customer", "Item", "Sales Invoice"]
}
Caching Settings:
{
"cache_ttl": 3600,
"enable_rate_limit": 1,
"rate_limit": {
"limit": 100,
"window": 3600
}
}
Security Configuration:
{
"disable_signup": 1,
"deny_multiple_sessions": 0,
"session_timeout": 14400,
"session_expiry_mobile": 604800,
"password_reset_limit": 3,
"allow_cors": "*",
"ignore_csrf": 0
}
SSL/HTTPS Settings:
{
"force_https": 1,
"host_name": "https://mysite.com",
"redirect_to_https": 1
}
Frappe Configuration Module:
Common Site Config from Bench:
Real Config Patterns:
{
"db_host": "localhost",
"db_port": 3306,
"redis_cache": "redis://localhost:13000",
"redis_queue": "redis://localhost:11000",
"redis_socketio": "redis://localhost:12000",
"webserver_port": 8000,
"socketio_port": 9000,
"background_workers": 1,
"gunicorn_workers": 4
}
{
"db_name": "dev_site",
"db_password": "password",
"developer_mode": 1,
"allow_tests": 1,
"logging": 2,
"log_queries": 1,
"auto_reload": 1,
"disable_website_cache": 1
}
{
"db_name": "prod_site",
"db_password": "strong_password",
"developer_mode": 0,
"logging": 1,
"host_name": "https://example.com",
"force_https": 1,
"deny_multiple_sessions": 1,
"session_timeout": 14400,
"enable_rate_limit": 1
}
bench --site dev.local set-config developer_mode 1
bench --site dev.local set-config allow_tests 1
bench --site dev.local set-config log_queries 1
bench --site dev.local set-config auto_reload 1
bench --site dev.local clear-cache
bench --site prod.example.com set-config developer_mode 0
bench --site prod.example.com set-config logging 1
bench --site prod.example.com set-config deny_multiple_sessions 1
bench --site prod.example.com set-config session_timeout 14400
bench --site prod.example.com set-config enable_rate_limit 1
bench --site [site-name] set-config mail_server "smtp.gmail.com"
bench --site [site-name] set-config mail_port 587
bench --site [site-name] set-config use_tls 1
bench --site [site-name] set-config mail_login "your-email@gmail.com"
bench --site [site-name] set-config mail_password "app-specific-password"
bench --site [site-name] set-config host_name "https://example.com"
bench --site [site-name] set-config force_https 1
| Setting | Description | Default | Environment |
|---|---|---|---|
developer_mode | Enable development features | 0 | Dev only |
db_name | Database name | site name | All |
db_password | Database password | - | All |
redis_cache | Redis cache URL | localhost:13000 | All |
redis_queue | Redis queue URL | localhost:11000 | All |
mail_server | SMTP server | - | All |
session_timeout | Session expiry (sec) | 3600 | All |
deny_multiple_sessions | Single session per user | 0 | Production |
logging | Log level (1-3) | 1 | All |
enable_rate_limit | API rate limiting | 0 | Production |
When developer_mode: 1:
Production Security Checklist:
{
"developer_mode": 0,
"disable_signup": 1,
"deny_multiple_sessions": 1,
"session_timeout": 14400,
"password_reset_limit": 3,
"ignore_csrf": 0,
"force_https": 1,
"enable_rate_limit": 1,
"cors_headers": ["https://allowed-domain.com"]
}
.gitignore for site_config.json (contains secrets)Config Not Taking Effect:
# Restart bench
bench restart
# Clear cache
bench --site [site-name] clear-cache
# Check if config was set
cat sites/[site-name]/site_config.json | jq .[key]
Invalid JSON:
# Validate JSON syntax
cat sites/[site-name]/site_config.json | jq .
Permission Denied:
# Check file ownership
ls -la sites/[site-name]/site_config.json
# Fix if needed
sudo chown frappe:frappe sites/[site-name]/site_config.json