Accedi Iscriviti LinkedIn

Installazione di Frappe 15 su Ubuntu WSL: Guida Completa Passo-Passo (e unattended)

Guida dettagliata per installare Frappe 15 (e ERPNext) su Ubuntu via WSL. Ottimizzata per performance e compatibilità.

Installazione di Frappe 15 su Ubuntu WSL: Guida Completa Passo-Passo (e unattended)

Frappe, il framework dietro ERPNext, è una piattaforma per la creazione di applicazioni web complesse.

Frappe Framework: No-code, low-code platform for rapid app development
Open source, metadata driven, full stack framework in Python and Javascript. Comes with Admin UI, Roles and Permissions and much more.

📋 Prerequisiti

Questa guida presuppone che tu stia usando WSL2 con Ubuntu 22.04 o superiore installato. È ideale per chi desidera sviluppare localmente in un ambiente leggero.

🎁 Bonus: Setup completo e unattended in un solo script alla fine dell'articolo.

Step 1. Aggiorna il sistema

🧩
Cosa si fa: Innanzitutto, si aggiornano i pacchetti di sistema alla versione più recente.
ℹ️
Perché è necessario: Garantisce compatibilità e sicurezza durante l'installazione.
sudo apt update && sudo apt upgrade -y

Step 2. Installa Git

🧩
Cosa si fa: Si installa Git, il sistema di versionamento.
ℹ️
Perché è necessario: Serve per clonare i repository di Frappe, ERPNext e altre app personalizzate.
sudo apt install git -y

Step 3. Installa Python 3.12 e strumenti di sviluppo

🧩
Cosa si fa: Si installa Python 3.12, i file header e la virtual environment.
ℹ️
Perché è necessario: Frappe è scritto in Python e necessita di una versione recente e stabile.
sudo apt install python3.12 python3.12-dev python3.12-venv -y

Step 4. Installa pip, setuptools e virtualenv

🧩
Cosa si fa: Si installano strumenti per gestire pacchetti e ambienti virtuali Python.
ℹ️
Perché è necessario: Permettono l'isolamento dell'ambiente e la gestione delle dipendenze.
sudo apt install python3-pip python3-setuptools virtualenv -y

Step 5. Installa MariaDB

🧩
Cosa si fa: Si installa MariaDB, il database backend di Frappe.
ℹ️
Perché è necessario: Frappe utilizza MariaDB come database SQL principale.
sudo apt install mariadb-server mariadb-client -y
sudo mysql_secure_installation

Step 6. Configura MariaDB per Frappe

🧩
Cosa si fa: Si aggiorna la configurazione per supportare utf8mb4.
ℹ️
Perché è necessario: Frappe richiede pieno supporto UTF-8 per gestire correttamente caratteri e emoji.
sudo tee -a /etc/mysql/my.cnf <<EOF

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

[mysql]
default-character-set = utf8mb4
EOF

sudo service mysql restart

Step 7. Installa librerie client per MariaDB

🧩
Cosa si fa: Si installano librerie per collegarsi a MariaDB via Python.
ℹ️
Perché è necessario: Frappe ne ha bisogno per interagire col database.
sudo apt install libmysqlclient-dev -y

Step 8. Installa Redis

🧩
Cosa si fa: Si installa Redis, un sistema di caching in-memory.
ℹ️
Perché è necessario: Serve per queue, cache e WebSocket in Frappe.
sudo apt install redis-server -y
sudo systemctl enable redis --now
Redis - The Real-time Data Platform
Developers love Redis. Unlock the full potential of the Redis database with Redis Enterprise and start building blazing fast apps.

Step 9. Installa Node.js tramite NVM

🧩
Cosa si fa: Si installa NVM e poi Node.js v18.
ℹ️
Perché è necessario: Node è usato per la compilazione degli asset frontend.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
source ~/.bashrc
nvm install 18
nvm use 18
node -v
Node.js — Run JavaScript Everywhere
Node.js® is a JavaScript runtime built on Chrome’s V8 JavaScript engine.
GitHub - nvm-sh/nvm: Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions
Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions - nvm-sh/nvm

Step 10. Installa Yarn

🧩
Cosa si fa: Si installa Yarn, un gestore di pacchetti JavaScript.
ℹ️
Perché è necessario: Usato da Frappe per installare e gestire dipendenze frontend.
npm install -g yarn
Home page | Yarn
Yarn, the modern JavaScript package manager

Step 11. Installa wkhtmltopdf

🧩
Cosa si fa: Si installa wkhtmltopdf per generare PDF.
ℹ️
Perché è necessario: Frappe lo usa per generare PDF dai report.
sudo apt install xvfb libfontconfig wkhtmltopdf -y
wkhtmltopdf

Step 12. Installa Bench con UV

