Frappe & ERPNext v16 Installation Ubuntu 25

Step 1: Update

sudo apt update -y && sudo apt upgrade -y

Step 2: Create a Frappe Userr

It’s recommended not to run Bench as root.

sudo adduser frappe_user
sudo usermod -aG sudo frappe_user
su frappe_user
cd /home/frappe_user

You can also use your existing user; just replace frappe_user with your username.

Step 3: Install Dependencies

sudo apt install -y git python3-dev python3-setuptools python3-pip \
python3.14-venv software-properties-common curl build-essential \
pkg-config libmysqlclient-dev python3.14-dev

Step 4: Install MariaDB

sudo apt install -y mariadb-server
sudo mariadb-secure-installation

During setup, recommended options:

  • Enter current password for root: ENTER

  • Switch to unix_socket authentication? Y

  • Change root password? Y

  • Remove anonymous users? Y

  • Disallow root login remotely? N

  • Remove test database? Y

  • Reload privilege tables? Y


Step 5: Configure MariaDB

sudo nano /etc/mysql/my.cnf

Add under [mysqld]:

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

Restart MariaDB:

sudo service mysql restart


Step 6: Install Redis

sudo apt install -y redis-server


Step 7: Install Node.js 24 & Yarn (Frappe v16 requirement)

Remove old Node.js (if any)

sudo apt remove -y nodejs npm
sudo apt autoremove -y

Install prerequisites

sudo apt update
sudo apt install -y curl ca-certificates gnupg build-essential

Install Node.js 24

curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -
sudo apt install -y nodejs

Verify:

node -v  # should show v24.x.x
npm -v

Install Yarn globally

sudo npm install -g yarn
yarn -v  # should show 1.22.x


Step 8: Install PDF Rendering Tools

sudo apt install -y libcairo2 libpango-1.0-0 libpangocairo-1.0-0 \
libgdk-pixbuf-2.0-0 libffi-dev shared-mime-info

Step 9: Install Bench via pipx

sudo apt install -y pipx
pipx ensurepath
source ~/.bashrc
pipx install frappe-bench
pipx install uv
pipx install honcho

Step 10: Initialize Frappe Bench

Use Python 3.14 and Frappe v16 RC:

bench init frappe-bench \
  --frappe-branch v16.0.0 \
  --python python3.14

This resolves Python & Node/Yarn dependencies correctly.


Step 11: Create a New Site

cd frappe-bench
bench new-site yoursite_name

  • Enter MySQL root user: root (or your MySQL user)

  • MySQL root password: your MySQL password

  • Set Frappe Administrator password when prompted


Step 12: Get ERPNext & HRMS Apps (v16 RC)

ERPNext & HRMS

# ERPNext
bench get-app erpnext --branch v16.0.0

# HRMS
bench get-app hrms --branch v16.0.0

Step 13: Install Apps on Your Site

bench --site yoursite_name install-app erpnext
bench --site yoursite_name install-app hrms

Set current site:

bench use yoursite_name


Step 14: Start Development Server or skip and set Production step 15

bench start

Open your browser:

http://127.0.0.1:8000

Step 15 & Production Setup ()

Change: Instead of running bench start (which is for development), use these commands to set up the Production system.

Bash

# 1. Setup NGINX and Supervisor
sudo bench setup production frappe_user

# 2. Apply NGINX configuration
bench setup nginx

# 3. Reload services to start the site
sudo service nginx reload
sudo supervisorctl reload

# 4. Verify site is running
sudo supervisorctl status
5 Likes

this step fail. I remember V16 use cromium.

the step 9 fail to with this error: frappe@dev16:~$ python3.14 -m pip install --user pipx
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.

In this case if use:

sudo apt update
sudo apt install -y pipx
pipx ensurepath

work this steep and install 1.7.1

getting error

