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.