🧩
Cosa si fa: Si installa UV (gestore Python ultrarapido) e si configura alias per bench.
ℹ️
Perché è necessario: UV accelera l'esecuzione e isolamento del comando bench.
curl -LsSf https://astral.sh/uv/install.sh | sh
echo "alias bench='uvx --from frappe-bench bench'" >> ~/.bashrc
source ~/.bashrc
uv

Step 13. Inizializza Bench

🧩
Cosa si fa: Si crea una nuova cartella Bench con Frappe 15.
ℹ️
Perché è necessario: Serve come contenitore per siti, app e config.
bench init frappe-bench --frappe-branch version-15
cd frappe-bench

Step 14. Avvia il server di sviluppo

🧩
Cosa si fa: Si avvia l'ambiente di sviluppo locale.
ℹ️
Perché è necessario: Permette di interagire con l'interfaccia web.
bench start

Step 15. Crea un nuovo sito

🧩
Cosa si fa: Si crea un sito Frappe locale.
ℹ️
Perché è necessario: Tutto in Frappe ruota attorno ai siti multi-tenant.
bench new-site site1.localhost

Step 16. (Opzionale) Installa ERPNext

🧩
Cosa si fa: Si scarica e installa ERPNext come app nel sito.
ℹ️
Perché è necessario: Aggiunge le funzionalità ERP a Frappe.
bench get-app erpnext --branch version-15
bench --site site1.localhost install-app erpnext
Free & Open Source Cloud ERP Software | ERPNext
ERPNext is the world’s best 100% open source ERP software which supports manufacturing, distribution, retail, trading, services, education & more. Contact us!

Step Finale: Accedi al sito

Apri il browser e vai su:

http://localhost:8000

Login: Administrator con password scelta durante bench new-site.

🎁 Bonus: Setup completo e unattended in un solo script

💡
Questo script riassume tutti i passaggi precedenti e consente una installazione automatizzata di Frappe 15 su Ubuntu WSL. È ideale per chi vuole partire subito senza seguire ogni comando manualmente. ⚠️ Adatto a sviluppatori esperti.

Salva questo contenuto in un file chiamato frappe_setup.sh, rendilo eseguibile (chmod +x frappe_setup.sh) e poi esegui (./frappe_setup.sh).

#!/bin/bash
set -e

# 1. Aggiorna sistema
sudo apt update && sudo apt upgrade -y

# 2. Installa strumenti base
sudo apt install -y git curl python3.12 python3.12-dev python3.12-venv \
  python3-pip python3-setuptools virtualenv mariadb-server mariadb-client \
  libmysqlclient-dev redis-server xvfb libfontconfig wkhtmltopdf \
  build-essential

# 3. Configura MariaDB
sudo tee /etc/mysql/my.cnf > /dev/null <<EOF
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

[mysql]
default-character-set = utf8mb4
EOF

sudo service mysql restart
sudo mysql_secure_installation

# 4. Abilita Redis
sudo systemctl enable redis --now

# 5. Installa NVM e Node.js 18
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
export NVM_DIR="$HOME/.nvm"
source "$NVM_DIR/nvm.sh"
nvm install 18
nvm use 18

# 6. Installa Yarn
yarn --version || npm install -g yarn

# 7. Installa UV
curl -LsSf https://astral.sh/uv/install.sh | sh

# 8. Alias Bench
if ! grep -q 'alias bench=' ~/.bashrc; then
  echo "alias bench='uvx --from frappe-bench bench'" >> ~/.bashrc
fi
source ~/.bashrc

# 9. Inizializza Bench e Frappe
bench init frappe-bench --frappe-branch version-15
cd frappe-bench

# 10. Crea nuovo sito
bench new-site site1.localhost --admin-password admin

# 11. (Opzionale) Installa ERPNext
read -p "Vuoi installare anche ERPNext? (s/n): " install_erp
if [[ "$install_erp" == "s" ]]; then
  bench get-app erpnext --branch version-15
  bench --site site1.localhost install-app erpnext
fi

# 12. Avvia server
bench start

✅ Risultato

Alla fine del processo:

  • avrai un'istanza funzionante di Frappe 15 (con o senza ERPNext)
  • potrai accedere da browser su http://localhost:8000

Login: Administrator / admin (o la password che hai indicato)

ℹ️
Personalizza lo script per includere backup automatici, impostazioni multi-site o setup di app personalizzate.
📣
Le opinioni espresse sono personali e non riflettono necessariamente le posizioni o le politiche dell'azienda o dell'ente per cui lavoro. Si prega di fare la propria valutazione critica del contenuto e di non considerare le informazioni fornite come consiglio professionale.
🤖
Il contenuto di questo post è stato generato con l'aiuto dell'intelligenza artificiale. Si prega di notare che le informazioni fornite possono non essere complete o accurate. Si raccomanda di fare ulteriori ricerche prima di prendere decisioni importanti basate sul contenuto di questo post