Site

My site is in Inactive state, why is it getting billed?

Both "Active" and "Inactive" sites are billed, you have to drop the site in order to suspend billing.

My site is suspended, what do I do?

You can pay your pending invoices to unsuspend your site. You can do the same from the billing section in your Cloud dashboard

What is using up all my database size?

You can see which tables/doctypes are using most space within your site itself. Search for Database storage report in the search bar and you will find report like follows Database Storage report

Clearing logs

More often than not, log tables can take up a lot of space. You can control size of log tables with: Log Settings

It may take upto 1-2 hours for the size change to reflect in your Cloud dashboard

Clearing Comment and Version

It's NOT RECOMMENDED to clear these doctypes as they may be used for auditing purposes, but in the case of test sites, you may wish to do so. In such cases, deleting them from the ORM will be counterintuitive as deleting comment will create another comment saying the comment was deleted (lol). In such cases, deleting them from SQL is probably the easiest way.

Use your own discretion for the above as the application may misbehave

What is the difference between Database and Disk space?

When you create data in your site, for e.g., Sales Invoices it will consume database space. When you upload files and images, it will consume disk space.

You might find database space used on dashboard is higher than your actual database size when you download it on your machine. This is because on Cloud it is sum of space consumed by each table and index of each table. Click here to know more about database indexes .

Space

Files

Database

Database + Indexes

Disk

Public + Private Files


Daily Usage limit reached

If you're confused as to how you reached your usage limit, you can check the analytics tab of your site for past 24 hours. Especially, the Requests Duration By Path and Background Job Duration By Path graphs. This will give you an idea of which endpoints in your site take most time/requests.


Here, the red bars are seem to take relatively long and should be looked into.


It is sorted in descending order, so the first endpoints in the list are usually slowest.

Site Slow: Gateway timeout

This can happen when web workers on your site are all busy with previous requests. This is caused by slow apis. Most of the time these are reports which take too long to run. You can confirm the same from your analytics page as shown above. In such cases you can convert these reports into prepared reports so they run in background and allow you to freely use your site.

What's causing request timed out error?

If a particular action in your site (not all), say submission of a document takes too long and eventually ends with a Request Timed Out popup, it's an application issue assuming normal functioning of the server. In most cases we can't do much other than try increasing the default timeout of 2 minutes of web requests.

Here, the slowness could be in your python application or be due to slow queries .

If the action you're performing is part of your custom app, we'd suggest you look into try and optimizing the code so that it finishes faster. If you're pressed for time, you may also run the particular action from bench console after ssh as a workaround.

If the action is guaranteed to take long, consider converting the same to a background job .

On the off chance that the app is not part of custom app and all other activities in the site are going smoothly, please reach out to ERPNext Support for help.

Request Timeout: Server was too busy to process this request

You run into this error when your queries take way too long to run that it hit the limit of 1 hour. This is not normal. This could be happening as the query may not be optimized. See here on how to handle slow queries.

If you think the query is as optimal as possible, then it is likely that you are using the database server's CPU to its limit. You can confirm the same by looking at the server analytics page in your Cloud dashboard (if you are on dedicated server plan). In such case, there's no choice but to upgrade the same for more CPU.

Destination bench does not have some of the apps installed

If you're updating site on public bench and you face this error with respect to a marketplace app, it's because we've removed certain Marketplace apps from Public Benches. They are still valid Marketplace apps, but due to technical difficulties and low usage, they were taken off of public benches. Please remove the marketplace app if you are not using it or create a Private Bench with the required apps and migrate your site to that Private Bench using this tool

Database Size increased after moving site to dedicated server

You may notice that after moving your site to dedicated server, the database usage of the server will seem higher than what used to be the database usage of your site. This is because when we consider database usage for dedicated servers, we consider the storage used by the entire server not just the database . The difference in size is largely due to the binary logs that we collect.

Row size too large error on migrate

