# Installare OpenPlatform con Node.js e PostgreSQL, Docker o Docker Compose

> Avvia OpenPlatform a mano, con l’immagine di Docker Hub o con Docker Compose, cosa succede al primo avvio e cosa configurare subito dopo l’accesso.

Framework: openplatform
Product: OpenPlatform (openplatform@5)
Language: it
Content-SHA256: 749451a606a178e61ba34e0c57bad352f53c9c45e4041fd7ab2ee6a0d35beaf8
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

OpenPlatform richiede l’ultima versione di **Node.js** e un database **PostgreSQL**. Ci sono tre modi per avviarlo, tutti dal README del repository. **Non** eseguire tu stesso `database.sql`: OpenPlatform usa quello script internamente al primo avvio.

## A mano

1. Installa Node.js e PostgreSQL e crea un database vuoto per OpenPlatform.
2. Scarica il [codice sorgente](https://github.com/totaljs/openplatform).
3. Installa le dipendenze nella radice dell’applicazione:

```bash
npm install
```

4. Inserisci la stringa di connessione nel file `config` (il file ha come modello la riga `database : postgresql://user:pass@localhost:5432/database` e una riga `database (env) : DATABASE` che la legge dalla variabile d’ambiente `DATABASE`).
5. Avvialo (lo script `start` di `package.json` esegue `node index.js 8000`):

```bash
node index.js
```

6. Apri `http://127.0.0.1:8000` e, **prima di tutto, apri le impostazioni e configura la piattaforma** (il README indica questo passo come importante; le impostazioni sono in [impostazioni e database](/en/openplatform/settings-and-database/)).

## Docker Hub

```bash
docker pull totalplatform/openplatform
docker run --env DATABASE='postgresql://user:pass@hostname/database' -p 8000:8000 totalplatform/openplatform
```

## Docker Compose

```bash
git clone https://github.com/totaljs/openplatform.git
cd openplatform
docker compose up
```

## Cosa fa il primo avvio

Quando il database non ha ancora tabelle di OpenPlatform (cerca la tabella `cl_config` nello schema `op`), l’applicazione carica `database.sql`, sostituendo i suoi segnaposto con valori che genera: l’identificativo dell’installazione, il nome del cookie, i segreti e i sali, i token, il primo utente e il primo gruppo. Poi carica la configurazione e avvia l’autenticazione (`definitions/init.js`). Con la variabile d’ambiente `DATABASE` (Docker) attende tre secondi prima, perché il database possa essere attivo. In entrambi i casi il server è in pausa (`PAUSESERVER('Database')`) finché il database non è pronto.

## Il primo accesso

Il README indica l’account predefinito:

```text
login : info@totaljs.com
password : admin
```

Accedi, **cambia quella password** (il portale ha l’azione dell’account per farlo) e configura le impostazioni. Ricorda la regola del README: ogni applicazione che aggiungi deve essere assegnata a un gruppo, altrimenti nessuno la vede ([gruppi e permessi](/en/openplatform/groups-and-permissions/)).
