NodeJS15 dicembre 2025 84 visualizzazioni

Comment deployare un'applicazione web Node.js su OuiPanel

Comment deployare un'applicazione web Node.js su OuiPanel

Come distribuire un'applicazione web Node.js su OuiPanel

Tempo stimato : 15 minuti
Difficoltà : Intermedia ⭐⭐
Tipo di server : Node.js


📋 Introduzione

Questa guida ti spiega come ospitare un'applicazione web Node.js (sito web, API REST, dashboard...) su OuiPanel con un nome di dominio personalizzato e HTTPS automatico.

Cosa puoi ospitare

Tipo di applicazione Esempi
🌐 Sito web Sito vetrina, blog, portfolio
🔌 API REST Backend per applicazione mobile/web
📊 Dashboard Pannello di amministrazione, interfaccia di gestione
🛒 Applicazione web E-commerce, SaaS, strumento online

Di cosa hai bisogno

Requisiti Descrizione
📁 Un'applicazione Node.js Il tuo codice sorgente funzionante
💻 Un server Node.js Ordinato su OuiHeberg
🌐 Un nome di dominio (Opzionale) Per un accesso tramite URL personalizzata

📁 Passo 1 : Preparare i File dell'Applicazione

Struttura dei file

La tua applicazione deve avere questa struttura :

📁 MonApp/
├── 📄 index.js           ← File principale (o app.js, server.js...)
├── 📄 package.json       ← Dipendenze npm
├── 📄 .env               ← Variabili d'ambiente (creato sul server)
├── 📁 public/            ← (Opzionale) File statici (CSS, JS, immagini)
├── 📁 views/             ← (Opzionale) Template (EJS, Pug, Handlebars)
└── 📁 routes/            ← (Opzionale) Rotte dell'applicazione

File package.json

Crea un file package.json con le tue dipendenze :

{
  "name": "la-mia-applicazione-web",
  "version": "1.0.0",
  "description": "La mia applicazione web Node.js",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "dependencies": {
    "express": "^4.18.2",
    "dotenv": "^16.3.1"
  }
}

💡 Adatta "main": "index.js" in base al nome del tuo file principale (app.js, server.js, ecc.).


File principale (index.js)

Ecco un esempio di applicazione Express.js configurata per OuiPanel :

// Carica le variabili d'ambiente da .env
require('dotenv').config();

const express = require('express');
const app = express();

// Porta : utilizza SERVER_PORT (OuiPanel) o PORT (.env) o 3000 per default
const PORT = process.env.SERVER_PORT || process.env.PORT || 3000;

// Middleware per analizzare il JSON
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

// Servire i file statici (CSS, JS, immagini)
app.use(express.static('public'));

// Rotta principale
app.get('/', (req, res) => {
    res.send(`
        <!DOCTYPE html>
        <html lang="it">
        <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>La Mia Applicazione</title>
            <style>
                body { font-family: Arial, sans-serif; max-width: 800px; margin: 50px auto; padding: 20px; }
                h1 { color: #333; }
                .status { background: #d4edda; padding: 15px; border-radius: 5px; color: #155724; }
            </style>
        </head>
        <body>
            <h1>🚀 La Mia Applicazione Node.js</h1>
            <div>
                ✅ L'applicazione funziona correttamente!
            </div>
            <p>Server avviato sulla porta ${PORT}</p>
        </body>
        </html>
    `);
});

// Rotta API esempio
app.get('/api/status', (req, res) => {
    res.json({
        status: 'online',
        message: 'API funzionante',
        timestamp: new Date().toISOString()
    });
});

// Rotta API con parametro
app.get('/api/hello/:name', (req, res) => {
    res.json({
        message: `Ciao ${req.params.name} !`
    });
});

// Avviare il server su 0.0.0.0 (importante per OuiPanel)
app.listen(PORT, '0.0.0.0', () => {
    console.log(`✅ Server avviato su http://0.0.0.0:${PORT}`);
    console.log(`📅 ${new Date().toLocaleString('it-IT')}`);
});

⚠️ IMPORTANTE : Il server deve ascoltare su 0.0.0.0 (tutte le interfacce), non su localhost o 127.0.0.1.


Esempio con template EJS

Se utilizzi template EJS :

package.json :

{
  "name": "la-mia-applicazione-web",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "dependencies": {
    "express": "^4.18.2",
    "ejs": "^3.1.9",
    "dotenv": "^16.3.1"
  }
}

index.js :

require('dotenv').config();

const express = require('express');
const app = express();
const PORT = process.env.SERVER_PORT || process.env.PORT || 3000;

// Configurazione EJS
app.set('view engine', 'ejs');
app.set('views', './views');

// File statici
app.use(express.static('public'));

// Rotta principale
app.get('/', (req, res) => {
    res.render('index', { 
        title: 'La Mia Applicazione',
        message: 'Benvenuto nel mio sito!'
    });
});

app.listen(PORT, '0.0.0.0', () => {
    console.log(`✅ Server avviato sulla porta ${PORT}`);
});

views/index.ejs :

