Installing Press App - Frappe Cloud Local Setup

Not yet. We are still doing configurations and changes especially to the frontend.

How did you install it. Any links?

Hi @BSombi Just follow the guide here: Local Development Environment Setup

It should work for most parts but hopefully they will improve on it more to include things like how to setup analytics.

Thank you.

Hello @mwogi,

Can you please share some info regarding the TLS Certificates with CertBot
I have been trying to setup a frappe/press environment.
So far everything was smooth, I was able to installed and initiate the configuration… but know I’m in the creation of the proxy server

Route53 and Certbot are working fine, but when I try to create a new proxy server on press I got this error “Valid wildcard TLS Certificate not found for domain.name”

1 Like

Check if you have pointed the root domain on Route53 to the right IP address. It should resolve to you IP of your Press server. From what I remember the wildcard TLS certificate was automatically created

1 Like

Can we use other VPS and cloud for this Frappe Press installation?

Yes, should work with any other VPS so long as the server that you have installed press on can SSH into the other nodes.

1 Like

i get this error when try to configure the proxy server:
imagen

1 Like

Hey, your landing is awesome, share a little…

We actually didn’t do much. Just used the website template builder using the ‘Hero with right image’ template

2 Likes

Me too, did you resolve this?

1 Like

Documentation says you’d need at least 3 servers, all for 3 different (f, m, n) purposes. Do you guys have any recommendation for server hardware for each? I’m guessing we don’t need a top level hardware for n server for example, but a top notch one is needed to run f server.

1 Like

why this error?

