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

# Referência do arquivo de configuração squarecloud.app

> Configure sua aplicação com o arquivo squarecloud.app: MAIN, MEMORY, VERSION, DISPLAY_NAME, RUNTIME, START, SUBDOMAIN e AUTORESTART, com exemplos de bot e site.

## O que é o arquivo de configuração?

O arquivo de configuração diz à Square Cloud como executar a sua aplicação: qual arquivo iniciar, quanta memória reservar, qual versão do runtime usar e, para um site, qual subdomínio publicar. É um arquivo de texto simples, com um par `CHAVE=VALOR` por linha.

```systemd squarecloud.app theme={"system"}
MAIN=index.js
MEMORY=512
VERSION=recommended
DISPLAY_NAME=My first app
```

## Criando o arquivo de configuração

Crie um arquivo chamado `squarecloud.app` ou `squarecloud.config` na raiz do seu projeto. Os dois nomes funcionam do mesmo jeito. Quando você envia um zip, o arquivo precisa ficar no nível mais alto do zip, não dentro de uma subpasta; caso contrário, o deploy falha com `MISSING_CONFIG`.

<Info>No **macOS**, recomendamos o nome `squarecloud.config`.</Info>

<Tip>A [extensão para VS Code](/pt-br/vscode-extension/features#intellisense-do-arquivo-de-configuração) autocompleta todas as chaves abaixo e sublinha valores inválidos enquanto você digita.</Tip>

## Parâmetros de configuração

`MEMORY`, `VERSION` e `DISPLAY_NAME` são sempre obrigatórios. `MAIN` é obrigatório, a menos que você defina `RUNTIME`.

| Parâmetro | Obrigatório | Editável após o deploy | Limite | Finalidade |
| - | - | - | - | - |
| [`MAIN`](#main) | Sem `RUNTIME` definido | Não | 32 caracteres | Arquivo que inicia a aplicação. |
| [`MEMORY`](#memory) | Sim | Sim | A RAM livre do seu plano | RAM reservada para a aplicação, em MB. |
| [`VERSION`](#version) | Sim | Não | `recommended` ou `latest` | Versão do runtime. |
| [`DISPLAY_NAME`](#display_name) | Sim | Sim | 32 caracteres | Nome exibido no dashboard. |
| [`DESCRIPTION`](#description) | Não | Sim | 280 caracteres | Descrição curta. |
| [`AUTORESTART`](#autorestart) | Não | Sim | `true` ou `false` | Reinicia a aplicação após uma falha. |
| [`SUBDOMAIN`](#subdomain) | Não | Só em sites | 63 caracteres | Publica a aplicação como um site. |
| [`RUNTIME`](#runtime) | Não | Não | Veja a tabela | Runtime, quando o `MAIN` não o indica. |
| [`START`](#start) | Não | Sim | 256 caracteres | Comando de start personalizado. |

Os parâmetros editáveis podem ser alterados no dashboard depois do deploy. Alterar um parâmetro não editável exige enviar a aplicação de novo.

### MAIN

O arquivo que inicia a sua aplicação, relativo à raiz do projeto.

```systemd theme={"system"}
MAIN=index.js
```

```systemd theme={"system"}
MAIN=src/bot/main.py
```

* A extensão do arquivo escolhe o runtime: `.js` roda no Node.js, `.ts` no TypeScript, `.py` no Python, e assim por diante.
* O arquivo precisa existir no seu upload e não pode estar vazio.
* Até 32 caracteres: letras, dígitos, `_`, `.`, `/` e `-`, sem espaços.

Um `MAIN` ausente (sem `RUNTIME`) falha com `MISSING_MAIN`; um arquivo que não existe, não tem extensão ou quebra as regras acima falha com `INVALID_MAIN`.

### MEMORY

A RAM reservada para a sua aplicação, em megabytes. Ela também define as vCPUs e a banda da sua aplicação.

```systemd theme={"system"}
MEMORY=512
```

O valor precisa ser pelo menos o [mínimo para o seu tipo de projeto](/pt-br/platform/limitations-and-restrictions#requisitos-mínimos-de-recursos) e não pode passar da RAM que o seu plano ainda tem livre. Caso contrário, o deploy falha com `INSUFFICIENT_MEMORY`.

### VERSION

A versão do runtime: `recommended` ou `latest`. Qualquer outro valor, inclusive um número de versão exato, faz o deploy falhar com `INVALID_VERSION`.

```systemd theme={"system"}
VERSION=recommended
```

Use `recommended`, a menos que você precise de um recurso que só a versão mais nova tem. As versões por trás de cada valor estão na [tabela de versões dos runtimes](/pt-br/runtimes/introduction#versões).

### DISPLAY\_NAME

O nome exibido no dashboard, na CLI e na API.

```systemd theme={"system"}
DISPLAY_NAME=Admin bot
```

Até 32 caracteres: letras sem acento, dígitos, espaços, `-` e `_`. Qualquer outro caractere, como letras acentuadas ou emojis, falha com `INVALID_DISPLAY_NAME`.

### DESCRIPTION

Uma descrição curta da aplicação, com até 280 caracteres (acima disso, `INVALID_DESCRIPTION`).

```systemd theme={"system"}
DESCRIPTION=Este bot ajuda nas suas tarefas do dia a dia.
```

### AUTORESTART

Reinicia a aplicação automaticamente depois de uma falha. Aceita `true` ou `false` e vem como `false` por padrão, então ative-o em bots e em tudo o que precisa ficar online.

```systemd theme={"system"}
AUTORESTART=true
```

Um reinício automático só acontece quando tudo isto é verdade:

* A aplicação saiu com status `1`, o código de saída comum de um erro não tratado no Node.js e no Python.
* Ela estava rodando havia pelo menos 60 segundos, para que uma aplicação que cai logo ao iniciar não fique reiniciando em loop.
* Ela não foi reiniciada automaticamente na última hora.
* Os logs não mostram um erro que um reinício não resolve: um token de bot inválido, um módulo ausente, um erro de sintaxe ou de tipo do TypeScript, ou uma instalação de dependências que falhou.

Um reinício mantém a aplicação online diante de um erro passageiro, mas o bug por trás dele ainda precisa ser corrigido no seu código. Veja também o artigo da central de ajuda sobre o [auto restart](https://help.squarecloud.app/pt-br/article/como-usar-o-auto-restart-na-square-cloud-mdyj38/).

### SUBDOMAIN

Publica a aplicação como um site em `https://<subdomain>.squareweb.app`.

```systemd theme={"system"}
SUBDOMAIN=mysite
```

* Até 63 caracteres: letras, dígitos e hifens, sem começar nem terminar com hífen. O nome é salvo em minúsculas.
* Um nome já em uso, reservado (como `admin` ou `api`) ou inválido falha com `INVALID_SUBDOMAIN`.
* Um site precisa de mais RAM do que um bot: veja a [RAM mínima](/pt-br/platform/limitations-and-restrictions#requisitos-mínimos-de-recursos).
* O seu servidor precisa escutar na porta `80` e no host `0.0.0.0` (veja [o site não carrega](/pt-br/platform/troubleshooting/app-wont-start#o-site-não-carrega)).

<Warning>Decida no primeiro upload se a aplicação é um site. Em um site, você pode mudar o subdomínio depois, mas não pode removê-lo (`CANNOT_SET_SUBDOMAIN`). Uma aplicação enviada sem `SUBDOMAIN` não pode virar um site: envie-a de novo como uma nova aplicação, com o `SUBDOMAIN` definido.</Warning>

Para servir o site no seu próprio domínio, veja [como configurar seu próprio domínio](https://help.squarecloud.app/pt-br/article/como-configurar-seu-proprio-dominio-cnamedns-j39hh2/) na central de ajuda.

### RUNTIME

Define o runtime explicitamente, em vez de deduzi-lo da extensão do `MAIN`. Um valor desconhecido falha com `INVALID_RUNTIME`.

```systemd theme={"system"}
RUNTIME=nodejs
```

| Runtime | Valores aceitos |
| - | - |
| Node.js | `nodejs`, `javascript` |
| TypeScript | `typescript` |
| Python | `python` |
| C# / .NET | `csharp`, `dotnet`, `c#` |
| Elixir | `elixir` |
| Java | `java` |
| Rust | `rust` |
| Ruby | `ruby` |
| PHP | `php` |
| Go | `go`, `golang` |
| HTML/CSS estático | `static`, `html` |

Com o `RUNTIME` definido, você pode deixar o `MAIN` de fora. Nesse caso, defina também o `START`: a maioria dos runtimes inicia a aplicação executando o arquivo do `MAIN`.

### START

Um comando de start personalizado. Ele substitui o comando padrão, que executa o seu arquivo `MAIN`.

```systemd theme={"system"}
START=npm run start
```

* Até 256 caracteres (acima disso, `INVALID_START`).
* As dependências continuam sendo instaladas antes de o comando rodar.
* O comando é lido do arquivo a cada start, então você pode mudá-lo editando o `squarecloud.app` no dashboard e reiniciando.

<Warning>Só chame scripts que existem no seu projeto. `START=npm run build && npm run start`, por exemplo, falha em uma aplicação Express sem um script `build` no `package.json`. Deixe o `START` de fora quando o comando padrão bastar.</Warning>

### ID

Você não escreve esta chave. Depois do `squarecloud upload`, a CLI da Square Cloud adiciona `ID=<app ID>` ao arquivo, para que os próximos comandos, como o `squarecloud commit`, saibam [qual aplicação usar](/pt-br/cli-reference/quickstart#como-a-cli-encontra-sua-aplicação). A Square Cloud ignora essa chave no deploy.

## Exemplos

### Bot

```systemd squarecloud.app theme={"system"}
MAIN=index.js
MEMORY=512
VERSION=recommended
DISPLAY_NAME=Robin bot
DESCRIPTION=Moderação e música para o meu servidor.
AUTORESTART=true
```

### Site ou API

```systemd squarecloud.app theme={"system"}
MAIN=index.js
MEMORY=512
VERSION=recommended
DISPLAY_NAME=My site
DESCRIPTION=Meu site é muito legal!
SUBDOMAIN=mysite
AUTORESTART=true
```

O site responde em `https://mysite.squareweb.app`.

### Next.js

Um framework que precisa de uma etapa de build usa o `START`. Aqui o `MAIN` só escolhe o runtime do Node.js, então aponte-o para o seu arquivo de configuração real (como `next.config.mjs`); os scripts de build e start vêm do `package.json`.

```systemd squarecloud.app theme={"system"}
MAIN=next.config.js
MEMORY=2048
VERSION=recommended
DISPLAY_NAME=Nextjs site
SUBDOMAIN=nextjs
START=npm run build && npm run start
AUTORESTART=true
```

## Próximos passos

<CardGroup cols={2}>
  <Card title="Variáveis de ambiente" icon="key" href="/pt-br/platform/environment-variables">
    Mantenha tokens e strings de conexão fora do seu código e do seu zip.
  </Card>

  <Card title="squarecloud.ignore" icon="file-slash" href="/pt-br/getting-started/squarecloud-ignore">
    Escolha quais arquivos a CLI e o VS Code deixam de fora do upload.
  </Card>

  <Card title="Runtimes" icon="server" href="/pt-br/runtimes/introduction">
    Versões, arquivos de dependências e como cada runtime inicia a sua aplicação.
  </Card>

  <Card title="Solução de problemas" icon="bug" href="/pt-br/platform/troubleshooting/app-wont-start">
    O que cada erro de deploy significa e como corrigi-lo.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.