# Variables de entorno

> Cómo configurar variables de entorno para tu aplicación en Daki Hosting mediante un archivo .env.

Las variables de entorno te permiten pasar valores de configuración, como el token de un bot de Discord o una clave de API, a tu aplicación sin escribirlos en el código fuente. En Daki Hosting, el método recomendado es crear un **archivo `.env`** directamente en tu servidor, con el gestor de archivos del Portal o mediante SFTP.

## Lo que aprenderás

- Qué son las variables de entorno y por qué importan
- Cómo crear un archivo `.env` en tu servidor
- Cómo cargar los valores de `.env` en Node.js y Python
- Buenas prácticas para mantener a salvo tus secretos

---

## ¿Qué son las variables de entorno?

Las variables de entorno son pares clave-valor que tu aplicación en marcha puede leer desde su entorno. Son la forma estándar de:

- Guardar valores sensibles (tokens, claves de API, contraseñas) separados del código
- Cambiar la configuración sin modificar ni volver a desplegar los archivos de código
- Evitar subir secretos al control de versiones

---

## Crear un archivo `.env`

La forma más sencilla y fiable de gestionar variables de entorno en Daki es crear un archivo `.env` en tu servidor. Puedes hacerlo de dos formas:

### Opción 1: con el gestor de archivos (ediciones rápidas)

1. Abre tu servidor en el Portal ([portal.daki.cc](https://portal.daki.cc)).
2. Ve a la pestaña **Files**.
3. Haz clic en **New File** y ponle el nombre `.env`.
4. Haz clic en el archivo para abrirlo en el editor web y añade tus variables:
   ```
   BOT_TOKEN=your_discord_bot_token_here
   PORT=3000
   DATABASE_URL=your_db_connection_string
   ```
5. Haz clic en **Save**.
6. Reinicia tu servidor.

### Opción 2: con SFTP (recomendado para la configuración inicial)

Conéctate a tu servidor por SFTP (credenciales en la pestaña **Settings**) y sube tu archivo `.env` directamente desde tu equipo. Consulta [Gestor de archivos](https://daki.cc/es/wiki/guides/file-manager) para las instrucciones de configuración de SFTP.

> **Advertencia:** Nunca subas tu archivo `.env` a un repositorio Git público. Añade `.env` a tu archivo `.gitignore` para evitar exponer secretos por accidente.

---

## Cargar los valores de `.env` en tu aplicación

Las aplicaciones no leen los archivos `.env` automáticamente: necesitas una librería que los cargue en el entorno.

**Node.js (dotenv)**

Instala el paquete (añádelo como dependencia en tu `package.json`):
```json
{
  "dependencies": {
    "dotenv": "^16.0.0"
  }
}
```
Cárgalo al principio de tu archivo de entrada:
```js
require('dotenv').config();

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

**Python (python-dotenv)**

Añade `python-dotenv` a tu `requirements.txt`:
```
python-dotenv
```
Cárgalo al principio de tu archivo 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 del archivo `.env`

Cada línea de un archivo `.env` sigue el formato `CLAVE=VALOR`:

```

# Comments start with a hash

BOT_TOKEN=your_token_here

API_KEY=some_api_key

DB_HOST=localhost

DB_PORT=5432

DEBUG=false

```
- Las claves suelen escribirse en mayúsculas con guiones bajos.
- Los valores no necesitan comillas, aunque se admiten.
- Las líneas que empiezan por `#` son comentarios y se ignoran.

---

## Buenas prácticas

- **Nunca escribas tokens ni secretos** en los archivos de código, sobre todo si tu código está en GitHub.
- **Añade `.env` a tu `.gitignore`** para que nunca se suba por accidente.
- **Crea tu archivo `.env` en el servidor**, no en local, o usa SFTP para subir un `.env` local que esté excluido del control de versiones.
- **Reinicia tu servidor** después de crear o modificar tu archivo `.env`.
- Usa **nombres de clave descriptivos** que hagan que tu configuración se documente sola.

---

## Próximos pasos

- [Configuración de inicio](https://daki.cc/es/wiki/guides/startup-settings): configura tu comando de instalación, tu comando de inicio y la imagen de Docker.
- [Desplegar un bot de Discord.js](https://daki.cc/es/wiki/guides/deploy-discordjs): guía completa de despliegue, incluida la configuración del token.
- [Desplegar un bot de Python](https://daki.cc/es/wiki/guides/deploy-python): guía completa de despliegue, incluida la configuración del token.

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