Install ERPNext on Ubuntu: Bench, Docker & Production

 · 11 min read

Install ERPNext on Ubuntu with bench and Docker, step-by-step guide

"How do I install ERPNext?" is one of the most searched ERPNext questions, and it has a confusing answer because there are four different routes: Frappe Cloud, the Docker easy-install script, a manual bench installation on Ubuntu, and a development setup on your laptop. They are not equal. The right one depends on whether you want a throwaway test, a developer machine, or the system your company will run payroll and GST on.

This guide follows the official Frappe installation documentation and bench README, checked against the current pages. It shows the prerequisites for v15 and v16, the exact bench commands to create a bench and a site, how the Docker route works, and what must be true before you call a server "production". Where a detail depends on your exact setup, we say so rather than guess.

If you are still deciding whether to host it yourself at all, read our comparison of ERPNext hosting cost: Frappe Cloud, self-hosted and partner-managed first. If you want to try ERPNext without installing anything, see our guide to the ERPNext demo and free trial.

Key takeaways

  • Match the stack to the version: v15 runs on Python 3.10 or newer, Node 18 or newer and MariaDB 10.6.6 or newer. v16 needs Python 3.14, Node 24 and MariaDB 11.8, and Frappe recommends Ubuntu 24.04 or newer.
  • The core commands are short: bench init, bench new-site, bench get-app erpnext and bench --site <site> install-app erpnext.
  • For production, Frappe recommends Docker over bare-metal installs. If you still use bench on a server, sudo bench setup production automates the Supervisor and nginx configuration.
  • A running site is not a production site. You also need HTTPS, scheduled backups tested by restoring, a firewall, monitoring and an upgrade plan.

Rather not spend a weekend on server setup?

Tell us your server, user count and country. We will confirm the right version and hosting route in a free 30-minute call.

Plan my installation → WhatsApp us: +91 8089051848

Or email info@nexeves.com

Choose your installation route first

Route Best for Effort Watch out for
Frappe Cloud A business that wants ERPNext running without managing servers Lowest Monthly hosting fee, less control over the server
Docker easy-install script A small team that wants a self-hosted production system on one server Low to medium You still own backups, updates and security
Manual bench on Ubuntu Developers, custom apps, learning how Frappe works Medium to high More moving parts: MariaDB, Redis, Node, Python, Supervisor, nginx
Local development bench Building and testing custom apps on your laptop Medium Not for live company data

Frappe states in its own production guide that it does not recommend installing on bare-metal servers and recommends Docker images for production sites. We follow that advice for most clients who self-host. The manual route below is still the right way to learn the system and to build a development or staging environment.

Step 1: Prepare the Ubuntu server

These are the prerequisites listed in the Frappe installation documentation.

Dependency Frappe v14 / v15 Frappe v16
MariaDB 10.6.6 or newer 11.8
Python 3.10 or newer 3.14
Node.js 18 or newer 24
Redis or Valkey 6 6 or newer
Yarn 1.12 or newer 1.22 or newer
pip 20 or newer 25.3 or newer

Frappe supports macOS and Debian or Ubuntu officially. For v16 it recommends Debian 13 or newer, or Ubuntu 24.04 or newer, because older releases may have problems with some packages. On Windows, use Ubuntu inside WSL for a development bench. Bench also downloads Chromium on its own for PDF generation, and needs cron for scheduled jobs such as backups and certificate renewal.

Start with a clean, updated server and a non-root user with sudo rights, then install the base packages:

sudo apt update
sudo apt install git redis-server libmariadb-dev mariadb-server mariadb-client pkg-config

During the MariaDB installation you may be asked to set the root password. If you are not prompted, run sudo mariadb-secure-installation. Write the password down, because bench asks for it when it creates your site.

Next install Node, Yarn and Python. Frappe recommends nvm for Node and uv for Python:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
# open a new terminal, then:
nvm install 24            # use 18 or newer for v15
npm install -g yarn

curl -LsSf https://astral.sh/uv/install.sh | sh
# open a new terminal, then:
uv python install 3.14 --default   # v15 can use 3.10 to 3.13

The exact installer version numbers change over time, so copy the current lines from the official installation page rather than from any blog, including this one.

Step 2: Install bench and create a bench folder

uv tool install frappe-bench
bench --version

mkdir ~/frappe && cd ~/frappe
bench init my-bench

A "bench" is a folder that holds the Frappe framework, your apps, your sites and the process configuration. Choose the Frappe branch deliberately. If you want v15, pass it explicitly, for example bench init --frappe-branch version-15 my-bench, so you do not end up on a different major version than your apps expect.

Step 3: Create a site and install ERPNext

cd my-bench
bench new-site erp.example.com

bench get-app erpnext --branch version-15      # or version-16, matching your Frappe branch
bench --site erp.example.com install-app erpnext

bench start      # development only

bench new-site asks for the MariaDB root password and an Administrator password. bench get-app downloads the app into the bench, and install-app installs it on the site. Open the site in your browser and the setup wizard asks for your company name, country, currency and fiscal year. Choose the country correctly, because it sets the chart of accounts and tax templates.

Always keep the frappe and erpnext branches on the same major version. Mixing them is the most common reason a fresh install fails with import or migration errors.

Want a production-ready server, not just a working demo?

We install ERPNext with backups, HTTPS, monitoring and the India or GCC localisation your accounts team needs.

Get a production setup quote → WhatsApp us: +91 8089051848

Or email info@nexeves.com

Step 4: Add India or GCC localisation

ERPNext itself does not ship every local compliance feature. For India, GST, e-invoicing and e-way bills come from the India Compliance app, which you install with the same get-app and install-app pattern, on a branch that matches your ERPNext version. Our guide to ERPNext GST setup with India Compliance covers the configuration after installation.

