Hello everyone,
I am setting up a self-hosted Frappe Press environment and would like some guidance regarding the recommended versions and installation procedure.
My goal is to have a production environment where Press manages multiple Frappe sites, including Frappe v16 sites.
I have already built and tested a Press environment, but I would like to validate whether the versions and installation approach I used are still recommended.
The environment I initially used was:
-
Ubuntu 22.04
-
Python 3.10.12
-
Frappe v15
-
Bench 5.31.0
-
Node.js 20.20.2
-
npm 10.8.2
-
Yarn 1.22.22
-
MariaDB 10.6.23
-
Nginx 1.18.0
-
Supervisor 4.2.1
-
Press 0.7.0
I followed the Local Frappe Cloud / Press setup documentation and created a separate environment for:
-
Press
-
Docker/Build Server
-
Database Server
-
Monitor Server (Prometheus/Grafana/Node Exporter)
-
Log Server
I also configured:
-
SSH access between Press and the managed servers
-
Ansible with passwordless sudo
-
Docker Registry
-
App Sources and App Releases
-
Release Groups
-
Deploy Candidates
-
Standalone Server
-
Wildcard DNS
-
Wildcard TLS certificate
-
Prometheus monitoring
-
Alert rules
-
Log Server
During the setup I had to make several manual adjustments. For example:
-
A private GitHub repository could not be cloned correctly using the GitHub Access Token configured in Press, so I had to adjust
app_source.pyso that the token was also used when no GitHub App installation ID was configured. -
When using a Standalone Server, Press still tries to create an
Add Site to Upstreamjob against a Proxy Server on every new site, even though none is used in Standalone mode. This job fails silently and leaves the site marked as “Pending” in the dashboard — cosmetic only, the site actually works fine behind it. I patchedprocess_new_site_job_updateinsite.pyso the status reflects reality whenis_standaloneis set. -
Scheduled Press jobs were not synchronized automatically in the database. I had to run
sync_jobs()manually to populate the Press Scheduled Job Types. -
Any server trying to reach its own public domain from inside the same network gets refused by the router (classic NAT hairpin/loopback). This is expected behavior for any self-hosted setup behind NAT — not a Press bug — but it’s worth mentioning since Press’s internal HTTP calls (server-to-server, not from the visitor’s browser) surface it in a few different places: the Press server reaching sites for “Login as Administrator”, and the Monitor Server reaching the managed servers for scraping. I had to configure internal DNS resolution (dnsmasq /
/etc/hosts) on each affected server so it resolves those hostnames to the private IP instead of the public one. -
I also had to manually configure the wildcard TLS certificate because the DNS provider was configured as Generic and the wildcard certificate required DNS-01 validation (Press only automates this with AWS Route 53 configured).
The environment eventually worked, including site creation, deployment, monitoring and TLS.
However, I am concerned that some of these adjustments may indicate that I am using an outdated installation procedure or an incompatible combination of versions.
So I would like to ask:
Recommended versions
What is currently the recommended/stable combination of:
-
Press
-
Press Agent
-
Bench
-
Python
-
Node.js
-
MariaDB
-
Redis/Valkey
-
Docker
specifically for a new self-hosted production Press installation?
Installation
Is there currently a recommended installation procedure for a new self-hosted Press environment?
Should Press be installed from a specific release/tag, or is develop recommended?
Is the Local Frappe Cloud setup documentation still the recommended approach for production installations, or is there a more complete environment/architecture reference (beyond the initial setup steps) that covers day-2 operations, monitoring and log server configuration?
Architecture
For a production installation, is the following architecture recommended?
Press Server
→ Proxy Server (Nginx + Agent)
→ Application Server (Docker + benches)
→ Database Server (MariaDB)
I also set up two additional VMs for:
-
Monitor Server
-
Log Server
Or is there a newer/recommended architecture?
I would especially appreciate feedback from people currently running self-hosted Press in production.
I would like to rebuild the environment using the currently supported versions and avoid carrying forward workarounds that may only have been necessary because my original installation was based on older versions.
Documentation I used:
.docs.frappe.io/cloud/local-fc-setup
.frappe.io/support-versions
.frappe.io/press
.docs.frappe.io/framework/user/en/installation
Thank you!