Installing frappe
Traceback (most recent call last):
File “/home/frappe/.local/share/pipx/venvs/frappe-bench/lib/python3.14/site-packages/bench/commands/make.py”, line 75, in init
init(
~~~~^
path,
^^^^^
…<12 lines>…
dev=dev,
^^^^^^^^

1 Like

First got an issue with Redis. Redis keep refuse connection requests. Then with a temp solution moved to next steps. Able to install apps to site. But whenever I try to start bench here is the error I got

bench start
ERROR: No process manager found
Traceback (most recent call last):
File “/home/frappeuser/.local/bin/bench”, line 7, in
sys.exit(cli())
~~~^^
File “/home/frappeuser/.local/share/pipx/venvs/frappe-bench/lib/python3.14/site-packages/bench/cli.py”, line 132, in cli
bench_command()
~~~~~~~~~~~~~^^
File “/home/frappeuser/.local/share/pipx/venvs/frappe-bench/lib/python3.14/site-packages/click/core.py”, line 1442, in call
return self.main(*args, **kwargs)
~~~~~~~~~^^^^^^^^^^^^^^^^^
File “/home/frappeuser/.local/share/pipx/venvs/frappe-bench/lib/python3.14/site-packages/click/core.py”, line 1363, in main
rv = self.invoke(ctx)
File “/home/frappeuser/.local/share/pipx/venvs/frappe-bench/lib/python3.14/site-packages/click/core.py”, line 1830, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File “/home/frappeuser/.local/share/pipx/venvs/frappe-bench/lib/python3.14/site-packages/click/core.py”, line 1226, in invoke
return ctx.invoke(self.callback, **ctx.params)
~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/home/frappeuser/.local/share/pipx/venvs/frappe-bench/lib/python3.14/site-packages/click/core.py”, line 794, in invoke
return callback(*args, **kwargs)
File “/home/frappeuser/.local/share/pipx/venvs/frappe-bench/lib/python3.14/site-packages/bench/commands/utils.py”, line 22, in start
start(
~~~~~^
no_dev=no_dev,
^^^^^^^^^^^^^^
…<3 lines>…
procman=man,
^^^^^^^^^^^^
)
^
File “/home/frappeuser/.local/share/pipx/venvs/frappe-bench/lib/python3.14/site-packages/bench/utils/system.py”, line 152, in start
raise Exception(“No process manager found”)
Exception: No process manager found

what is missing? I followed each steps one by one. Yet not able to run.

I have updated step 8 and 9 just rm -rf frappe-bench and start from step 8

Hi,

Thanks for posting this. Have come across a couple of issues.

Step 8

Error: Package 'libgdk-pixbuf2.0-0' has no installation candidate

If you use

libgdk-pixbuf-xlib-2.0-0

It fixes the error.

However, encounter following error on Step 10

bench init frappe-bench \
  --frappe-branch v16.0.0-rc.1 \
  --python python3.14
Setting Up Environment
$ uv venv env --seed --python python3.14
Traceback (most recent call last):
  File "/home/frappe_user/.local/share/pipx/venvs/frappe-bench/lib/python3.13/site-packages/bench/commands/make.py", line 75, in init
    init(
    ~~~~^
    	path,
     ^^^^^
    ...<12 lines>...
    	dev=dev,
     ^^^^^^^^
    )
    ^
  File "/home/frappe_user/.local/share/pipx/venvs/frappe-bench/lib/python3.13/site-packages/bench/utils/render.py", line 105, in wrapper_fn
    return fn(*args, **kwargs)
  File "/home/frappe_user/.local/share/pipx/venvs/frappe-bench/lib/python3.13/site-packages/bench/utils/system.py", line 66, in init
    bench.setup.env(python=python)
    ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
  File "/home/frappe_user/.local/share/pipx/venvs/frappe-bench/lib/python3.13/site-packages/bench/utils/render.py", line 126, in wrapper_fn
    return fn(*args, **kwargs)
  File "/home/frappe_user/.local/share/pipx/venvs/frappe-bench/lib/python3.13/site-packages/bench/bench.py", line 372, in env
    self.run(f"uv venv env --seed --python {python}", cwd=self.bench.name)
    ~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/frappe_user/.local/share/pipx/venvs/frappe-bench/lib/python3.13/site-packages/bench/bench.py", line 50, in run
    return exec_cmd(cmd, cwd=cwd or self.cwd, _raise=_raise, env=env)
  File "/home/frappe_user/.local/share/pipx/venvs/frappe-bench/lib/python3.13/site-packages/bench/utils/__init__.py", line 189, in exec_cmd
    return_code = subprocess.call(spl_cmd, cwd=cwd, universal_newlines=True, env=env)
  File "/usr/lib/python3.13/subprocess.py", line 395, in call
    with Popen(*popenargs, **kwargs) as p:
         ~~~~~^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/subprocess.py", line 1039, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
    ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                        pass_fds, cwd, env,
                        ^^^^^^^^^^^^^^^^^^^
    ...<5 lines>...
                        gid, gids, uid, umask,
                        ^^^^^^^^^^^^^^^^^^^^^^
                        start_new_session, process_group)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/subprocess.py", line 1972, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'uv'

Any ides on how to overcomes this?

Thanks

Install uv via

curl -LsSf https://astral.sh/uv/install.sh | sh

Refresh Terminal

source ~/.bashrc

Check uv version

uv --version

Install pkg-config

sudo apt update
sudo apt install -y pkg-config libmysqlclient-dev python3.14-dev

Then

bench init frappe-bench
–frappe-branch v16.0.0-rc.2
–python python3.14

Pick next steps

Updated check the files and redo

I have updated the steps start afresh or step you got the error

2 Likes

Thank you very much, all working now :slight_smile:

1 Like

How to upgrade from v16 Rc1 to v16 full version without refresh install?

Maybe this will help:

cd frappe-bench

bench switch-to-branch version-16 frappe erpnext hrms

bench update

sudo supervisorctl restart all

bench start

1 Like

i found this error

sudo-rs: 'bench': command not found

Are you in yout bench directory e.g /home/user/frappe-bench or location your bench is installed/configured?

Check location of your bench

which bench

in directory e.g /home/user/frappe-bench

i install erpnext on vps server i in directory /home/user/frappe-bench

I have the same Error on my fresh install…

Let me do a video on a fresh install of Ubuntu 25 hope it will help