How to Install ERPNext on Ubuntu 26.04

How to Install ERPNext on Ubuntu 26.04

ERPNext is one of the best open-source ERP systems you will ever see. Unlike traditional ERP systems, which are often expensive and rigid, ERPNext offers greater flexibility at a more affordable cost, making it suitable for businesses of all sizes. ERPNext is built using Python and MySQL as the database backend. It is a free, open-source software that you can use to manage your business. ERPNext has a Model-View-Controller architecture that, together with metadata modeling tools, provides flexibility: users can customize the system to their unique business goals without requiring custom programming. In this article, we will show you how to install ERPNext on Ubuntu 26.04.

Prerequisites

Conventions

# – given commands should be executed with root privileges either directly as a root user or by use of sudo command
$ – given commands should be executed as a regular user

Step 1. Update the System

First of all, we need to log in to our Ubuntu 26.04 VPS through SSH:

ssh root@IP_Address -p Port_number

Replace “root” with a user that has sudo privileges. Additionally, replace “IP_Address” and “Port_Number” with your server’s respective IP address and SSH port number. Next, let’s make sure that we’re on Ubuntu 26.04. You can verify it with this command:

# lsb_release -a

You should get this as the output:

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu Resolute Raccoon 
Release:        26.04
Codename:       resolute

Then, run the following command to make sure that all installed packages on the server are updated to their latest available versions:

# apt update 

That’s it, the system package information should be updated now.

Step 2. Install Dependencies

Almost every package we install relies on other packages to run properly or to enable installation. Before proceeding with the other steps, we need to install the dependencies.

# apt install ca-certificates curl gnupg git sudo python3-dev default-libmysqlclient-dev build-essential pkg-config software-properties-common xvfb libfontconfig pkg-config redis-server

Step 3. Add a System User

Let’s create a new system user called ‘frappe’, run this command:

# adduser frappe

You will be prompted to create a password. Make sure to use a strong password when prompted.

Step 4. Add User to Sudoer

On Debian systems, administrative privileges are typically granted by adding users to the sudo group. To give a regular user full sudo access (i.e., the ability to run commands as root with sudo), add them to the sudo group using one of these commands:

# usermod -aG sudo frappe

Step 5. Install Python

Note: Frappe v16 officially requires Python 3.14, and it’s officially recommended to install and manage Python virtual environments using the new uv package manager. In Frappe v15 and earlier versions, we used the standard pip package manager and venv for managing virtual environments. This still works, but we will follow the official guidelines and use UV as follows:

# su - frappe
$ curl -LsSf https://astral.sh/uv/install.sh | sh
$ source ~/.bashrc
$ uv python install 3.14 --default

Step 6. Install wkhtmltopdf

Frappe uses the wkhtmltopdf library to generate PDF documents. This is an outdated library, so Frappe v16 now also supports Chrome-based PDF generation. However, for compatibility purposes, we will still install wkhtmltopdf.

$ sudo wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_amd64.deb
$ sudo dpkg -i wkhtmltox_0.12.6.1-2.jammy_amd64.deb

You will see an error message. Let’s fix it with the command below:

$ sudo apt-get -f install -y

Step 7. Install MariaDB Server

Frappe v16 required MariaDB 11.8 or higher. In this step, we will install the MariaDB server, then secure the installation

$ sudo apt install mariadb-server mariadb-client -y

Once installed, we need to run the command below to create a password for our MySQL root user.

$ sudo mariadb-secure-installation 

Follow the steps and type the password when you are prompted to create a new one. Make sure to create a strong password.

Then, let’s edit the MariaDB config file.

$ sudo nano /etc/mysql/my.cnf

Insert these lines into the file.

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
[mysql]
default-character-set = utf8mb4

Restart MariaDB to apply the changes.

$ sudo systemctl restart mariadb

Step 8. Install Node, NPM, and Yarn

At the moment, Frappe 16 is the latest version available to install, and it requires Node 24. We will install it using Node Version Manager (nvm) as follows:

$ cd /home/frappe-user
$ curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
$ source ~/.profile
$ nvm install 24
$ nvm use 24

Then, we need to install the Node Package Manager.

$ sudo apt install npm -y

Finally, we can install yarn

$ sudo npm install -g yarn

Step 9. Install Frappe Bench

According to the documentation, Frappe v16 now uses the uv package manager to install Bench.

$ uv tool install frappe-bench

Check if the bench is correctly installed by running bench –version

