> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squarecloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Come creare il tuo file di configurazione squarecloud.app

> Scopri come creare il tuo file di configurazione di Square Cloud

## Cos'è il file di configurazione?

Il file di configurazione è un file che contiene i parametri della tua applicazione, come il file principale, la memoria, la versione e altre impostazioni. Questo file viene usato per configurare ed effettuare il deploy della tua applicazione sulla piattaforma Square Cloud.

```systemd squarecloud.app theme={null}
MAIN=main_file.js
DISPLAY_NAME=I am the configuration file
MEMORY=512
VERSION=recommended
```

## Creare il file di configurazione

Creare il file di configurazione è molto semplice: basta creare un file chiamato `squarecloud.app` o `squarecloud.config` e aggiungere al suo interno i parametri di configurazione.

<Steps>
  <Step title="Scegli l'estensione">
    Il file di configurazione può avere due estensioni: **.app** o **.config**. Puoi usare `squarecloud.app` o `squarecloud.config`, quella che preferisci. Suggerimento: usa **.app** per aiutare a promuovere Square Cloud. 🥰😂
    <Info>Su **macOS**, consigliamo di usare l'estensione **.config**.</Info>
    <Warning>Nota: **.app** o **.config** si riferisce all'**estensione del file**, non al nome del file.</Warning>
  </Step>

  <Step title="Crea il file">
    Crea un file con l'estensione selezionata e aggiungi al suo interno i parametri di configurazione.
  </Step>
</Steps>

## Parametri di configurazione

Di seguito puoi vedere tutti i parametri di configurazione disponibili per il tuo file di configurazione.

| Parametro       | Tipo    | Modificabile | Limite        | Utilizzo                                                                         |
| --------------- | ------- | :----------: | ------------- | -------------------------------------------------------------------------------- |
| `MAIN*`         | String  |       ❌      | 32 caratteri  | Definisce il file principale dell'applicazione. Es.: `index.js`, `main.py`, ecc. |
| `VERSION*`      | String  |       ❌      | -             | Versione del linguaggio (Es.: `recommended`).                                    |
| `MEMORY*`       | Integer |       ✅      | -             | Quantità di memoria in megabyte.                                                 |
| `DISPLAY_NAME*` | String  |       ✅      | 32 caratteri  | Nome visualizzato dell'applicazione.                                             |
| `RUNTIME`       | String  |       ❌      | -             | L'ambiente di runtime. Es.: `typescript`, `nodejs`, `go`.                        |
| `DESCRIPTION`   | String  |       ✅      | 280 caratteri | Descrizione/metadati dell'applicazione.                                          |
| `AUTORESTART`   | Boolean |       ✅      | -             | Riavvio automatico (`true` o `false`).                                           |
| `START`         | String  |       ✅      | 256 caratteri | Comando di avvio personalizzato.                                                 |
| `SUBDOMAIN`     | String  |       ✅      | 63 caratteri  | Sottodominio del sito (se applicabile).                                          |

<Info>I parametri modificabili (✅) possono essere modificati nella dashboard dopo il deploy. I parametri non modificabili (❌) richiedono un ricaricamento completo dell'applicazione per applicare le modifiche.</Info>

## Dettaglio dei parametri di configurazione

Di seguito puoi vedere i parametri di configurazione che puoi usare nel tuo file di configurazione.

