Deployment guide

ERPNext

Overview

ERPNext is a leading open-source Enterprise Resource Planning (ERP) suite, built on the Frappe framework. It brings accounting, inventory and stock, sales and purchasing, CRM, manufacturing, projects, HR and payroll together in one self-hosted web application, with 100 percent data ownership.

This SecureAnyCloud image installs ERPNext (Frappe version-15) as a full production deployment. The entire headless install runs at build time, so there is no command-line bootstrap on first use. The image rotates the Administrator password and the Frappe encryption key on the first boot of every VM.

What you get:

  • ERPNext on Frappe version-15, served on port 80 by nginx in front of gunicorn web workers
  • MariaDB on loopback (Barracuda / utf8mb4 / large packets per Frappe), with its data directory on a dedicated Azure data disk
  • Redis for cache, queue and socketio, with supervisor managing the Frappe web, worker, schedule and socketio processes
  • A dedicated Azure data disk at /var/lib/erpnext for the MariaDB database and the entire Frappe bench
  • A unique Administrator password and a fresh Frappe encryption key, generated on first boot
  • nginx.service, supervisor.service, mariadb.service and redis-server.service as enabled, active systemd units
  • 24/7 SecureAnyCloud support

Prerequisites

You need an active Azure subscription, an SSH key pair, and a VNet with a subnet in the target region.

Standard_B4ms (4 vCPU / 16 GiB RAM) is a good starting size for ERPNext.

Configure the network security group (NSG) to allow inbound 22/tcp from your management network and 80/tcp for the ERPNext web interface. For public exposure, front the site with TLS (see Enabling HTTPS).

Step 1 - Deploy from the Azure Marketplace

Sign in to the Azure Portal, choose Create a resource, search the Marketplace for ERPNext by SecureAnyCloud, and select Create.

On the Basics tab, pick your subscription, resource group, region and size. Under Administrator account, choose SSH public key and paste your key. Under Inbound port rules, allow SSH (22) and HTTP (80).

Review the dedicated data disk on the Disks tab, then select Review + create and Create.

Step 2 - Deploy from the Azure CLI

# Accept the Marketplace terms once per subscription (required before the first CLI deploy)
az vm image terms accept --urn sac1647283583153:erpnext-ubuntu-24-04:default:latest
az vm create \
  --resource-group <your-rg> \
  --name erpnext \
  --image sac1647283583153:erpnext-ubuntu-24-04:default:latest \
  --size Standard_B4ms \
  --admin-username azureuser \
  --ssh-key-values ~/.ssh/id_ed25519.pub \
  --vnet-name <your-vnet> --subnet <your-subnet> \
  --public-ip-sku Standard
az vm open-port --resource-group <your-rg> --name erpnext --port 80 --priority 1010

Step 3 - Connect to your VM

Connect over SSH as azureuser:

ssh azureuser@<vm-public-ip>

Step 4 - Confirm the ERPNext stack is running

On first boot, ERPNext regenerates its Frappe encryption key, sets a unique Administrator password, points the site at this VM's public IP and starts the production stack. Check the four services:

systemctl is-active mariadb redis-server supervisor nginx

All four services report active.

Confirm that the Frappe web tier answers its health endpoint:

curl -s http://127.0.0.1/api/method/ping

Frappe returns {"message":"pong"}.

Step 5 - Retrieve the Administrator password

Each VM generates its own Administrator password on first boot and writes it to a root-only credentials file. Read the file with:

sudo cat /root/erpnext-credentials.txt

The file contains the site URL, the Administrator login and the unique password for this VM.

Step 6 - Sign in to ERPNext

Browse to http://<vm-public-ip>/ and sign in as Administrator with the password from Step 5.

Step 7 - Complete the setup wizard

On first sign-in, ERPNext runs a short setup wizard. Choose your language and region, then enter your company name, default currency and fiscal year. ERPNext provisions the chart of accounts and default settings for you.

Step 8 - Explore the workspace desk

After setup, you land on the ERPNext desk, the workspace home. The left rail lists modules for Accounting, Selling, Buying, Stock, CRM, HR and more.

Step 9 - Open a module

Open a module such as Stock or Accounting to reach its list views, reports and shortcuts. From here you can create items, customers, suppliers, invoices and stock entries.

Data on the dedicated data disk

The MariaDB data directory and the entire Frappe bench live on a dedicated Azure data disk mounted at /var/lib/erpnext. The bench includes the sites/ directory, with the site database config, the encryption key and uploaded files. All of your ERP data is therefore on a separate volume that you can snapshot independently. Confirm the mount:

df -h /var/lib/erpnext; ls /var/lib/erpnext

Enabling HTTPS

For public exposure, front ERPNext with TLS. Point a DNS A record at the VM's public IP, then issue a certificate with Certbot and the nginx plugin. Run Certbot interactively:

sudo apt-get update && sudo apt-get install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.example.com

Certbot edits the Frappe nginx site in place and sets up automatic renewal. Allow 443/tcp in your NSG.

Maintenance

The OS keeps receiving security updates through unattended-upgrades. Update ERPNext, Frappe and the installed apps with bench as the frappe user: sudo -u frappe -H bash -lc 'cd /var/lib/erpnext/frappe/frappe-bench && bench update'.

Take a snapshot of the data disk before any upgrade. Review the ERPNext release notes before you apply a major version upgrade.

Support

This image is published and supported by SecureAnyCloud. ERPNext and Frappe are trademarks of their respective owners. SecureAnyCloud is not affiliated with or endorsed by the ERPNext or Frappe projects. For assistance, contact SecureAnyCloud support.

Deploy on Azure

Launch ERPNext on Ubuntu 24.04 LTS on Azure with 24/7 support from SecureAnyCloud.

View this image

Need Help?

Our support team is available 24/7.

sales@secureanycloud.com

Deploy on Azure