Skip to main content

Tool · Self-hosting

26 things to check on a self-hosted ERPNext— ERPNext security hardening checklist

A checklist for a Frappe or ERPNext site you run yourself. Each item says why it matters, how to check it, and what to set.

Read from Frappe v16.52.0 and v15.123.0 on 14 October 2026. Nothing you mark leaves your browser.

Your list: 0 of 26 done

0 not yet · 0 not sure · 0 skipped

0 of 26 done. 0 not yet · 0 not sure · 0 skipped.

Who can connect · 0 of 4

What the site trusts · 0 of 3

Signing in · 0 of 3

Accounts and keys · 0 of 4

Backups and recovery · 0 of 5

The server and its files · 0 of 4

Staying current · 0 of 3

Start here

  1. HTTPS everywhere, with a certificate that renews itself
  2. Only 80, 443 and SSH answer from outside
  3. MariaDB listens locally and has no example password
How do you run it?

Fills the commands. Not saved, not sent.

26 things to check, in 7 groups

Show

Showing 26 of 26

Look first: an outsider can use the gap with no account, or the damage cannot be repaired afterwards. Skip means it does not apply to you.

Who can connect

The front door: HTTPS, open ports, the database.

0 of 4 done

HTTPS everywhere, with a certificate that renews itself

Look first

HSTS is sent, and you know what it commits you to

Only 80, 443 and SSH answer from outside

Look first

MariaDB listens locally and has no example password

Look first

What the site trusts

Its own address, other sites, and request limits.

0 of 3 done

Frappe knows its own address: host_name is set

Fix in v15.108.0 and v16.18.3

Cross-site access is off, or limited to named origins

A site-wide request budget is set, or deliberately not

Signing in

The second factor, passwords and lock-out.

0 of 3 done

Two-factor sign-in is on for everyone who uses the desk

The password strength rule is on, and rotation is a decision

Failed-login lock-out and the idle timeout are set on purpose

Accounts and keys

Administrator, System Managers, API keys, uploads.

0 of 4 done

Administrator has its own strong password and is not used daily

Look first

Few people hold System Manager, and leavers are disabled

Each API key belongs to one integration, with only the roles it needs

IP rule applied from v15.120.0 and v16.33.0

Guests cannot upload files unless a web form needs it

Public-upload limit: v16 only

Backups and recovery

Copies that exist, leave the server and restore.

0 of 5 done

Backups run on a schedule, and they include files

Look first

A copy of every backup leaves the server

Look firstv15 in core · v16 as an app

Backups are encrypted, and the key is kept apart from them

You have restored a backup somewhere else, and timed it

Look first

The site's encryption_key is saved apart from the database backups

Look first

The server and its files

Permissions, developer mode, the scheduler, logs.

0 of 4 done

Files that hold secrets are readable only by the bench user

Developer mode is off, and Server Scripts only if you use them

The scheduler is running

Logs are kept long enough to check, and rotate before the disk fills

Staying current

Supported versions and a patch calendar.

0 of 3 done

You run a Frappe version that still gets fixes

Look first

Patch releases are applied on a calendar you can state

The server's own software gets security updates

Where to start, and your list to take away

Your first three to look at are below.

What this checklist answers

What to check on a Frappe or ERPNext site you run yourself, and the exact setting.

It was read from Frappe's own code, docs and advisories, each item with its source. It does not log in to your site, so a tick means you checked, not that we did.

What it rests on

  1. Frappe, bench and frappe_dockerEach item cites the file, page or advisory it came from, with the versions read.
  2. Your own siteYou run each check; the list never connects to it.

What this list is, and what it is not

Four limits to read before you trust a tick, and who made the list.

  1. Read from sourceEach item cites the file, page or advisory it came from. Frappe v16.52.0 and v15.123.0, bench v5.31.0 and frappe_docker v4.0.1, read on 14 October 2026.
  2. Not run on a live siteWe read the code and the docs. A script re-reads them at those versions, but not every command has been run on a live site. Try a command on a copy of your site before you run it on the live one.
  3. Not an auditA checklist, not a scan. It cannot see your site, scores nothing and does not say a site is secure. A tick is your word.
  4. What it leaves outThe server layer (SSH keys, firewall, Fail2ban) is in our Hetzner guide. Permission design, custom apps and legal duties are outside this list.

Who made this

We sell ERPNext support and managed hosting. This list is free and every step is yours to run; hiring us is optional.

The ERPNext check script (read-only) already counts System Managers, the scheduler, logs and versions on your site. Run it on your site

When the answer is a project

When the list is longer than the time you have, these are the next steps.

  • Go through the list on a call

    Share what you ticked; we say which items matter first for your setup.

  • Managed hosting

    Your ERP on servers you own, hardened, patched and watched by us.

  • ERPNext support and AMC

    Fixes, upgrades and monitoring under one contract.

Questions people ask

The one most people ask is answered first. Type to find the rest.

Does ticking every box make my ERPNext secure?

No. It is a checklist, and each item has a source. It cannot see your site, and it does not cover custom apps, permission design or the server's operating system. A tick is your word. Use it to find gaps, then ask for an audit if the data matters.

Your setup

Using the list

Start with one conversation

One message, call or WhatsApp is enough. Every line reaches the team directly.

Team away now