Home
NexoPOS

Environment

We'll assume for this documentation that you're willing to install NexoPOS on a Linux environment. As we target specifically Ubuntu 24.04, this is also applicable to 22.04 and 26.06 (more versions remain compatible as of now).

For native Windows installation, refer to NexoPOS for Windows. However, this can also apply to Windows Subsystem for Linux (WSL2).

Installing PHP

To install PHP on your environment, you'll need to execute the following command:

sudo apt update 
sudo apt install -y software-properties-common ca-certificates lsb-release apt-transport-https 
sudo add-apt-repository -y ppa:ondrej/php 
sudo apt update

Now, we'll proceed with installing the required PHP modules.

sudo apt install -y php8.4 php8.4-cli php8.4-fpm php8.4-common php8.4-mysql php8.4-zip php8.4-gd php8.4-mbstring php8.4-curl php8.4-xml php8.4-bcmath php8.4-intl php8.4-soap php8.4-readline php8.4-opcache php8.4-redis php8.4-imagick php8.4-sqlite3 unzip curl git

You might now execute php -v to see the installed PHP version.

Installing Nginx / Apache

Nginx Installation

We'll start with Nginx, which is the solution we use for most of our projects.

sudo apt update
sudo apt install -y nginx

You might eventually need to enable the Nginx service, and that can be done this way:

sudo systemctl enable nginx 
sudo systemctl start nginx 
sudo systemctl status nginx

optionaly you might want to grant access to the firewall to nginx. This is possible with the following command:

sudo ufw allow 'Nginx Full'

Apache Configuration

If you're using Apache instead of Nginx, the following command is applicable to you.

sudo apt update
sudo apt install -y apache2

Similarly, if you want to enable the service, you'll need to execute the following command:

systemctl enable apache2 
sudo systemctl start apache2 
sudo systemctl status apache2

The same firewall exception can be applied to Apache by running the following command:

sudo ufw allow 'Apache Full'

As you're using Apache for NexoPOS, some module must be enabled for Apache:

sudo a2enmod rewrite headers env dir mime && sudo systemctl restart apache2

Installing Composer

Composer is the dependency manager used by Laravel and therefore required to run NexoPOS. It handles downloading and managing all PHP packages needed by the application. Without Composer, NexoPOS cannot install or operate correctly.

To install Composer globally on Ubuntu 24.04, run:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \
php composer-setup.php --install-dir=/usr/local/bin --filename=composer && \
php -r "unlink('composer-setup.php');"

You can verify the installation with:

composer --version

Installing MariaDB

MariaDB is the database engine used by NexoPOS to store all application data, including sales, products, and configurations. It is fully compatible with Laravel and provides a reliable, high-performance alternative to MySQL.

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

We can now enable the service using the following commands:

sudo systemctl enable mariadb 
sudo systemctl start mariadb 
sudo systemctl status mariadb

After installation, it’s recommended to secure the database server:

sudo mysql_secure_installation

sudo mysql_secure_installation:

sudo mysql -u root -p

Instlalling NVM and Node

NVM (Node Version Manager) allows you to install and manage multiple Node.js versions easily. It’s useful for NexoPOS when building frontend assets with tools like Vite.

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash

Then load NVM into your current session:

export NVM_DIR="$HOME/.nvm" && [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"

Install Node.js 24 and set it as the default version:

nvm install 24 && nvm use 24 && nvm alias default 24

You can verify everything is working with:

node -v && npm -v

Node.js 24 will now be used by default in new terminal sessions.

Learn now how to proceed with the installation.