<!DOCTYPE html>
<html lang="it">
<head>
    <meta charset="UTF-8">
    <title><%= title %></title>
</head>
<body>
    <h1><%= message %></h1>
</body>
</html>

📤 Passo 2 : Caricare i File su OuiPanel

Via il Gestore File

  1. Accedi a OuiPanel
  2. Seleziona il tuo server Node.js
  3. Nel menu laterale, clicca su Gestore file

Immagine

  1. Elimina i file di default (se ci sono)
  2. Clicca su Invia (Upload)
  3. Carica i tuoi file :
    • index.js (o app.js, server.js...)
    • package.json
    • I tuoi folder (public/, views/, routes/...) se necessario

Immagine

⚠️ Non caricare : Il file .env sarà creato direttamente sul server (più sicuro).


Via SFTP (Consigliato per più file)

  1. Accedi in SFTP con FileZilla
  2. Trascina e rilascia tutto il contenuto della tua cartella applicazione
  3. Verifica che tutti i file siano stati caricati correttamente

📖 Consulta la guida "Accesso SFTP con FileZilla" per istruzioni dettagliate.


🔑 Passo 3 : Creare il File .env

Crea un file .env per memorizzare le tue variabili d'ambiente in modo sicuro.

Creare il file .env

  1. Nel Gestore file, clicca su Nuovo file
  2. Nominalo .env (con il punto davanti)
  3. Aggiungi le tue variabili :
# Configurazione dell'applicazione
PORT=3000
NODE_ENV=production

# Database (se necessario)
DATABASE_URL=mysql://user:password@host:3306/database

# Chiavi API (esempi)
API_KEY=la_tua_chiave_api
SECRET_KEY=la_tua_chiave_segreta

Immagine

  1. Clicca su Crea o Salva

💡 Suggerimento : La variabile SERVER_PORT è fornita automaticamente da OuiPanel. Usala come priorità nel tuo codice.


Struttura finale sul server

📁 Radice del server/
├── 📄 .env               ← Variabili d'ambiente
├── 📄 index.js           ← Il tuo codice
├── 📄 package.json       ← Dipendenze
├── 📁 public/            ← File statici
├── 📁 views/             ← Template
└── 📁 node_modules/      ← (creato automaticamente)

⚙️ Passo 4 : Configurare il File di Avvio

OuiPanel deve sapere quale file eseguire all'avvio.

Accedere alle impostazioni

  1. Nel menu laterale, clicca su Configurazione
  2. Clicca su Impostazioni del server

Immagine


Configurare il file da eseguire

Trova il campo File da eseguire (o Main File / Startup File) :

Immagine

Il tuo file principale Valore da impostare
index.js index.js
app.js app.js
server.js server.js
src/index.js src/index.js

⚠️ Importante : Il nome deve corrispondere esattamente al tuo file (sensibile al maiuscolo/minuscolo).


🚀 Passo 5 : Avviare l'Applicazione

Avviare il server

  1. Nel menu laterale, clicca su Console
  2. Clicca su Avvia

Installazione automatica delle dipendenze

Al primo avvio, il server esegue automaticamente npm install :

> npm install
added 62 packages in 4s

> node index.js
✅ Server avviato su http://0.0.0.0:25639
📅 15/12/2025 14:30:00

