# Variáveis de ambiente

> Como configurar variáveis de ambiente para a sua aplicação na Daki Hosting usando um arquivo .env.

Variáveis de ambiente permitem passar valores de configuração — como o token de um bot do Discord ou uma chave de API — para a sua aplicação sem colocá-los fixos no código-fonte. Na Daki Hosting, a abordagem recomendada é criar um **arquivo `.env`** diretamente no seu servidor, usando o gerenciador de arquivos do Portal ou o SFTP.

## O que você vai aprender

- O que são variáveis de ambiente e por que elas importam
- Como criar um arquivo `.env` no seu servidor
- Como carregar valores do `.env` em Node.js e Python
- Boas práticas para manter seus segredos seguros

---

## O que são variáveis de ambiente?

Variáveis de ambiente são pares chave-valor que a sua aplicação em execução pode ler do próprio ambiente. Elas são a forma padrão de:

- Guardar valores sensíveis (tokens, chaves de API, senhas) separados do código
- Alterar a configuração sem modificar ou reenviar os arquivos-fonte
- Evitar que segredos sejam enviados para o controle de versão

---

## Criando um arquivo `.env`

A forma mais simples e confiável de gerenciar variáveis de ambiente na Daki é criar um arquivo `.env` no seu servidor. Você pode fazer isso de duas maneiras:

### Opção 1: usando o gerenciador de arquivos (edições rápidas)

1. Abra seu servidor no Portal ([portal.daki.cc](https://portal.daki.cc)).
2. Vá para a aba **Files**.
3. Clique em **New File** e dê o nome `.env`.
4. Clique no arquivo para abri-lo no editor web e adicione suas variáveis:
   ```
   BOT_TOKEN=your_discord_bot_token_here
   PORT=3000
   DATABASE_URL=your_db_connection_string
   ```
5. Clique em **Save**.
6. Reinicie seu servidor.

### Opção 2: usando SFTP (recomendado para a configuração inicial)

Conecte-se ao seu servidor via SFTP (credenciais na aba **Settings**) e envie seu arquivo `.env` diretamente da sua máquina local. Veja [Gerenciador de arquivos](https://daki.cc/pt/wiki/guides/file-manager) para as instruções de configuração do SFTP.

> **Aviso:** Nunca envie seu arquivo `.env` para um repositório Git público. Adicione `.env` ao seu arquivo `.gitignore` para evitar a exposição acidental de segredos.

---

## Carregando valores do `.env` na sua aplicação

Aplicações não leem arquivos `.env` automaticamente — você precisa de uma biblioteca para carregá-los no ambiente.

**Node.js (dotenv)**

Instale o pacote (adicione-o ao seu `package.json` como dependência):
```json
{
  "dependencies": {
    "dotenv": "^16.0.0"
  }
}
```
Carregue-o no topo do seu arquivo de entrada:
```js
require('dotenv').config();

const token = process.env.BOT_TOKEN;
const port  = process.env.PORT || 3000;
```

**Python (python-dotenv)**

Adicione o `python-dotenv` ao seu `requirements.txt`:
```
python-dotenv
```
Carregue-o no topo do seu arquivo de entrada:
```python
from dotenv import load_dotenv
import os

load_dotenv()

token = os.environ.get("BOT_TOKEN")
port  = int(os.environ.get("PORT", 3000))
```

---

## Formato do arquivo `.env`

Cada linha de um arquivo `.env` segue o formato `CHAVE=VALOR`:

```

# Comments start with a hash

BOT_TOKEN=your_token_here

API_KEY=some_api_key

DB_HOST=localhost

DB_PORT=5432

DEBUG=false

```
- As chaves costumam ser escritas em maiúsculas, com sublinhados.
- Os valores não precisam de aspas, mas aspas são aceitas.
- Linhas que começam com `#` são comentários e são ignoradas.

---

## Boas práticas

- **Nunca coloque tokens ou segredos fixos** nos arquivos do código-fonte, principalmente se o seu código estiver no GitHub.
- **Adicione `.env` ao seu `.gitignore`** para que ele nunca seja enviado por engano.
- **Crie o seu arquivo `.env` no servidor**, não localmente — ou use SFTP para enviar um `.env` local que fique fora do controle de versão.
- **Reinicie seu servidor** depois de criar ou modificar o arquivo `.env`.
- Use **nomes de chaves descritivos** que tornem a sua configuração autoexplicativa.

---

## Próximos passos

- [Configurações de inicialização](https://daki.cc/pt/wiki/guides/startup-settings) — Configure seu comando de instalação, comando de inicialização e a imagem Docker.
- [Faça deploy de um bot Discord.js](https://daki.cc/pt/wiki/guides/deploy-discordjs) — Passo a passo completo do deploy, incluindo a configuração do token.
- [Faça deploy de um bot Python](https://daki.cc/pt/wiki/guides/deploy-python) — Passo a passo completo do deploy, incluindo a configuração do token.

---
Source: https://daki.cc/pt/wiki/guides/environment-variables
