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

# Cómo crear tu archivo de configuración squarecloud.app

> Aprende cómo crear tu archivo de configuración de Square Cloud

## ¿Qué es el archivo de configuración?

El archivo de configuración es un archivo que contiene los parámetros de tu aplicación, como el archivo principal, la memoria, la versión y otros ajustes. Este archivo se usa para configurar y desplegar tu aplicación en la plataforma de Square Cloud.

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

## Creando el archivo de configuración

Crear el archivo de configuración es muy sencillo: solo crea un archivo llamado `squarecloud.app` o `squarecloud.config` y añade los parámetros de configuración dentro de él.

<Steps>
  <Step title="Elige la extensión">
    El archivo de configuración puede tener dos extensiones: **.app** o **.config**. Puedes usar `squarecloud.app` o `squarecloud.config`, la que prefieras. Consejo: usa **.app** para ayudar a promocionar Square Cloud. 🥰😂
    <Info>En **macOS**, recomendamos usar la extensión **.config**.</Info>
    <Warning>Nota: **.app** o **.config** se refiere a la **extensión del archivo**, no al nombre del archivo.</Warning>
  </Step>

  <Step title="Crea el archivo">
    Crea un archivo con la extensión seleccionada y añade los parámetros de configuración dentro de él.
  </Step>
</Steps>

## Parámetros de configuración

A continuación puedes ver todos los parámetros de configuración disponibles para tu archivo de configuración.

| Parámetro       | Tipo    | Editable | Límite         | Uso                                                                            |
| --------------- | ------- | :------: | -------------- | ------------------------------------------------------------------------------ |
| `MAIN*`         | String  |     ❌    | 32 caracteres  | Define el archivo principal de la aplicación. Ej.: `index.js`, `main.py`, etc. |
| `VERSION*`      | String  |     ❌    | -              | Versión del lenguaje (Ej.: `recommended`).                                     |
| `MEMORY*`       | Integer |     ✅    | -              | Cantidad de memoria en megabytes.                                              |
| `DISPLAY_NAME*` | String  |     ✅    | 32 caracteres  | Nombre visible de la aplicación.                                               |
| `RUNTIME`       | String  |     ❌    | -              | El entorno de ejecución. Ej.: `typescript`, `nodejs`, `go`.                    |
| `DESCRIPTION`   | String  |     ✅    | 280 caracteres | Descripción/metadatos de la aplicación.                                        |
| `AUTORESTART`   | Boolean |     ✅    | -              | Reinicio automático (`true` o `false`).                                        |
| `START`         | String  |     ✅    | 256 caracteres | Comando de inicio personalizado.                                               |
| `SUBDOMAIN`     | String  |     ✅    | 63 caracteres  | Subdominio del sitio web (si aplica).                                          |

<Info>Los parámetros editables (✅) pueden modificarse en el panel de control después del despliegue. Los parámetros no editables (❌) requieren volver a subir por completo la aplicación para aplicar los cambios.</Info>

## Detallando los parámetros de configuración

A continuación puedes ver los parámetros de configuración que puedes usar en tu archivo de configuración.

<Steps>
  <Step title="MAIN [*]" icon="file">
    **Tipo**: String | **Editable**: ❌ | **Límite**: 32 caracteres

    Define el archivo principal de la aplicación.

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

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

    <Info>Cuando se establece este parámetro, el entorno de ejecución se inferirá según la extensión del archivo principal</Info>
    <Tip>Este ajuste se **IGNORA** si usas el parámetro START.</Tip>
  </Step>

  <Step title="MEMORY [*]" icon="memory">
    **Tipo**: Integer | **Editable**: ✅ | **Límite**: Mínimo 256MB (bot), 512MB (sitio)

    Define la cantidad de memoria que usará tu aplicación.

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

    <Info>El valor debe especificarse en megabytes (MB).</Info>
  </Step>

  <Step title="VERSION [*]" icon="arrow-up-9-1">
    **Tipo**: String | **Editable**: ❌ | **Valores**: `recommended`, `latest` o una versión específica
    <Tip>Recomendamos usar `recommended` para una estabilidad óptima.</Tip>

    Define la versión del lenguaje para tu aplicación.

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

    | Lenguaje           | `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 | **Editable**: ✅ | **Límite**: 32 caracteres

    Define el nombre visible de tu aplicación.

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

  <Step title="DESCRIPTION" icon="text">
    **Tipo**: String | **Editable**: ✅ | **Límite**: 280 caracteres

    Define la descripción de tu aplicación.

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

  <Step title="AUTORESTART" icon="rotate">
    **Tipo**: Boolean | **Editable**: ✅ | **Valores**: `true`, `false` | **Predeterminado**: `false`

    Define si la aplicación debe reiniciarse automáticamente en caso de fallo.

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

  <Step title="SUBDOMAIN" icon="globe">
    **Tipo**: String | **Editable**: ✅ | **Límite**: 63 caracteres | **Predeterminado**: `undefined`

    Define el subdominio de tu sitio (solo aplicaciones web).

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

    <Note>La URL final será: `mysite.squareweb.app`</Note>
  </Step>

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

    Define un entorno de ejecución manualmente.

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

    Consulta los valores y entornos aceptados a continuación.

    | Entorno    | 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>Si estableces este parámetro, no necesitas establecer MAIN; en su lugar, define un comando START personalizado.</Warning>
  </Step>

  <Step title="START" icon="play">
    **Tipo**: String | **Editable**: ✅ | **Límite**: 256 caracteres | **Predeterminado**: `undefined`

    Define un comando de inicio personalizado.

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

    <Warning>Este parámetro **anula** el comportamiento predeterminado de MAIN.</Warning>
  </Step>
</Steps>

## Ejemplos de configuración para bots

Aquí tienes algunos ejemplos de configuración para bots:

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

## Ejemplos de configuración para sitios

Aquí tienes algunos ejemplos de configuración para sitios web:

<Info>La URL del sitio será: `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` como MAIN solo se usa para que el sistema reconozca el proyecto como un proyecto de JavaScript o TypeScript (otro archivo .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
```