[Immagine

Screenshot realizzato con la configurazione EJS

Testare l'applicazione

  1. Annota la porta visualizzata nella console (es: 25639)
  2. Recupera l'IP del tuo server nella Vista Globale
  3. Accedi a http://IP:PORT nel tuo browser

Esempio : http://51.77.xxx.xxx:25639

ImmagineImmagine

💡 Per un accesso più semplice con un nome di dominio e HTTPS, configura il Proxy Manager (passo successivo).


🌐 Passo 6 : Configurare un Nome di Dominio (Proxy Manager)

Per accedere alla tua applicazione tramite un URL pulito con HTTPS (es: https://la-miaapp.com), utilizza il Proxy Manager.

Requisiti

  • ✅ Un nome di dominio che possiedi
  • ✅ Accesso alla zona DNS del tuo dominio

Configurare il DNS

  1. In OuiPanelProxy Manager, annota l'IP del Proxy
  2. Presso il tuo registrar (OVH, Cloudflare, ecc.), crea un record DNS :
Tipo Nome Valore
A @ o app IP del Proxy

Aggiungere il dominio in OuiPanel

  1. Nel menu laterale, clicca su Proxy Manager
  2. Clicca su Aggiungi
  3. Compila :
Campo Valore
Nome di dominio la-miaapp.com o app.miodominio.fr
Porta La porta della tua applicazione (es: 25639)
SSL ✅ Attivato

Immagine


Immagine


Immagine


Immagine

  1. Clicca su Crea la redirezione

Risultato

La tua applicazione è ora accessibile tramite :

  • https://la-miaapp.com (con HTTPS automatico)
  • ✅ Certificato SSL gratuito (Let's Encrypt)

📖 Consulta la guida "Configurare un Nome di Dominio con il Proxy Manager" per ulteriori dettagli.


🔧 Risoluzione dei Problemi

L'applicazione non si avvia

❌ Errore ✅ Soluzione
Cannot find module 'express' Controlla package.json e riavvia
Cannot find module 'dotenv' Aggiungi dotenv in package.json
Error: Cannot find module './index.js' File di avvio configurato in modo errato
SyntaxError Errore nel tuo codice JavaScript

L'applicazione si avvia ma non è accessibile

❌ Causa ✅ Soluzione
Ascolto su localhost Cambia in 0.0.0.0
Porta errata Usa process.env.SERVER_PORT
Firewall La porta deve essere quella assegnata da OuiPanel

Controlla il tuo codice :

// ❌ ERRATO - ascolta solo in locale
app.listen(3000, 'localhost', () => {});
app.listen(3000, '127.0.0.1', () => {});

// ✅ CORRETTO - ascolta su tutte le interfacce
app.listen(PORT, '0.0.0.0', () => {});

Errore 502 Bad Gateway (Proxy Manager)

❌ Causa ✅ Soluzione
Applicazione non avviata Avvia il server in OuiPanel
Porta errata nel Proxy Manager Controlla la porta configurata
Applicazione crashata Controlla la Console

L'applicazione si blocca all'avvio

❌ Causa ✅ Soluzione
Variabile d'ambiente mancante Controlla il file .env
Errore di sintassi Correggi il codice
Pacchetto mancante Controlla package.json

Aggiungi una gestione degli errori :

// Gestione degli errori non catturati
process.on('uncaughtException', (error) => {
    console.error('Errore non catturato:', error);
});

process.on('unhandledRejection', (error) => {
    console.error('Promessa rifiutata:', error);
});

npm install fallisce

❌ Errore ✅ Soluzione
package.json not found Controlla che il file sia nella radice
ERESOLVE unable to resolve Aggiorna le versioni in package.json

🔒 Sicurezza

File .env

✅ Da fare ❌ Da non fare
Creare il .env sul server Caricare il .env dal tuo PC
Aggiungere .env al .gitignore Commettere il .env su GitHub
Utilizzare variabili per i segreti Mettere le chiavi API nel codice

File .gitignore consigliato :

# Variabili d'ambiente
.env
.env.local
.env.production

# Moduli Node
node_modules/

Buone pratiche di sicurezza

const helmet = require('helmet');  // Sicurezza HTTP
const rateLimit = require('express-rate-limit');  // Anti-DDoS

// Aggiungere in package.json : "helmet": "^7.1.0", "express-rate-limit": "^7.1.5"

app.use(helmet());

const limiter = rateLimit({
    windowMs: 15 * 60 * 1000, // 15 minuti
    max: 100 // 100 richieste max per IP
});
app.use(limiter);

💡 Buone Pratiche

Performance

  • ✅ Utilizza NODE_ENV=production in produzione
  • ✅ Attiva la compressione con compression
  • ✅ Metti in cache i file statici
const compression = require('compression');
app.use(compression());

// Cache dei file statici (1 giorno)
app.use(express.static('public', { maxAge: '1d' }));

Struttura avanzata

Per un'applicazione più complessa :

📁 MonApp/
├── 📄 index.js              ← Punto d'ingresso
├── 📄 package.json
├── 📄 .env
├── 📁 config/
│   └── 📄 database.js       ← Configurazione BDD
├── 📁 routes/
│   ├── 📄 index.js          ← Rotte principali
│   ├── 📄 api.js            ← Rotte API
│   └── 📄 auth.js           ← Rotte autenticazione
├── 📁 controllers/
│   └── 📄 userController.js
├── 📁 models/
│   └── 📄 User.js
├── 📁 middleware/
│   └── 📄 auth.js
├── 📁 public/
│   ├── 📁 css/
│   ├── 📁 js/
│   └── 📁 images/
└── 📁 views/
    ├── 📄 index.ejs
    └── 📄 layout.ejs

📦 Frameworks Supportati

OuiPanel supporta tutti i framework Node.js :

Framework Descrizione
Express.js Framework minimalista (utilizzato in questa guida)
Fastify Alternativa veloce a Express
Koa Framework leggero del team di Express
NestJS Framework TypeScript strutturato
Next.js Framework React con SSR
Nuxt.js Framework Vue.js con SSR

💡 Il principio rimane lo stesso: ascoltare su 0.0.0.0 con la porta fornita da OuiPanel.


📝 Riepilogo

1. Preparare i file (index.js + package.json con dotenv)
2. Assicurarsi che il server ascolti su 0.0.0.0:PORT
3. Caricare i file su OuiPanel (senza il .env)
4. Creare il file .env sul server
5. Configurare il file di avvio (index.js, app.js...)
6. Avviare il server
7. Testare tramite http://IP:PORT
8. (Opzionale) Configurare il Proxy Manager per un dominio con HTTPS

Hai bisogno di un hosting Node.js?

Distribuisci le tue applicazioni Node.js con il nostro hosting ottimizzato e supporto dedicato.

Vedi le offerte