For the GCC, UAE VAT and corporate tax are handled through your chart of accounts and tax templates, and e-invoicing needs a separate readiness plan. Start with our posts on UAE VAT and corporate tax in ERPNext and ZATCA Phase 2 for Saudi businesses.

The Docker route: easy-install script

The bench README describes an "Easy Install" script that uses the official frappe_docker repository and sets up a production-style ERPNext with minimal manual work. The documented usage is:

wget https://raw.githubusercontent.com/frappe/bench/develop/easy-install.py
python3 easy-install.py deploy --email=you@yourdomain.com --sitename=erp.yourdomain.com --app=erpnext

According to the README, the script installs Docker, pulls the containers, sets up bench and a default ERPNext site, generates the database and Administrator passwords and saves them in a passwords.txt file in the home directory of the user who ran it. It uses the email address for a Let's Encrypt certificate, so the site name must be a real domain that already points at your server. There is a --no-ssl option for tests. Read the current README before you run it, since its options evolve, and copy the passwords file to a safe place immediately.

Going to production with bench

If you do use bench on a server, Frappe's guide says that sudo bench setup production automates the two programs a live site needs: Supervisor, which keeps the web, worker and scheduler processes running and restarts them if they crash, and nginx, which serves static files and proxies requests to Frappe. The same guide describes how to generate the configuration manually with bench setup supervisor and bench setup nginx and link the files into the system folders.

Production checklist before real data goes in:

  1. HTTPS. Use the Let's Encrypt guide in the bench documentation, and confirm automatic renewal works.
  2. Backups that you have restored once. Schedule database and file backups, copy them off the server, and rehearse a restore using our ERPNext backup and restore guide.
  3. Security basics. Firewall allowing only SSH, HTTP and HTTPS, SSH keys instead of passwords, MariaDB and Redis not exposed to the internet, and the settings in our post on ERPNext security settings every company should configure.
  4. Scheduler and email. Confirm the scheduler is enabled and outgoing email works, because notifications, auto-repeat and many integrations depend on them.
  5. Monitoring and disk space. Backups and logs fill disks silently. Alert on disk, memory and failed background jobs.
  6. An upgrade plan. Decide who upgrades, when, and on which staging copy. See how to upgrade Frappe and ERPNext safely and our v16 upgrade guide.

Also read common ERPNext server issues and how to prevent them for the problems we see after installation, such as full disks, stopped workers and slow queries.

Common installation errors and what they usually mean

Symptom Usual cause What to check
bench init fails while building assets Node or Yarn version does not match the Frappe version Run node -v and compare with the prerequisites table
Database error during new-site Wrong MariaDB root password, or MariaDB not running or too old Confirm you can log in to MariaDB as root and check its version
App install fails with import errors Frappe and ERPNext on different major versions Check the branch of each app in the bench
Site opens but scheduled jobs and emails do nothing Scheduler disabled or workers not running Check Supervisor status and the site scheduler setting
PDF printing fails Chromium download blocked or incomplete Run bench setup-chrome and check outbound access
Cannot reach the site from outside Firewall, nginx config or DNS Test locally on the server first, then DNS, then firewall

When we recommend not self-installing

If nobody in your company will own the server, a self-installed ERPNext becomes a risk, not a saving. A missed backup, an unpatched server or a failed upgrade lands on the finance team. In that case use Frappe Cloud or a partner-managed server with a support agreement, and spend your effort on process design instead. Our support and AMC plans guide explains what ongoing support should cover.

How Nexeves helps

We install ERPNext for businesses in India and the GCC on their own servers, on managed hosting or on Frappe Cloud, then configure the accounts, GST or VAT, users and backups as part of an ERPNext implementation. If you only need the technical setup done properly, tell us on the contact page.

Frequently asked questions

Which Ubuntu version should I use for ERPNext?

For v16, Frappe recommends Ubuntu 24.04 or newer (or Debian 13 or newer). Frappe v15 has lower minimum versions, but a new server should still start on a current long-term support release so that you are not forced to rebuild it soon.

What are the requirements for ERPNext v15 and v16?

v15 needs Python 3.10 or newer, Node 18 or newer, MariaDB 10.6.6 or newer and Redis 6. v16 needs Python 3.14, Node 24, MariaDB 11.8 and Redis or Valkey 6 or newer, according to the Frappe installation documentation.

How do I install ERPNext with Docker?

Frappe provides a frappe_docker repository and an easy-install script in the bench README that deploys ERPNext with Docker, using a domain name and an email address for HTTPS. Read the current README before running it.

Can I run ERPNext on Windows?

Frappe officially supports macOS and Debian or Ubuntu. On Windows you can use Ubuntu inside WSL for a development bench. Do not use that setup for live company data.

Is a bench installation ready for production after install-app?

No. You still need HTTPS, Supervisor and nginx (for example through bench setup production), tested backups, a firewall, monitoring and an upgrade process. Frappe itself recommends Docker for production.

Should I self-host ERPNext or use Frappe Cloud?

Self-host when you have someone who will own backups, security and upgrades. Otherwise a managed option is usually cheaper once you count the cost of an outage or lost data. Compare the options in our hosting cost guide.

Get ERPNext running safely on your own server

Nexeves installs, hardens and supports ERPNext for businesses in India and the GCC, on your server, our managed hosting or Frappe Cloud.

Book my free setup call → WhatsApp us: +91 8089051848

Or email info@nexeves.com

Nexeves serves India & the GCC: UAE (Dubai, Abu Dhabi), Saudi Arabia (Riyadh, Jeddah), Qatar (Doha), Kuwait, Bahrain and Oman (Muscat).


No comments yet.

Add a comment
Ctrl+Enter to add comment