When Frappe Bench is initialized, it creates a folder. We can consider this folder a container for all the sites and apps we will install later. Let’s initialize now.

$ cd /home/frappe
$ bench init --frappe-branch version-16 frappe-bench

Then, we can allow execution permission to the Frappe user’s home directory.

$ sudo chmod -R o+rx /home/frappe/

Step 10. Create a New Site

We still need to execute the commands as the ‘frappe’ user.

$ cd /home/frappe/frappe-bench/
$ bench new-site erpnext.yourdomain.com

The system will ask you for the MySQL root password. You will also need to create a password for your ‘Administrator’ user in this step.

Step 11. Set up Production Environment

We will enable the scheduler and turn off the maintenance mode.

$ bench --site erpnext.yourdomain.com enable-scheduler
$ bench --site erpnext.yourdomain.com set-maintenance-mode off

As informed earlier, Frappe 16 uses the uv package manager. So, in this step, we will install Ansible, then run the bench setup commands.

$ sudo apt install -y ansible
$ sudo env "PATH=$PATH" bench setup production frappe

The command above will take some time to complete, depending on your network speed.

Now, let’s execute the command below:

$ bench setup nginx

Then, run these commands.

$ sudo ln -sf /home/frappe/frappe-bench/config/supervisor.conf /etc/supervisor/conf.d/frappe-bench.conf
$ sudo supervisorctl reread
$ sudo supervisorctl update
$ sudo supervisorctl restart all
$ sudo supervisorctl status

If everything is okay, you will see a message similar to this after executing the last command above:

frappe-bench-redis:frappe-bench-redis-cache               RUNNING   pid 71944, uptime 0:03:16
frappe-bench-redis:frappe-bench-redis-queue               RUNNING   pid 71945, uptime 0:03:16
frappe-bench-web:frappe-bench-frappe-web                  RUNNING   pid 71946, uptime 0:03:16
frappe-bench-web:frappe-bench-node-socketio               RUNNING   pid 71947, uptime 0:03:16
frappe-bench-workers:frappe-bench-frappe-long-worker-0    RUNNING   pid 71960, uptime 0:03:16
frappe-bench-workers:frappe-bench-frappe-schedule         RUNNING   pid 71948, uptime 0:03:16
frappe-bench-workers:frappe-bench-frappe-short-worker-0   RUNNING   pid 71954, uptime 0:03:16

Step 12. Install ERPNext

In this step, we will download the apps from GitHub and install them on our ERPNext website.

cd /home/frappe/frappe-bench
$ bench get-app --branch version-16 erpnext
$ bench get-app --branch version-16 hrms

Finally, we can install the apps now.

$ bench --site erpnext.yourdomain.com install-app erpnext
$ bench --site erpnext.yourdomain.com install-app hrms

To check if they are installed, we can run this command:

$ bench version --format table

The command will show an output like this:

+---------+---------+------------+---------+
| App     | Version | Branch     | Commit  |
+---------+---------+------------+---------+
| erpnext | 16.12.0 | version-16 | ddef35c |
| frappe  | 16.13.0 | version-16 | 8d901c9 |
| hrms    | 16.4.5  | version-16 | 2a9180f |
+---------+---------+------------+---------+

Now you can visit erpnext.yourdomain.com in your favorite browser. You will be prompted for a username and its password to log in. This is the password you created when running the ‘bench new-site’ command in the earlier step above.

Install ERPNext on Ubuntu 26.04

Once logged in, you need to complete the setup wizard steps.

ERPNext installation setup wizard

Fill in the required fields, then continue setting up your account.

ERPNext account setup

Click Next to continue

Organizaiton setup on ERPNext

In this step, you can enter your organization’s details and finalize the setup. Once you are done, you will be shown the menus.

Install ERPNext on Ubuntu 26.04 dashboard

Wrapping Everything Up

That’s it all! You have learned how to install Java 25 on Ubuntu 26.04

Of course, you don’t have to install Java 25 on Ubuntu 26.04 if you have an active service with us, in which case you can simply ask our expert Linux admins to install ERPNext on Ubuntu 26.04 for you. They are available 24×7 and will take care of your request immediately. Managing a website is not just about installation; we can help you optimize it if you have an active service with us.

If you liked this post on how to install ERPNext on Ubuntu 26.04, please share it with your friends or leave a comment below.

Leave a Reply

Your email address will not be published. Required fields are marked *