<Steps>
  <Step title="MAIN [*]" icon="file">
    **Tipo**: String | **Modificabile**: ❌ | **Limite**: 32 caratteri

    Definisce il file principale dell'applicazione.

    ```systemd theme={null}
    MAIN=index.js
    ```

    ```systemd theme={null}
    MAIN=src/loaders/index.js
    ```

    <Info>Quando questo parametro è impostato, l'ambiente di runtime verrà dedotto in base all'estensione del file principale</Info>
    <Tip>Questa impostazione viene **IGNORATA** se usi il parametro START.</Tip>
  </Step>

  <Step title="MEMORY [*]" icon="memory">
    **Tipo**: Integer | **Modificabile**: ✅ | **Limite**: Minimo 256MB (bot), 512MB (sito)

    Definisce la quantità di memoria che la tua applicazione utilizzerà.

    ```systemd theme={null}
    MEMORY=256
    ```

    <Info>Il valore deve essere specificato in megabyte (MB).</Info>
  </Step>

  <Step title="VERSION [*]" icon="arrow-up-9-1">
    **Tipo**: String | **Modificabile**: ❌ | **Valori**: `recommended`, `latest` o versione specifica
    <Tip>Consigliamo di usare `recommended` per una stabilità ottimale.</Tip>

    Definisce la versione del linguaggio per la tua applicazione.

    ```systemd theme={null}
    VERSION=recommended
    ```

    | Linguaggio         | `recommended` | `latest` |
    | ------------------ | ------------- | -------- |
    | Node.js \[JS & TS] | 24.15.0       | 26.1.0   |
    | Python             | 3.13.13       | 3.14.5   |
    | Java               | JDK 25        | JDK 25   |
    | Elixir             | 1.19.5        | 1.19.5   |
    | Rust               | 1.95.0        | 1.95.0   |
    | Ruby               | 4.0.4         | 4.0.4    |
    | PHP                | 8.5.6         | 8.5.6    |
    | Go                 | 1.26.3        | 1.26.3   |
    | .NET/C#            | 10.0.8        | 10.0.8   |
  </Step>

  <Step title="DISPLAY_NAME [*]" icon="text">
    **Tipo**: String | **Modificabile**: ✅ | **Limite**: 32 caratteri

    Definisce il nome visualizzato della tua applicazione.

    ```systemd theme={null}
    DISPLAY_NAME=Admin BOT
    ```
  </Step>

  <Step title="DESCRIPTION" icon="text">
    **Tipo**: String | **Modificabile**: ✅ | **Limite**: 280 caratteri

    Definisce la descrizione della tua applicazione.

    ```systemd theme={null}
    DESCRIPTION=This bot is designed to help you with your daily tasks.
    ```
  </Step>

  <Step title="AUTORESTART" icon="rotate">
    **Tipo**: Boolean | **Modificabile**: ✅ | **Valori**: `true`, `false` | **Predefinito**: `false`

    Definisce se l'applicazione debba riavviarsi automaticamente in caso di errore.

    ```systemd theme={null}
    AUTORESTART=true
    ```
  </Step>

  <Step title="SUBDOMAIN" icon="globe">
    **Tipo**: String | **Modificabile**: ✅ | **Limite**: 63 caratteri | **Predefinito**: `undefined`

    Definisce il sottodominio per il tuo sito (solo applicazioni web).

    ```systemd theme={null}
    SUBDOMAIN=mysite
    ```

    <Note>L'URL finale sarà: `mysite.squareweb.app`</Note>
  </Step>

  <Step title="RUNTIME" icon="server">
    **Tipo**: String | **Modificabile**: ❌

    Definisce manualmente un ambiente di runtime.

    ```systemd theme={null}
    RUNTIME=nodejs
    ```

    Consulta di seguito i valori e gli ambienti accettati.

    | Ambiente   | RUNTIME                  |
    | ---------- | ------------------------ |
    | Nodejs     | `nodejs`, `javascript`   |
    | TypeScript | `typescript`             |
    | Python     | `python`                 |
    | C#/Dotnet  | `c#`, `dotnet`, `csharp` |
    | Elixir     | `elixir`                 |
    | Java       | `java`                   |
    | Rust       | `rust`                   |
    | Ruby       | `ruby`, `rb`             |
    | PHP        | `php`                    |
    | Golang     | `go`, `golang`           |
    | HTML/CSS   | `static`, `html`         |

    <Warning>Se imposti questo parametro, non è necessario impostare MAIN; imposta invece un comando START personalizzato.</Warning>
  </Step>

  <Step title="START" icon="play">
    **Tipo**: String | **Modificabile**: ✅ | **Limite**: 256 caratteri | **Predefinito**: `undefined`

    Definisce un comando di avvio personalizzato.

    ```systemd theme={null}
    START=npm run start
    ```

    <Warning>Questo parametro **sovrascrive** il comportamento predefinito di MAIN.</Warning>
  </Step>
</Steps>

## Esempi di configurazione per i bot

Ecco alcuni esempi di configurazione per i bot:

```systemd theme={null}
# Required parameters.
MAIN=index.js
MEMORY=512
VERSION=recommended
DISPLAY_NAME=Robin bot
```

```systemd theme={null}
# Example with all parameters.
MAIN=index.js
MEMORY=512
VERSION=recommended
DISPLAY_NAME=Robin bot
DESCRIPTION=This bot was created to help with your daily tasks.
START=npm run start
AUTORESTART=true
```

## Esempi di configurazione per i siti

Ecco alcuni esempi di configurazione per i siti web:

<Info>L'URL del sito sarà: `mysite.squareweb.app`</Info>

```systemd theme={null}
# Example with all parameters.
MAIN=index.js
MEMORY=1024
VERSION=recommended
DISPLAY_NAME=My site
DESCRIPTION=My site is really cool!
SUBDOMAIN=mysite
START=npm run build && npm run start
AUTORESTART=true
```

<Info>`next.config.js` come MAIN viene usato solo per far riconoscere al sistema il progetto come progetto JavaScript o TypeScript (un altro file .ts/.tsx)</Info>

```systemd theme={null}
# Example for a Next.js site.
MAIN=next.config.js
MEMORY=2048
VERSION=recommended
DISPLAY_NAME=Next.js site
DESCRIPTION=This site was built with Next.js.
SUBDOMAIN=nextjs
START=npm run build && npm run start
AUTORESTART=true
```
