Frappe Cloud & Press
Complete reference for Frappe Cloud managed hosting and Press self-hosted alternative.
Quick Reference — Frappe Cloud Concepts
| Concept |
Description |
| Site |
A single Frappe instance with its own database, domain, and apps |
| Bench |
A shared runtime environment hosting one or more sites with the same app versions |
| Server |
The underlying infrastructure (VM) running one or more benches |
| Private Bench |
A dedicated bench for a single customer with full control |
| Shared Bench |
A Frappe-managed bench shared across multiple sites |
| Press |
The open-source platform (AGPL-3.0) that powers Frappe Cloud |
| Agent |
Flask application on each server enabling Press-to-site communication |
Decision Tree: Frappe Cloud vs Self-Hosted
Choosing hosting strategy:
├── Small team, want zero ops overhead?
│ └── Frappe Cloud (Shared Bench) — fastest time to production
├── Need custom server configuration?
│ ├── Budget for managed infra? → Frappe Cloud (Private Bench)
│ └── Want full control? → Self-hosted with bench
├── Need to host Frappe for multiple clients?
│ ├── Want managed platform? → Frappe Cloud
│ └── Want own platform? → Self-hosted Press
├── Regulatory/compliance — data must stay on-premises?
│ └── Self-hosted (bench or Press)
└── Development/testing environment?
├── Quick prototype → Frappe Cloud (free trial)
└── Long-term dev → Local bench installation
Frappe Cloud Overview
Frappe Cloud is a fully managed hosting platform for the Frappe stack. It handles server provisioning, backups, updates, monitoring, and scaling.
Core Features
| Feature |
Details |
| Automated backups |
Scheduled daily backups with retention policies |
| Automatic updates |
Managed update cycles for Frappe apps |
| Scaling |
Horizontal and vertical scaling without downtime |
| Multi-tenancy |
Multiple independent sites per bench |
| SSL/TLS |
Automatic certificate provisioning and renewal |
| Monitoring |
Real-time server and site monitoring |
| Role-based access |
Granular permissions for team members |
| Billing |
Daily/monthly subscriptions, wallet credits, multiple payment methods |
Infrastructure Options
| Option |
Use Case |
| Shared Bench |
Cost-effective for small sites; Frappe manages the bench |
| Private Bench |
Dedicated environment; custom app versions and update schedules |
| Dedicated Server |
Full server for high-traffic or compliance requirements |
Frappe Cloud Dashboard
Site Management
The dashboard provides centralized control for all site operations:
- Create sites — Provision new sites on shared or private benches
- Install/remove apps — Add or remove Frappe apps from sites
- Backups — Manual and scheduled backups, restore from backup
- Domain management — Add custom domains with automatic SSL
- Site config — Edit
site_config.json via the dashboard
- Monitoring — View CPU, memory, disk usage, and request logs
- Site actions — Migrate, update, suspend, archive, or transfer sites
Bench Management
- Create benches — Set up shared or private benches
- App management — Select apps and their versions/branches
- Update scheduling — Control when benches receive updates
- Environment variables — Set custom environment variables
- SSH access — Connect to bench via SSH for debugging
- Log browser — View application and error logs
- Database access — Query the database via the dashboard
Server Management
- Provision servers — Create servers across multiple cloud providers
- Scale resources — Upgrade CPU, memory, and storage
- Storage add-ons — Attach additional storage volumes
- Server snapshots — Create and restore server snapshots
Deploying Apps on Frappe Cloud
Adding a Custom App
- Navigate to Apps in the Frappe Cloud dashboard
- Click Add App and provide the GitHub repository URL
- Select the branch to deploy
- Configure build settings if needed
- The app becomes available for installation on sites within compatible benches
App Marketplace
Frappe Cloud includes a marketplace where developers can:
- List apps with descriptions and pricing
- Set compatibility requirements (Frappe version, dependencies)
- Configure pricing models (free, one-time, subscription)
- Manage payouts for commercial apps
- Track installations and usage analytics
Deployment Workflow
Developer pushes code → Frappe Cloud detects update →
Bench rebuild triggered → Assets compiled →
Sites migrated → New version live
For Private Benches: Updates are controlled by the bench owner — NEVER auto-deployed without approval.
For Shared Benches: Frappe manages the update schedule.
Site Provisioning Workflow
Creating a New Site
- Select bench — Choose shared or private bench
- Choose plan — Select resource allocation (CPU, memory, storage)
- Configure apps — Select which apps to install
- Set domain — Use
*.frappe.cloud subdomain or custom domain
- Create — Frappe Cloud provisions the site (typically under 5 minutes)
Custom Domain Setup
- Navigate to site Domains in the dashboard
- Add your custom domain (e.g.,
erp.example.com)
- Configure DNS: Add a CNAME record pointing to the Frappe Cloud proxy
- Frappe Cloud verifies DNS and provisions SSL certificate automatically
- ALWAYS wait for DNS propagation before expecting SSL to work (up to 48 hours)
Critical Rules
- ALWAYS use CNAME records for custom domains (not A records)
- NEVER transfer DNS to Frappe Cloud — only add CNAME records
- ALWAYS verify SSL is active before switching production traffic
- Custom domain SSL uses Let's Encrypt — auto-renews before expiry
Frappe Cloud vs Self-Hosted Comparison
| Aspect |
Frappe Cloud |
Self-Hosted (bench) |
Self-Hosted (Press) |
| Setup time |
Minutes |
Hours |
Days |
| Server management |
Managed |
You manage |
You manage |
| Backups |
Automatic |
Manual/cron |
Automatic |
| Updates |
Managed schedule |
bench update |
Managed via Press |
| SSL certificates |
Automatic |
Manual/certbot |
Automatic |
| Scaling |
Dashboard button |
Manual |
Dashboard |
| Multi-tenancy |
Built-in |
DNS multi-tenant |
Built-in |
| Cost |
Subscription |
Infrastructure only |
Infrastructure only |
| Custom server config |
Limited |
Full control |
Full control |
| Data sovereignty |
Frappe's infra |
Your infra |
Your infra |
| SSH access |
Private bench only |
Full |
Full |
| Monitoring |
Built-in |
Set up yourself |
Built-in |
| Support |
Included |
Community only |
Community only |
Press: Self-Hosted Frappe Cloud
What Is Press?
Press is the open-source platform (AGPL-3.0) that powers Frappe Cloud. Organizations can self-host Press to create their own managed hosting platform for Frappe applications.
GitHub: https://github.com/frappe/press
Architecture
| Component |
Technology |
Role |
| Press |
Frappe Framework |
Platform management, billing, dashboard |
| Agent |
Flask |
Server-to-site communication |
| Docker |
Container runtime |
App packaging and deployment |
| Ansible |
Automation |
Server provisioning and configuration |
| Frappe UI |
Vue.js |
Dashboard frontend |
Key Capabilities
- Multi-server management — Provision and manage multiple servers
- Site lifecycle — Create, update, migrate, backup, restore, archive sites
- Bench management — Deploy benches with specific app versions
- Billing system — Subscriptions, invoicing, wallet credits, ERP integration
- Marketplace — App listing, pricing, payouts
- Role-based access — Granular permissions per team and resource
- Monitoring — Real-time metrics and alerting
When to Self-Host Press
- You need to host Frappe for multiple clients/tenants
- You want a managed platform but on your own infrastructure
- You need full data sovereignty and regulatory compliance
- You want to offer Frappe hosting as a service
When NOT to Self-Host Press
- NEVER self-host Press for a single site — use bench directly
- NEVER self-host Press without dedicated DevOps capacity
- NEVER underestimate the operational overhead — Press itself requires maintenance
Self-Hosting Requirements
- Dedicated servers (bare metal or VMs) with Ubuntu
- DNS management for wildcard domains
- Object storage for backups (S3-compatible)
- SMTP service for transactional email
- Familiarity with Ansible, Docker, and Frappe Framework
Frappe Cloud Limitations
What You CANNOT Do on Frappe Cloud
- Install system-level packages (no root access on shared benches)
- Modify Nginx/Supervisor configuration directly
- Access raw database files (only SQL access via dashboard)
- Run long-running background processes outside Frappe's job queue
- Use non-standard ports or protocols
Shared Bench Limitations
- No SSH access
- No custom environment variables (use site_config.json instead)
- Shared resources with other sites — performance may vary
- Update schedule controlled by Frappe (not the site owner)
Private Bench Advantages Over Shared
- SSH access for debugging
- Custom environment variables
- Controlled update schedule
- Dedicated resources
- Custom app versions and branches
Frappe Cloud Best Practices
Site Configuration
- ALWAYS set
maintenance_mode before large data imports
- ALWAYS use the dashboard for site config changes (not direct file edits)
- NEVER disable scheduler on Frappe Cloud — use
pause_scheduler instead
- ALWAYS test app updates on a staging site before production
Backup Strategy
- Frappe Cloud creates automatic daily backups
- ALWAYS create a manual backup before major changes
- ALWAYS download and store backups off-platform periodically
- NEVER rely solely on Frappe Cloud backups — maintain your own copies
Performance
- Monitor site usage via the dashboard — upgrade plan before hitting limits
- Use background jobs for heavy operations (not synchronous API calls)
- Enable Redis caching for frequently accessed data
- Review slow query logs via the database analyzer tool
Frappe Cloud DevOps Tools
| Tool |
Purpose |
| Log Browser |
View application logs, error logs, scheduler logs |
| Database Analyzer |
Run SQL queries, view slow queries, analyze indexes |
| Binlog Browser |
View database change logs (binary log events) |
| SSH Access |
Terminal access to private benches for debugging |
| Process Status |
View running workers, scheduler status, job queue |
Analytics Integrations
Frappe Cloud sites can connect to external analytics tools:
- Frappe Insights (native)
- Power BI (via API)
- Metabase (via database connection)
- Custom dashboards (via Frappe API)
Reference Files
| File |
Contents |
| examples.md |
Cloud deployment workflow examples |
| anti-patterns.md |
Common Frappe Cloud mistakes and fixes |
1---2name: frappe-ops-cloud3description: Use when working with Frappe Cloud, Press API, provisioning sites, or managing benches on Frappe Cloud infrastructure. Prevents failed deployments from misconfigured cloud settings and API misuse. Covers Frappe Cloud dashboard, Press API, site provisioning, bench management, environment variables, cloud-specific limitations. Keywords: Frappe Cloud, Press, cloud API, site provisioning, bench management, FC, frappecloud.4license: MIT5---6
7# Frappe Cloud & Press
8
9Complete reference for Frappe Cloud managed hosting and Press self-hosted alternative.
10
11---
12
13## Quick Reference — Frappe Cloud Concepts
14
15| Concept | Description |
16|---------|-------------|
17| **Site** | A single Frappe instance with its own database, domain, and apps |
18| **Bench** | A shared runtime environment hosting one or more sites with the same app versions |
19| **Server** | The underlying infrastructure (VM) running one or more benches |
20| **Private Bench** | A dedicated bench for a single customer with full control |
21| **Shared Bench** | A Frappe-managed bench shared across multiple sites |
22| **Press** | The open-source platform (AGPL-3.0) that powers Frappe Cloud |
23| **Agent** | Flask application on each server enabling Press-to-site communication |
24
25---
26
27## Decision Tree: Frappe Cloud vs Self-Hosted
28
29```
30Choosing hosting strategy:
31├── Small team, want zero ops overhead?
32│ └── Frappe Cloud (Shared Bench) — fastest time to production
33├── Need custom server configuration?
34│ ├── Budget for managed infra? → Frappe Cloud (Private Bench)
35│ └── Want full control? → Self-hosted with bench
36├── Need to host Frappe for multiple clients?
37│ ├── Want managed platform? → Frappe Cloud
38│ └── Want own platform? → Self-hosted Press
39├── Regulatory/compliance — data must stay on-premises?
40│ └── Self-hosted (bench or Press)
41└── Development/testing environment?
42 ├── Quick prototype → Frappe Cloud (free trial)
43 └── Long-term dev → Local bench installation
44```
45
46---
47
48## Frappe Cloud Overview
49
50Frappe Cloud is a fully managed hosting platform for the Frappe stack. It handles server provisioning, backups, updates, monitoring, and scaling.
51
52### Core Features
53
54| Feature | Details |
55|---------|---------|
56| **Automated backups** | Scheduled daily backups with retention policies |
57| **Automatic updates** | Managed update cycles for Frappe apps |
58| **Scaling** | Horizontal and vertical scaling without downtime |
59| **Multi-tenancy** | Multiple independent sites per bench |
60| **SSL/TLS** | Automatic certificate provisioning and renewal |
61| **Monitoring** | Real-time server and site monitoring |
62| **Role-based access** | Granular permissions for team members |
63| **Billing** | Daily/monthly subscriptions, wallet credits, multiple payment methods |
64
65### Infrastructure Options
66
67| Option | Use Case |
68|--------|----------|
69| **Shared Bench** | Cost-effective for small sites; Frappe manages the bench |
70| **Private Bench** | Dedicated environment; custom app versions and update schedules |
71| **Dedicated Server** | Full server for high-traffic or compliance requirements |
72
73---
74
75## Frappe Cloud Dashboard
76
77### Site Management
78
79The dashboard provides centralized control for all site operations:
80
81- **Create sites** — Provision new sites on shared or private benches
82- **Install/remove apps** — Add or remove Frappe apps from sites
83- **Backups** — Manual and scheduled backups, restore from backup
84- **Domain management** — Add custom domains with automatic SSL
85- **Site config** — Edit `site_config.json` via the dashboard
86- **Monitoring** — View CPU, memory, disk usage, and request logs
87- **Site actions** — Migrate, update, suspend, archive, or transfer sites
88
89### Bench Management
90
91- **Create benches** — Set up shared or private benches
92- **App management** — Select apps and their versions/branches
93- **Update scheduling** — Control when benches receive updates
94- **Environment variables** — Set custom environment variables
95- **SSH access** — Connect to bench via SSH for debugging
96- **Log browser** — View application and error logs
97- **Database access** — Query the database via the dashboard
98
99### Server Management
100
101- **Provision servers** — Create servers across multiple cloud providers
102- **Scale resources** — Upgrade CPU, memory, and storage
103- **Storage add-ons** — Attach additional storage volumes
104- **Server snapshots** — Create and restore server snapshots
105
106---
107
108## Deploying Apps on Frappe Cloud
109
110### Adding a Custom App
111
1121. Navigate to **Apps** in the Frappe Cloud dashboard
1132. Click **Add App** and provide the GitHub repository URL
1143. Select the branch to deploy
1154. Configure build settings if needed
1165. The app becomes available for installation on sites within compatible benches
117
118### App Marketplace
119
120Frappe Cloud includes a marketplace where developers can:
121
122- List apps with descriptions and pricing
123- Set compatibility requirements (Frappe version, dependencies)
124- Configure pricing models (free, one-time, subscription)
125- Manage payouts for commercial apps
126- Track installations and usage analytics
127
128### Deployment Workflow
129
130```
131Developer pushes code → Frappe Cloud detects update →
132 Bench rebuild triggered → Assets compiled →
133 Sites migrated → New version live
134```
135
136**For Private Benches**: Updates are controlled by the bench owner — NEVER auto-deployed without approval.
137
138**For Shared Benches**: Frappe manages the update schedule.
139
140---
141
142## Site Provisioning Workflow
143
144### Creating a New Site
145
1461. **Select bench** — Choose shared or private bench
1472. **Choose plan** — Select resource allocation (CPU, memory, storage)
1483. **Configure apps** — Select which apps to install
1494. **Set domain** — Use `*.frappe.cloud` subdomain or custom domain
1505. **Create** — Frappe Cloud provisions the site (typically under 5 minutes)
151
152### Custom Domain Setup
153
1541. Navigate to site **Domains** in the dashboard
1552. Add your custom domain (e.g., `erp.example.com`)
1563. Configure DNS: Add a **CNAME** record pointing to the Frappe Cloud proxy
1574. Frappe Cloud verifies DNS and provisions SSL certificate automatically
1585. **ALWAYS** wait for DNS propagation before expecting SSL to work (up to 48 hours)
159
160### Critical Rules
161
162- **ALWAYS** use CNAME records for custom domains (not A records)
163- **NEVER** transfer DNS to Frappe Cloud — only add CNAME records
164- **ALWAYS** verify SSL is active before switching production traffic
165- Custom domain SSL uses Let's Encrypt — auto-renews before expiry
166
167---
168
169## Frappe Cloud vs Self-Hosted Comparison
170
171| Aspect | Frappe Cloud | Self-Hosted (bench) | Self-Hosted (Press) |
172|--------|:------------:|:-------------------:|:-------------------:|
173| **Setup time** | Minutes | Hours | Days |
174| **Server management** | Managed | You manage | You manage |
175| **Backups** | Automatic | Manual/cron | Automatic |
176| **Updates** | Managed schedule | `bench update` | Managed via Press |
177| **SSL certificates** | Automatic | Manual/certbot | Automatic |
178| **Scaling** | Dashboard button | Manual | Dashboard |
179| **Multi-tenancy** | Built-in | DNS multi-tenant | Built-in |
180| **Cost** | Subscription | Infrastructure only | Infrastructure only |
181| **Custom server config** | Limited | Full control | Full control |
182| **Data sovereignty** | Frappe's infra | Your infra | Your infra |
183| **SSH access** | Private bench only | Full | Full |
184| **Monitoring** | Built-in | Set up yourself | Built-in |
185| **Support** | Included | Community only | Community only |
186
187---
188
189## Press: Self-Hosted Frappe Cloud
190
191### What Is Press?
192
193Press is the open-source platform (AGPL-3.0) that powers Frappe Cloud. Organizations can self-host Press to create their own managed hosting platform for Frappe applications.
194
195**GitHub**: `https://github.com/frappe/press`
196
197### Architecture
198
199| Component | Technology | Role |
200|-----------|-----------|------|
201| Press | Frappe Framework | Platform management, billing, dashboard |
202| Agent | Flask | Server-to-site communication |
203| Docker | Container runtime | App packaging and deployment |
204| Ansible | Automation | Server provisioning and configuration |
205| Frappe UI | Vue.js | Dashboard frontend |
206
207### Key Capabilities
208
209- **Multi-server management** — Provision and manage multiple servers
210- **Site lifecycle** — Create, update, migrate, backup, restore, archive sites
211- **Bench management** — Deploy benches with specific app versions
212- **Billing system** — Subscriptions, invoicing, wallet credits, ERP integration
213- **Marketplace** — App listing, pricing, payouts
214- **Role-based access** — Granular permissions per team and resource
215- **Monitoring** — Real-time metrics and alerting
216
217### When to Self-Host Press
218
219- You need to host Frappe for multiple clients/tenants
220- You want a managed platform but on your own infrastructure
221- You need full data sovereignty and regulatory compliance
222- You want to offer Frappe hosting as a service
223
224### When NOT to Self-Host Press
225
226- **NEVER** self-host Press for a single site — use bench directly
227- **NEVER** self-host Press without dedicated DevOps capacity
228- **NEVER** underestimate the operational overhead — Press itself requires maintenance
229
230### Self-Hosting Requirements
231
232- Dedicated servers (bare metal or VMs) with Ubuntu
233- DNS management for wildcard domains
234- Object storage for backups (S3-compatible)
235- SMTP service for transactional email
236- Familiarity with Ansible, Docker, and Frappe Framework
237
238---
239
240## Frappe Cloud Limitations
241
242### What You CANNOT Do on Frappe Cloud
243
244- Install system-level packages (no root access on shared benches)
245- Modify Nginx/Supervisor configuration directly
246- Access raw database files (only SQL access via dashboard)
247- Run long-running background processes outside Frappe's job queue
248- Use non-standard ports or protocols
249
250### Shared Bench Limitations
251
252- No SSH access
253- No custom environment variables (use site_config.json instead)
254- Shared resources with other sites — performance may vary
255- Update schedule controlled by Frappe (not the site owner)
256
257### Private Bench Advantages Over Shared
258
259- SSH access for debugging
260- Custom environment variables
261- Controlled update schedule
262- Dedicated resources
263- Custom app versions and branches
264
265---
266
267## Frappe Cloud Best Practices
268
269### Site Configuration
270
271- **ALWAYS** set `maintenance_mode` before large data imports
272- **ALWAYS** use the dashboard for site config changes (not direct file edits)
273- **NEVER** disable scheduler on Frappe Cloud — use `pause_scheduler` instead
274- **ALWAYS** test app updates on a staging site before production
275
276### Backup Strategy
277
278- Frappe Cloud creates automatic daily backups
279- **ALWAYS** create a manual backup before major changes
280- **ALWAYS** download and store backups off-platform periodically
281- **NEVER** rely solely on Frappe Cloud backups — maintain your own copies
282
283### Performance
284
285- Monitor site usage via the dashboard — upgrade plan before hitting limits
286- Use background jobs for heavy operations (not synchronous API calls)
287- Enable Redis caching for frequently accessed data
288- Review slow query logs via the database analyzer tool
289
290---
291
292## Frappe Cloud DevOps Tools
293
294| Tool | Purpose |
295|------|---------|
296| **Log Browser** | View application logs, error logs, scheduler logs |
297| **Database Analyzer** | Run SQL queries, view slow queries, analyze indexes |
298| **Binlog Browser** | View database change logs (binary log events) |
299| **SSH Access** | Terminal access to private benches for debugging |
300| **Process Status** | View running workers, scheduler status, job queue |
301
302### Analytics Integrations
303
304Frappe Cloud sites can connect to external analytics tools:
305- Frappe Insights (native)
306- Power BI (via API)
307- Metabase (via database connection)
308- Custom dashboards (via Frappe API)
309
310---
311
312## Reference Files
313
314| File | Contents |
315|------|----------|
316| [examples.md](references/examples.md) | Cloud deployment workflow examples |
317| [anti-patterns.md](references/anti-patterns.md) | Common Frappe Cloud mistakes and fixes |