Knowledgebase

Published WWKNOW guidance for hosting, servers, infrastructure operations, and dependable digital services.

← Back to Knowledgebase

Deploy ERPNext 16 using the official production setup

Use this guide for a new ERPNext 16 deployment. Keep Frappe, ERPNext and custom apps on compatible releases. An existing business database requires a migration and restore procedure; never run a fresh-site installer over it.

1. Prepare a production deployment

  1. Choose a domain, point it to your server and confirm HTTPS can be issued. Keep database and Redis ports private.
  2. Install Docker Engine and the Compose plugin using Docker's official instructions for your operating system. Confirm docker version and docker compose version work.
  3. Use the official frappe/frappe_docker production documentation and its single-server example. Select ERPNext 16-compatible images and dependencies, unique secrets and persistent volumes.
  4. Configure the database, Redis, backend, frontend, WebSocket service, queue workers and scheduler described by that deployment. A web container by itself is not a complete ERPNext installation.

The repository's pwd.yml is a disposable demonstration. Do not use its example passwords or demonstration setup for public production.

2. Start the prepared stack and create a site

After generating and reviewing compose.custom.yaml according to the official setup guide, run these from that deployment directory. Replace erp.example.com with your real site name; it is only a placeholder.

Run each command separately:

docker compose -p frappe -f compose.custom.yaml up -d

docker compose -p frappe -f compose.custom.yaml ps

docker compose -p frappe -f compose.custom.yaml exec backend bench new-site erp.example.com

docker compose -p frappe -f compose.custom.yaml exec backend bench --site erp.example.com install-app erpnext

Enter database and Administrator passwords at the prompts. Follow the official site's database-user host-scope guidance for your private container network. Do not create a public database account to work around a connection error. Do not repeat new-site when the site already exists.

3. Verify the whole application

  • Open the HTTPS domain and sign in as Administrator. Complete the company, country and accounting setup using your own business information.
  • Run bench --site erp.example.com list-apps inside the backend container and confirm ERPNext is installed.
  • Check worker and scheduler containers, recent errors and pending background jobs. An accessible login page does not prove queues work.
  • Save a non-sensitive test record and attachment. Verify them after a new login.

4. Back up before upgrades

Use the site's backup command with files and store a protected off-server copy. Preserve site configuration and encryption keys. Restore into a separate environment with matching app versions before changing production. Major-version upgrades and custom-app migrations need a tested migration path.

If the frontend shows a gateway error, check backend readiness, the configured site name and proxy routing before restarting anything. If jobs remain queued, inspect workers and Redis rather than reinstalling the site.

Next: Backups and restore checks.

Official references

Technical guidance reviewed: 28 October 2026. Match instructions to your actual service and application version.

Was this article useful?

Enterprise Grade Components