Installing ERPNext version 15 on Ubuntu 23+

ERPNext 15 has been released, and here the updated installation document. Ubuntu becomes the de-facto OS for ERPNext hosting. These are the steps to install Frappe & ERPNext

 · 4 min read

( If Ubuntu version of your instance is 20+, most probably your Python is 3.8 and node is 12. For Frappe and ERPNext version 14, it is mandatory to have Python 3.10 and Node 16+. We have explained the upgrading procedures in this document ( . Use that document to prepare server. Please do that and come back here to continue. If you are not sure about Ubuntu version please type this command cat /etc/os-release )

Download Number 15 Fifteen Royalty-Free Vector Graphic - Pixabay

**A video version we previously uploaded for Version 14 can tremendously help on ERPNext version 15 also. Please watch it here. ( )

**If you are using beta version of version-15 , ( bench switch-to-branch version-15 frappe erpnext --upgrade

bench update --patch --reset

bench update --reset


( commands are in blue letters )

apt-get update -y

init 6  ( will restart )

sudo apt-get install python3-dev python3.11-dev python3-setuptools python3-pip python3-distutils software-properties-common xvfb libfontconfig wkhtmltopdf libmysqlclient-dev -y

sudo apt-get install python3.11-venv -y

sudo apt install python-is-python3 -y

Test python installation and version at this stage

python3 -V ( result Python 3.11.X )

python -V ( resulat Python 3.11.X )

--------------Node 21 installation ---------

sudo apt install -y ca-certificates curl gnupg

sudo mkdir -p /etc/apt/keyrings

curl -fsSL | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg

echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list

sudo apt update

sudo apt install nodejs -y

node --version



apt-get install nodejs redis-server -y

apt-get install cron git -y

Test NODE version at this stage, to make sure you have properly installed Node-16

node --version ( result must be above : v20.XXX )

npm install -g yarn

npm install -g npm@10.2.4 ( this may vary, check the output of previous command )

Check NPM version at this statem and make sure you installed npm properly

npm --version ( result must be above : 9.XX.X )

Install Mariadb

apt-get install mariadb-server mariadb-client -y

check MariaDB version here

mariadb --version ( result must be mariadb Ver 15.1 Distrib 10.6.7-MariaDB, )

Set Mariadb security features correct


Enter current password for root (enter for none): Press your [Enter] key, there is no password set by default

Switch to unix_socket authentication N

Set root password? [Y/n] Y

New password:

Re-enter new password:

Remove anonymous users? [Y/n] Y

Disallow root login remotely? [Y/n] Y

Remove test database and access to it? [Y/n] Y

Reload privilege tables now? [Y/n] Y

Set Mariadb formats.

vim /etc/mysql/mariadb.conf.d/erpnext.cnf

Add these lines





character-set-client-handshake = FALSE

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci


default-character-set = utf8mb4

systemctl restart mariadb

Next, we are going to create a user called "erpgulf" . Set its password, usermod, and sudo prvilege.

useradd -m -s /bin/bash erpgulf

passwd erpgulf

usermod -aG sudo erpgulf

su - erpgulf

Now you are inside the new user. Now let us set it's path.

vim ~/.bashrc

add this line


source ~/.bashrc

su - erpgulf

sudo mkdir /opt/bench

sudo chown -R erpgulf:erpgulf /opt/bench

cd /opt/bench

yarn add node-sass

Check yarn and node-sass at this point

yarn --version ( result must be:1.22.19 )

/opt/bench/node_modules/.bin/node-sass -v ( result must be: node-sass 9.0.1 (Wrapper) [JavaScript]

libsass 3.5.5 (Sass Compiler) [C/C++] )

npm node-sass -v ( Result must be: 8.19.1 )

Check pip3 version

pip3 -V ( Result must be pip 23.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10) )

pip -V ( Result must be pip 23.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10) )

Now we are entering to Frappe installation. Before that finish all the following tests ( in violet letters ) . Otherwise installation will fail


python -V ( result Python 3.11.4 )

node --version ( result must be : v20.17.0 )

npm --version ( result must be : 9.8.1 )

mariadb --version ( result must be mariadb Ver 15.1 Distrib 10.6.7-MariaDB, )

yarn --version ( result must be:1.22.19 )

/opt/bench/node_modules/.bin/node-sass -v ( result must be: node-sass 9.0.1 (Wrapper) [JavaScript] libsass 3.5.5 (Sass Compiler) [C/C++] )

npm node-sass -v ( Result must be: 9.8.1 )

pip3 --version ( Result must be pip 23.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10) )

pip --version ( Result must be pip 23.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10) )

redis-server --version (Redis server v=7.0.16 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=a3fdef44459b3ad6)

wkhtmltopdf -V ( wkhtmltopdf 0.12.6 )

git -v (git version 2.39.1)


Once you start using pip , you may get error "This environment is externally managed" in that case, either use following command, or use pipx

  1. remove file /usr/lib/python3.x/EXTERNALLY-MANAGED,

sudo apt install pipx

pip3 install frappe-bench ( or pipx install frappe-bench , if you havent removed EXTERNALLY-MANAGED )

sudo apt install python3.10-venv

bench init frappe-bench --frappe-branch version-15

cd frappe-bench

 sed -i '/web:/ s/$/ --noreload/' Procfile

pip3 install honcho

 bench start &

While you are running the above command , you can see below

* Running on

14:29:30 web.1      | * Running on (Press CTRL+C to quit)

Also, you can telnet to port 8000 to this server from outside.

telnet 8000 ( port will show open )

Press CTRL+C to return to CLI

bench new-site

At this point we have a frappe site running - bench start and you will get the website on port 8000. But ERPNext not yet installed. Let's continue

bench get-app erpnext --branch version-15

bench get-app payments --branch version-15

bench get-app hrms --branch version-15

 bench --site install-app erpnext

( before running hrms, make sure you are running bench in the background. use this command bench start &

bench --site install-app hrms

Now you have ERPNext on port 8000. ( )

You can run the setup-wizard on the browser.

----- NOW deploy it in production mode - on nginx server -------

Continues in this article ( )

Team ERPGulf

The team behind ERPGulf blogs here, expresses their thoughts, shares the experience, often show the frustrations. Contact us on

Ariful islam December 29, 2023

same happening with me as raja

Raja September 25, 2023

After bench start While you are running the above command , you can see below

  • Running on (Is showing..and i can access erpnext by

14:29:30 web.1 | * Running on (my vm ip) (Press CTRL+C to quit) -- This is not coming..which results i cannot access erpnext from any other system in my network. even inside vm i cannot access using ip address. pls help to solve this

moayad September 14, 2023

after bench --site install-app hrms Installation for Frappe HR app failed due to an error. Please try re-installing the app or report the issue

Add Comment