An error occurred while installing press: Frappe.io URL not set up in Press Settings
Traceback (most recent call last):
File “apps/frappe/frappe/commands/site.py”, line 416, in install_app
_install_app(app, verbose=context.verbose, force=force)
File “apps/frappe/frappe/installer.py”, line 304, in install_app
frappe.get_attr(after_install)()
File “apps/press/press/install.py”, line 10, in after_install
create_administrator_team()
File “apps/press/press/install.py”, line 25, in create_administrator_team
administrator_team.insert()
File “apps/frappe/frappe/model/document.py”, line 285, in insert
self.run_post_save_methods()
File “apps/frappe/frappe/model/document.py”, line 1082, in run_post_save_methods
self.run_method(“on_update”)
File “apps/frappe/frappe/model/document.py”, line 914, in run_method
out = Document.hook(fn)(self, *args, **kwargs)
File “apps/frappe/frappe/model/document.py”, line 1264, in composer
return composed(self, method, *args, **kwargs)
File “apps/frappe/frappe/model/document.py”, line 1246, in runner
add_to_return_value(self, fn(self, *args, **kwargs))
File “apps/frappe/frappe/model/document.py”, line 911, in fn
return method_object(*args, **kwargs)
File “apps/press/press/press/doctype/team/team.py”, line 239, in on_update
self.update_billing_details_on_frappeio()
File “apps/press/press/press/doctype/team/team.py”, line 375, in update_billing_details_on_frappeio
raise e
File “apps/press/press/press/doctype/team/team.py”, line 370, in update_billing_details_on_frappeio
frappeio_client = get_frappe_io_connection()
File “apps/press/press/utils/billing.py”, line 93, in get_frappe_io_connection
frappe.throw(“Frappe.io URL not set up in Press Settings”, exc=FrappeioServerNotSet)
File “apps/frappe/frappe/init.py”, line 525, in throw
msgprint(
File “apps/frappe/frappe/init.py”, line 493, in msgprint
_raise_exception()
File “apps/frappe/frappe/init.py”, line 442, in _raise_exception
raise raise_exception(msg)
press.exceptions.FrappeioServerNotSet: Frappe.io URL not set up in Press Settings

You can comment out this line in team.py

These changes were meant for internal purposes and weren’t removed before we made it open-source.

1 Like

Any one help me on this?

Traceback (most recent call last):
File “apps/frappe/frappe/app.py”, line 66, in application
response = frappe.api.handle()
File “apps/frappe/frappe/api.py”, line 54, in handle
return frappe.handler.handle()
File “apps/frappe/frappe/handler.py”, line 45, in handle
data = execute_cmd(cmd)
File “apps/frappe/frappe/handler.py”, line 83, in execute_cmd
return frappe.call(method, **frappe.form_dict)
File “apps/frappe/frappe/init.py”, line 1607, in call
return fn(*args, **newargs)
File “apps/frappe/frappe/desk/form/save.py”, line 26, in savedocs
doc.save()
File “apps/frappe/frappe/model/document.py”, line 305, in save
return self._save(*args, **kwargs)
File “apps/frappe/frappe/model/document.py”, line 327, in _save
return self.insert()
File “apps/frappe/frappe/model/document.py”, line 276, in insert
self.run_method(“after_insert”)
File “apps/frappe/frappe/model/document.py”, line 914, in run_method
out = Document.hook(fn)(self, *args, **kwargs)
File “apps/frappe/frappe/model/document.py”, line 1264, in composer
return composed(self, method, *args, **kwargs)
File “apps/frappe/frappe/model/document.py”, line 1246, in runner
add_to_return_value(self, fn(self, *args, **kwargs))
File “apps/frappe/frappe/model/document.py”, line 911, in fn
return method_object(*args, **kwargs)
File “apps/press/press/press/doctype/tls_certificate/tls_certificate.py”, line 29, in after_insert
self.obtain_certificate()
File “apps/press/press/press/doctype/tls_certificate/tls_certificate.py”, line 36, in obtain_certificate
get_current_team(),
File “apps/press/press/utils/init.py”, line 44, in get_current_team
frappe.throw(“Invalid Team”, frappe.PermissionError)
File “apps/frappe/frappe/init.py”, line 525, in throw
msgprint(
File “apps/frappe/frappe/init.py”, line 493, in msgprint
_raise_exception()
File “apps/frappe/frappe/init.py”, line 442, in _raise_exception
raise raise_exception(msg)
frappe.exceptions.PermissionError: Invalid Team

You can setup a TLS Certificate with wild card checked.
Go the TLS Certificate List and create one.

PS: You may run into certbot issues, to resolve this make sure you

  1. Uninstall all existing certbot installed with apt

  2. use snap to install certbot and all its dependencies including the route 53 plugin and not apt or pip

Follow the instructions here to install

@oderao I followed your suggestion and installed certbot and the route53 plugin using snap but the TLS certificate request fails in Root Domain setup. The root domain is portal.mydomain.com and it is pointed to the instance that hosts press. If I try to obtain the certificate manually I get index out of range. The Frappe instance is running in development mode hence the url is portal.mydomain.com:8000. Could it be a problem?

This is the full traceback to the index error:

Form/TLS Certificate/*.portal.mydomain.com

Traceback

Traceback (most recent call last):
  File "apps/frappe/frappe/app.py", line 66, in application
    response = frappe.api.handle()
  File "apps/frappe/frappe/api.py", line 54, in handle
    return frappe.handler.handle()
  File "apps/frappe/frappe/handler.py", line 45, in handle
    data = execute_cmd(cmd)
  File "apps/frappe/frappe/handler.py", line 83, in execute_cmd
    return frappe.call(method, **frappe.form_dict)
  File "apps/frappe/frappe/__init__.py", line 1608, in call
    return fn(*args, **newargs)
  File "apps/frappe/frappe/handler.py", line 304, in run_doc_method
    response = doc.run_method(method)
  File "apps/frappe/frappe/model/document.py", line 914, in run_method
    out = Document.hook(fn)(self, *args, **kwargs)
  File "apps/frappe/frappe/model/document.py", line 1264, in composer
    return composed(self, method, *args, **kwargs)
  File "apps/frappe/frappe/model/document.py", line 1246, in runner
    add_to_return_value(self, fn(self, *args, **kwargs))
  File "apps/frappe/frappe/model/document.py", line 911, in fn
    return method_object(*args, **kwargs)
  File "apps/press/press/press/doctype/tls_certificate/tls_certificate.py", line 36, in obtain_certificate
    get_current_team(),
  File "apps/press/press/utils/__init__.py", line 60, in get_current_team
    team = team_dict[0].name
IndexError: list index out of range

Also, frappe 14 seems to have major and significant changes not reflected in the press deployment documentation. This makes it extremely difficult to follow and especially with the way the domain settings is described.

Frappe Press is largely WIP so its very buggy right now

When the root domain setup fails , What is the response? you can check the error logs

Usually it logs all failed attempts in the Error Log

Also have you added a TLS Certificate for the wildcard domain in your case it should be *.mydomain.com
I suggest you do this first before adding a certificate for root domain

The index error you are getting has to do with teams
you have to add a team, go to Teams List and add a default team

@oderao Here is the error logged for the failed TLS Certificate issuance

Exception:
Traceback with variables (most recent call last):
  File "apps/press/press/press/doctype/tls_certificate/tls_certificate.py", line 55, in _obtain_certificate
    ) = ca.obtain(
      self = <TLSCertificate: *.portal.mydomain.com>
      settings = <PressSettings: Press Settings>
      ca = <press.press.doctype.tls_certificate.tls_certificate.LetsEncrypt object at 0x7fc285fca170>
  File "apps/press/press/press/doctype/tls_certificate/tls_certificate.py", line 177, in obtain
    self._obtain()
      self = <press.press.doctype.tls_certificate.tls_certificate.LetsEncrypt object at 0x7fc285fca170>
      domain = 'portal.mydomain.com'
      rsa_key_size = ********
      wildcard = 1
  File "apps/press/press/press/doctype/tls_certificate/tls_certificate.py", line 209, in _obtain
    if not os.path.exists(self.directory):
      self = <press.press.doctype.tls_certificate.tls_certificate.LetsEncrypt object at 0x7fc285fca170>
  File "/usr/lib/python3.10/genericpath.py", line 19, in exists
    os.stat(path)
      path = None
builtins.TypeError: stat: path should be string, bytes, os.PathLike or integer, not NoneType

Is this supposed to be done outside of the Root Domain/Press Settings configuration? The documentation expects the Root Domain setup to be done first and the TLS certificate issuance is attempted barely minutes after the Root Domain setup is done and it fails. I also noticed that the Documentation says to select Default in the Default Cluster field during the Root Domain setup but there is no Default value and creating default requires additional inputs and the documentation does not have any information on what to provide.

I have also added the Team List as you suggested but the TLS certificate issuance is still returning Index out of range error even though a team list is now created.

Any further tips on resolving these will be appreciated.