> ## Content Index
> Fetch the complete content index at: https://adrianoamalfi.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Installazione di Frappe 15 su Ubuntu WSL: Guida Completa Passo-Passo (e unattended)
- URL: https://adrianoamalfi.com/tech-scratchpad/installazione-di-frappe-15-su-ubuntu-wsl-guida-completa-passo-passo-e-unattended/
- Published: 2025-06-08T15:01:37.000Z
- Updated: 2026-07-26T17:13:34.000Z
- Description: Guida dettagliata per installare Frappe 15 (e ERPNext) su Ubuntu via WSL. Ottimizzata per performance e compatibilità.
- Author: Adriano Amalfi
- Tags: #Tech Scratchpad: Appunti avanzati e esperimenti per esperti e amatoriali

[Frappe](https://frappe.io/framework?ref=adrianoamalfi.com), il framework dietro [ERPNext](https://frappe.io/erpnext?ref=adrianoamalfi.com), è una piattaforma per la creazione di applicazioni web complesse.

[Frappe Framework: No-code, low-code platform for rapid app developmentOpen source, metadata driven, full stack framework in Python and Javascript. Comes with Admin UI, Roles and Permissions and much more.![](https://adrianoamalfi.com/content/images/icon/frappeio82a788.ico)![](https://adrianoamalfi.com/content/images/thumbnail/Frappe-20framework-20-1-.webp)](https://frappe.io/framework?ref=adrianoamalfi.com)

### 📋 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.

```sh
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.

```bash
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.

```bash
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.

```bash
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.

```bash
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.

```bash
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.

```bash
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.

```bash
sudo apt install redis-server -y
sudo systemctl enable redis --now

```

[Redis - The Real-time Data PlatformDevelopers love Redis. Unlock the full potential of the Redis database with Redis Enterprise and start building blazing fast apps.![](https://adrianoamalfi.com/content/images/icon/apple-icon.webp)RedisRedis![](https://adrianoamalfi.com/content/images/thumbnail/open-graph.13a19f38.webp)](https://redis.io/?ref=adrianoamalfi.com)

## 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.

```bash
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 EverywhereNode.js® is a JavaScript runtime built on Chrome’s V8 JavaScript engine.![](https://adrianoamalfi.com/content/images/icon/favicon.webp)![](https://adrianoamalfi.com/content/images/thumbnail/Node.js%20%E2%80%94%20Run%20JavaScript%20Everywhere)](https://nodejs.org/en?ref=adrianoamalfi.com)

[GitHub - nvm-sh/nvm: Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versionsNode Version Manager - POSIX-compliant bash script to manage multiple active node.js versions - nvm-sh/nvm![](https://adrianoamalfi.com/content/images/icon/pinned-octocat-093da3e6fa40.svg)GitHubnvm-sh![](https://adrianoamalfi.com/content/images/thumbnail/53a0c44a-1f6e-4f8d-918f-89762fafe369)](https://github.com/nvm-sh/nvm?ref=adrianoamalfi.com)

## 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.

```bash
npm install -g yarn

```

[Home page | YarnYarn, the modern JavaScript package manager![](https://adrianoamalfi.com/content/images/icon/yarn-favicon.svg)Yarn![](https://adrianoamalfi.com/content/images/thumbnail/social-preview.webp)](https://yarnpkg.com/?ref=adrianoamalfi.com)

## Step 11\. Installa wkhtmltopdf

🧩

****Cosa si fa:** Si installa wkhtmltopdf per generare PDF.

ℹ️

****Perché è necessario:** Frappe lo usa per generare PDF dai report.

```bash
sudo apt install xvfb libfontconfig wkhtmltopdf -y

```

[wkhtmltopdf![](https://static.ghost.org/v5.0.0/images/link-icon.svg)![](https://adrianoamalfi.com/content/images/thumbnail/logo.webp)](https://wkhtmltopdf.org/?ref=adrianoamalfi.com)

## 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.

```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
echo "alias bench='uvx --from frappe-bench bench'" >> ~/.bashrc
source ~/.bashrc
```

[uv![](https://adrianoamalfi.com/content/images/icon/apple-touch-icon.webp)logocharliermarsh![](https://adrianoamalfi.com/content/images/thumbnail/629e59c0-9c6e-4013-9ad4-adb2bcf5080d)](https://docs.astral.sh/uv/?ref=adrianoamalfi.com)

## 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.

```bash
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.

```bash
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.

```bash
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.

```bash
bench get-app erpnext --branch version-15
bench --site site1.localhost install-app erpnext

```

[Free & Open Source Cloud ERP Software | ERPNextERPNext is the world’s best 100% open source ERP software which supports manufacturing, distribution, retail, trading, services, education & more. Contact us!![](https://adrianoamalfi.com/content/images/icon/favicon8448da.ico)ERPNext![](https://adrianoamalfi.com/content/images/thumbnail/ERPNexte2a3b6.webp)](https://frappe.io/erpnext?ref=adrianoamalfi.com)

## 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`).

```bash
#!/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