At times, you may see this error upon updating/restoring a site:

pymysql.err.OperationalError: (1118, 'Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs')

TL;DR Convert your custom Data fields to Text

This most often happens in core ERPNext doctypes such as Sales Invoice, Stock Entry, etc. and this happens because of custom fields . There's nothing wrong with adding custom fields for your use case, but due to limits placed by MariaDB , often times, you'll have to make some changes to the same.

As the error message points out, the way to circumvent this error is to change the datatype to TEXT or BLOB. Now, these are datatypes available in MariaDB . In Frappé, these correspond to the following field types:

  • Small Text

  • Text

  • Password

  • Attach

  • Attach Image

You will want to convert your varchar fields into one of the above so that they can be stored in overflow pages in MariaDB as we use the DYNAMIC row format.

Administrator password not working after restoring site

You can login as administrator to your site directly from your Cloud dashboard.


If you still wish to obtain the new administrator password set on your site, you may request for the same through our support portal.

Apps missing after restoring site from backup

You may notice the apps installed in your sites disappear or change after restoring a backup onto the site. This is because restore is a destructive operation. Restoring a backup will completely overwrite the database with the contents of the backup. This includes the apps, and the same gets reflected in your Cloud dashboard.

Cannot embed site in iframe (blocked by X-Frame-Options)

This should ideally be a feature in the framework itself, but until then you may use the following workaround with a private bench. You can use the after_request hook in hooks.py to add a Content-Security-Policy header .

Here’s an example.

def after_request(response):
   response.headers.extend({"Content-Security-Policy": "frame-ancestors https://<site-name>"}) # where <site-name> is the site where you want to embed your frappe.cloud site in

As with any other hook, you’ll need to define it in hooks.py of your custom app. E.g:

after_request = ["custom_app..after_request"]

CORS error when making API requests

If you try to access endpoints of your Cloud site from another site (or localhost ) you will run into this error. To allow cross-origin requests to your site, you need to set allow_cors in your site config to all the sites from which you need to perform the requests.


ref: https://frappeframework.com/docs/user/en/basics/site_config

Scheduler not running in my site

At times, it may seem that the scheduled jobs in your site aren't running at the specified time. This could be due to a lot of things. You can check the status of scheduler within your site by going to RQ Job doctype.

For v13 and lower, you can view Open Background Jobs page for the same.

If scheduler is running, you'll see status like so

You can also check for bench scheduler process if you have a private bench.

Dormant days setting

You should also check Run Jobs only Daily if Inactive For (Days) setting within System Settings as well. All your scheduled jobs will run once daily regardless of their specified frequency when no user logs in to the site in specified number of days.


Need 4096 bit https certificate

You may need a 4096 bit tls certificate for some custom app integration. For this, you need to, first, get a custom domain . This is because the certificate for the frappe.cloud or erpnext.com domains are 2048 bit and is shared by all the sites.

Once you add a custom domain, you can raise a ticket asking to make the same 4096 bit. You can download the public certificate for sharing purposes as seen in this SO answer .

Inbound and Outbound IPs

Often, you may need the IP addresses used by your site for whitelisting or blacklisting reasons.

You can get the same from within your site dashboard under the Overview tab.


When your site makes a request to an external endpoint, the endpoint sees the Outbound IP. This should be used for whitelisting your site's access to some 3rd party service.

Inbound IP is what should be used when adding A records to some DNS service. As the requests to your site go here first.

Page Unresponsive

You may obtain an error with a popup with the above title. In this case, it's not an issue with the server, but rather with the client. This most often results due to a memory shortage on the client side; mostly due to some javascript memory leak. To resolve this, you should review your client scripts or the client side code in your custom app.

How do you get MySQL / MariaDB root password

You don't. You don't need it. If you think you need it to create/delete sites on Cloud, then you're doing it wrong. You're not supposed to use bench commands to do this. You can use the dashboard to perform these actions.

On this page