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

# Configuración

# Gestión de Configuración

<Warning>
  **¿Instalando por primera vez?** Siga la [guía de instalación de Docker Compose](/l/es/developers/self-host/capabilities/docker-compose) para ejecutar Twenty, luego regrese aquí para la configuración.
</Warning>

Twenty ofrece **dos modos de configuración** para adaptarse a diferentes necesidades de implementación:

**Acceso al panel de administración:** Solo los usuarios con privilegios de administrador (`canAccessFullAdminPanel: true`) pueden acceder a la interfaz de configuración.

## 1. Configuración del Panel de Administración (Predeterminado)

```bash theme={null}
IS_CONFIG_VARIABLES_IN_DB_ENABLED=true  # default
```

**La mayoría de las configuraciones se realizan a través de la interfaz** después de la instalación:

1. Acceda a su instancia de Twenty (normalmente `http://localhost:3000`)
2. Vaya a **Configuración / Panel de Administración / Variables de Configuración**
3. Configure integraciones, correo electrónico, almacenamiento y más
4. Los cambios se aplican inmediatamente (dentro de 15 segundos para implementaciones multicontenedor)

<Warning>
  **Implementaciones Multicontenedor:** Al usar la configuración de base de datos (`IS_CONFIG_VARIABLES_IN_DB_ENABLED=true`), tanto los contenedores del servidor como los de trabajo leen de la misma base de datos. Los cambios en el panel de administración afectan a ambos automáticamente, eliminando la necesidad de duplicar las variables de entorno entre contenedores (excepto para las variables de infraestructura).
</Warning>

**Qué se puede configurar a través del panel de administración:**

* **Autenticación** - OAuth de Google/Microsoft, configuración de contraseñas
* **Correo Electrónico** - Configuración de SMTP, plantillas, verificación
* **Almacenamiento** - Configuración S3, rutas de almacenamiento local
* **Integraciones** - Gmail, Google Calendar, servicios de Microsoft
* **Flujo de Trabajo y Limitación de Tasas** - Límites de ejecución, restricción de API
* **Y mucho más...**

<img src="https://mintcdn.com/twenty/GMeQVDsw5ST_LXpE/images/user-guide/setup/admin-panel-config-variables.png?fit=max&auto=format&n=GMeQVDsw5ST_LXpE&q=85&s=90c73bf43dbdef9a4f78285354247c13" alt="Variables de Configuración del Panel de Administración" width="3024" height="1645" data-path="images/user-guide/setup/admin-panel-config-variables.png" />

<Warning>
  Cada variable está documentada con descripciones en su panel de administración en **Configuración → Panel de Administración → Variables de Configuración**.
  Algunas configuraciones de infraestructura como las conexiones de base de datos (`PG_DATABASE_URL`), URLs del servidor (`SERVER_URL`), y secretos (`ENCRYPTION_KEY`, `FALLBACK_ENCRYPTION_KEY`) solo se pueden configurar a través del archivo `.env`.

  [Referencia técnica completa →](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/twenty-config/config-variables.ts)
</Warning>

## Claves de cifrado

Twenty utiliza dos claves de cifrado definidas únicamente mediante variables de entorno:

| Variable                  | Propósito                                                                                                                                                                              | Obligatorio                                                                                                            |
| ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| `ENCRYPTION_KEY`          | Clave principal utilizada para cifrar secretos en reposo (tokens OAuth, variables de la aplicación, claves privadas de firma, secretos TOTP, valores de configuración confidenciales). | Sí para nuevas instalaciones (las instalaciones heredadas pueden en su lugar depender de `APP_SECRET` — ver más abajo) |
| `FALLBACK_ENCRYPTION_KEY` | Clave solo para verificación. Se establece durante una rotación como la *anterior* `ENCRYPTION_KEY` para que las filas existentes sigan siendo descifrables.                           | Solo durante la rotación                                                                                               |

Para mantener la compatibilidad con versiones anteriores, si `ENCRYPTION_KEY` no está definida, Twenty recurre a `APP_SECRET` para el cifrado en reposo, lo que coincide con el comportamiento heredado de implementaciones más antiguas. Las nuevas instalaciones siempre deben establecer una `ENCRYPTION_KEY` dedicada.

Genera valores con `openssl rand -base64 32` y guárdalos en un lugar seguro (un gestor de secretos, configuración sellada, etc.). Perder la `ENCRYPTION_KEY` significa perder el acceso a todos los secretos almacenados en la base de datos.

Para rotar `ENCRYPTION_KEY` sin tiempo de inactividad, consulta la [Guía de rotación de claves](/l/es/developers/self-host/capabilities/key-rotation).

## 2. Configuración Solo de Entorno

```bash theme={null}
IS_CONFIG_VARIABLES_IN_DB_ENABLED=false
```

**Toda la configuración se gestiona a través de archivos `.env`:**

1. Establezca `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false` en su archivo `.env`
2. Agregue todas las variables de configuración a su archivo `.env`
3. Reinicie los contenedores para que los cambios tengan efecto
4. El panel de administración mostrará los valores actuales pero no podrá modificarlos

## Modo de múltiples espacios de trabajo

De forma predeterminada, Twenty se ejecuta en **modo de un solo espacio de trabajo** — ideal para la mayoría de las implementaciones autoalojadas en las que necesitas una instancia de CRM para tu organización.

### Modo de un solo espacio de trabajo (predeterminado)

```bash theme={null}
IS_MULTIWORKSPACE_ENABLED=false  # default
```

* Un espacio de trabajo por instancia de Twenty
* El primer usuario se convierte automáticamente en administrador con privilegios completos (`canImpersonate` y `canAccessFullAdminPanel`)
* Los nuevos registros se deshabilitan después de crear el primer espacio de trabajo
* Estructura de URL simple: `https://your-domain.com`

### Habilitar el modo de múltiples espacios de trabajo

```bash theme={null}
IS_MULTIWORKSPACE_ENABLED=true
DEFAULT_SUBDOMAIN=app  # default value
```

Habilita el modo de múltiples espacios de trabajo para implementaciones tipo SaaS en las que varios equipos independientes necesitan sus propios espacios de trabajo en la misma instancia de Twenty.

**Diferencias clave respecto al modo de un solo espacio de trabajo:**

* Se pueden crear varios espacios de trabajo en la misma instancia
* Cada espacio de trabajo obtiene su propio subdominio (p. ej., `sales.your-domain.com`, `marketing.your-domain.com`)
* Los usuarios se registran e inician sesión en `{DEFAULT_SUBDOMAIN}.your-domain.com` (p. ej., `app.your-domain.com`)
* Sin privilegios de administrador automáticos — el primer usuario de cada espacio de trabajo es un usuario normal
* Configuraciones específicas del espacio de trabajo, como subdominio y dominio personalizado, están disponibles en la configuración del espacio de trabajo

<Warning>
  **Configuración solo por entorno:** `IS_MULTIWORKSPACE_ENABLED` solo se puede configurar mediante el archivo `.env` y requiere un reinicio. No se puede cambiar a través del panel de administración.
</Warning>

### Configuración de DNS para múltiples espacios de trabajo

Al usar el modo de múltiples espacios de trabajo, configura tu DNS con un registro comodín para permitir la creación dinámica de subdominios:

```
*.your-domain.com -> your-server-ip
```

Esto habilita el enrutamiento automático de subdominios para nuevos espacios de trabajo sin configuración manual de DNS.

### Restricción de la creación de espacios de trabajo

En el modo de múltiples espacios de trabajo, es posible que quieras limitar quién puede crear nuevos espacios de trabajo:

```bash theme={null}
IS_WORKSPACE_CREATION_LIMITED_TO_SERVER_ADMINS=true
```

Cuando está habilitado, solo los usuarios con `canAccessFullAdminPanel` pueden crear espacios de trabajo adicionales. Los usuarios aún pueden crear su primer espacio de trabajo durante el registro inicial.

## Integración con Gmail y Google Calendar

### Crear Proyecto en Google Cloud

1. Vaya a [Google Cloud Console](https://console.cloud.google.com/)
2. Cree un nuevo proyecto o seleccione uno existente
3. Habilite estas APIs:

* [Gmail API](https://console.cloud.google.com/apis/library/gmail.googleapis.com)
* [Google Calendar API](https://console.cloud.google.com/apis/library/calendar-json.googleapis.com)
* [People API](https://console.cloud.google.com/apis/library/people.googleapis.com)

### Configurar OAuth

1. Vaya a [Credenciales](https://console.cloud.google.com/apis/credentials)
2. Cree un ID de Cliente OAuth 2.0
3. Agregue estas URIs de redirección:
   * `https://{your-domain}/auth/google/redirect` (para SSO)
   * `https://{your-domain}/auth/google-apis/get-access-token` (para integraciones)

### Configurar en Twenty

1. Vaya a **Configuración → Panel de Administración → Variables de Configuración**
2. Encuentre la sección **Google Auth**
3. Establezca estas variables:
   * `MESSAGING_PROVIDER_GMAIL_ENABLED=true`
   * `CALENDAR_PROVIDER_GOOGLE_ENABLED=true`
   * `AUTH_GOOGLE_CLIENT_ID={client-id}`
   * `AUTH_GOOGLE_CLIENT_SECRET={client-secret}`
   * `AUTH_GOOGLE_CALLBACK_URL=https://{your-domain}/auth/google/redirect`
   * `AUTH_GOOGLE_APIS_CALLBACK_URL=https://{your-domain}/auth/google-apis/get-access-token`

<Warning>
  **Modo solo de entorno:** Si establece `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`, agregue estas variables a su archivo `.env` en su lugar.
</Warning>

**Ámbitos requeridos** (configurados automáticamente):
[Ver código fuente relevante](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/auth/utils/get-google-apis-oauth-scopes.ts#L4-L10)

* `https://www.googleapis.com/auth/calendar.events`
* `https://www.googleapis.com/auth/gmail.readonly`
* `https://www.googleapis.com/auth/profile.emails.read`

### Si su aplicación está en modo de prueba

Si su aplicación está en modo de prueba, deberá agregar usuarios de prueba a su proyecto.

En [Pantalla de consentimiento OAuth](https://console.cloud.google.com/apis/credentials/consent), agregue sus usuarios de prueba en la sección "Usuarios de prueba".

## Integración con Microsoft 365

<Warning>
  Los usuarios deben tener una [licencia de Microsoft 365](https://admin.microsoft.com/Adminportal/Home) para poder usar la API de Calendar y Messaging. No podrán sincronizar su cuenta en Twenty sin una.
</Warning>

### Cree un proyecto en Microsoft Azure

Necesitará crear un proyecto en [Microsoft Azure](https://portal.azure.com/#view/Microsoft_AAD_IAM/AppGalleryBladeV2) y obtener las credenciales.

### Habilitar APIs

En la Consola de Microsoft Azure habilite las siguientes APIs en "Permisos":

* Microsoft Graph: Mail.ReadWrite
* Microsoft Graph: Mail.Send
* Microsoft Graph: Calendars.Read
* Microsoft Graph: User.Read
* Microsoft Graph: openid
* Microsoft Graph: email
* Microsoft Graph: profile
* Microsoft Graph: offline\_access

Nota: "Mail.ReadWrite" y "Mail.Send" solo son obligatorios si desea enviar correos electrónicos usando nuestras acciones de flujo de trabajo. Puede usar "Mail.Read" en su lugar si solo desea recibir correos electrónicos.

### URIs de redirección autorizadas

Necesita agregar las siguientes URIs de redirección a su proyecto:

* `https://{your-domain}/auth/microsoft/redirect` si quieres usar el inicio de sesión único de Microsoft
* `https://{your-domain}/auth/microsoft-apis/get-access-token`

### Configurar en Twenty

1. Vaya a **Configuración → Panel de Administración → Variables de Configuración**
2. Encuentre la sección **Microsoft Auth**
3. Establezca estas variables:
   * `MESSAGING_PROVIDER_MICROSOFT_ENABLED=true`
   * `CALENDAR_PROVIDER_MICROSOFT_ENABLED=true`
   * `AUTH_MICROSOFT_ENABLED=true`
   * `AUTH_MICROSOFT_CLIENT_ID={client-id}`
   * `AUTH_MICROSOFT_CLIENT_SECRET={client-secret}`
   * `AUTH_MICROSOFT_CALLBACK_URL=https://{your-domain}/auth/microsoft/redirect`
   * `AUTH_MICROSOFT_APIS_CALLBACK_URL=https://{your-domain}/auth/microsoft-apis/get-access-token`

<Warning>
  **Modo solo de entorno:** Si establece `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`, agregue estas variables a su archivo `.env` en su lugar.
</Warning>

### Configurar ámbitos

[Ver código fuente relevante](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/auth/utils/get-microsoft-apis-oauth-scopes.ts#L2-L9)

* 'openid'
* 'correo Electrónico'
* 'perfil'
* 'offline\_access'
* 'Mail.ReadWrite'
* 'Mail.Send'
* 'Calendars.Read'

### Si su aplicación está en modo de prueba

Si su aplicación está en modo de prueba, deberá agregar usuarios de prueba a su proyecto.

Agregue sus usuarios de prueba a la sección "Usuarios y grupos".

## Trabajos en segundo plano para Calendarios y Mensajes

Después de configurar las integraciones de Gmail, Google Calendar, o Microsoft 365, necesita iniciar los trabajos en segundo plano que sincronizan los datos.

Registre los siguientes trabajos recurrentes en su contenedor de trabajo:

```bash theme={null}
# from your worker container
yarn command:prod cron:messaging:messages-import
yarn command:prod cron:messaging:message-list-fetch
yarn command:prod cron:calendar:calendar-event-list-fetch
yarn command:prod cron:calendar:calendar-events-import
yarn command:prod cron:messaging:ongoing-stale
yarn command:prod cron:calendar:ongoing-stale
yarn command:prod cron:workflow:automated-cron-trigger
```

## Configuración de Correo Electrónico

1. Vaya a **Configuración → Panel de Administración → Variables de Configuración**
2. Encuentre la sección **Correo Electrónico**
3. Configure su configuración SMTP:

<ArticleTabs label1="Gmail" label2="Office365" label3="Smtp4dev">
  <ArticleTab>
    Necesitará proporcionar una [Contraseña de Aplicación](https://support.google.com/accounts/answer/185833).

    * EMAIL\_DRIVER=smtp
    * EMAIL\_SMTP\_HOST=smtp.gmail.com
    * EMAIL\_SMTP\_PORT=465
    * EMAIL\_SMTP\_USER=gmail\_email\_address
    * EMAIL\_SMTP\_PASSWORD='gmail\_app\_password'
  </ArticleTab>

  <ArticleTab>
    Tenga en cuenta que si tiene la autenticación de dos factores habilitada, necesitará proporcionar una [Contraseña de Aplicación](https://support.microsoft.com/en-us/account-billing/manage-app-passwords-for-two-step-verification-d6dc8c6d-4bf7-4851-ad95-6d07799387e9).

    * EMAIL\_DRIVER=smtp
    * EMAIL\_SMTP\_HOST=smtp.office365.com
    * EMAIL\_SMTP\_PORT=587
    * EMAIL\_SMTP\_USER=office365\_email\_address
    * EMAIL\_SMTP\_PASSWORD='office365\_password'
  </ArticleTab>

  <ArticleTab>
    **smtp4dev** es un servidor de correo SMTP falso para desarrollo y pruebas.

    * Ejecute la imagen de smtp4dev: `docker run --rm -it -p 8090:80 -p 2525:25 rnwood/smtp4dev`
    * Acceda a la interfaz de smtp4dev aquí: [http://localhost:8090](http://localhost:8090)
    * Establezca las siguientes variables:
      * EMAIL\_DRIVER=smtp
      * EMAIL\_SMTP\_HOST=localhost
      * EMAIL\_SMTP\_PORT=2525
  </ArticleTab>
</ArticleTabs>

<Warning>
  **Modo solo de entorno:** Si establece `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`, agregue estas variables a su archivo `.env` en su lugar.
</Warning>

## Almacenamiento de S3

<Warning>
  De forma predeterminada, Twenty almacena los archivos cargados en el sistema de archivos local. Para implementaciones en producción, usa S3 o un servicio compatible con S3 (MinIO, DigitalOcean Spaces, etc.). para garantizar que los archivos persistan tras los reinicios de los contenedores y escalen en varias instancias de servidor.
</Warning>

Establece `STORAGE_TYPE=S_3` y configura las variables `STORAGE_S3_*` a través del panel de administración o `.env`. Consulta la [referencia de config-variables.ts](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/twenty-config/config-variables.ts) para ver la lista completa de variables de S3.

Al usar S3 con funciones que dependen de CORS (p. ej., descargas de archivos en el navegador), asegúrate de que tu bucket permita el origen de tu frontend de Twenty en su configuración de CORS.

## Funciones de lógica e intérprete de código

Twenty admite funciones de lógica para flujos de trabajo y el intérprete de código para el análisis de datos con IA. Ambos ejecutan código proporcionado por el usuario y requieren una configuración explícita por motivos de seguridad.

### Valores Predeterminados de Seguridad

**En producción (NODE\_ENV=production):** Tanto las funciones de lógica como el intérprete de código tienen como valor predeterminado **Desactivado**. Debes habilitarlos explícitamente con `LOGIC_FUNCTION_TYPE` y `CODE_INTERPRETER_TYPE` si necesitas estas funciones.

**En desarrollo (NODE\_ENV=development):** Ambos usan **LOCAL** de forma predeterminada para mayor comodidad al ejecutarse localmente.

<Warning>
  **Aviso de seguridad:** El controlador local (`LOGIC_FUNCTION_TYPE=LOCAL` o `CODE_INTERPRETER_TYPE=LOCAL`) ejecuta código directamente en el host en un proceso de Node.js sin aislamiento. Solo debe utilizarse para código de confianza en desarrollo. Para implementaciones de producción que manejen código no confiable, use `LOGIC_FUNCTION_TYPE=LAMBDA` o `CODE_INTERPRETER_TYPE=E2B` (con sandboxing), o manténgalos deshabilitados.
</Warning>

### Funciones de lógica - Controladores disponibles

| Controlador | Variable de entorno            | Caso de uso                                      | Nivel de seguridad                     |
| ----------- | ------------------------------ | ------------------------------------------------ | -------------------------------------- |
| Desactivado | `LOGIC_FUNCTION_TYPE=DISABLED` | Desactivar completamente las funciones de lógica | N/A                                    |
| Local       | `LOGIC_FUNCTION_TYPE=LOCAL`    | Entornos de desarrollo y de confianza            | Bajo (sin aislamiento)                 |
| Lambda      | `LOGIC_FUNCTION_TYPE=LAMBDA`   | Producción con código no confiable               | Alto (aislamiento a nivel de hardware) |

### Funciones de lógica - Configuración recomendada

**Para desarrollo:**

```bash theme={null}
LOGIC_FUNCTION_TYPE=LOCAL  # default when NODE_ENV=development
```

**Para producción (AWS):**

```bash theme={null}
LOGIC_FUNCTION_TYPE=LAMBDA
LOGIC_FUNCTION_LAMBDA_REGION=us-east-1
LOGIC_FUNCTION_LAMBDA_ROLE=arn:aws:iam::123456789:role/your-lambda-role
LOGIC_FUNCTION_LAMBDA_ACCESS_KEY_ID=your-access-key
LOGIC_FUNCTION_LAMBDA_SECRET_ACCESS_KEY=your-secret-key
```

**Para desactivar las funciones de lógica:**

```bash theme={null}
LOGIC_FUNCTION_TYPE=DISABLED  # default when NODE_ENV=production
```

### Intérprete de código - Controladores disponibles

| Controlador | Variable de entorno              | Caso de uso                               | Nivel de seguridad     |
| ----------- | -------------------------------- | ----------------------------------------- | ---------------------- |
| Desactivado | `CODE_INTERPRETER_TYPE=DISABLED` | Deshabilitar la ejecución de código de IA | N/A                    |
| Local       | `CODE_INTERPRETER_TYPE=LOCAL`    | Solo para desarrollo                      | Bajo (sin aislamiento) |
| E2B         | `CODE_INTERPRETER_TYPE=E_2_B`    | Producción con ejecución en sandbox       | Alta (sandbox aislado) |

<Note>
  Al usar `LOGIC_FUNCTION_TYPE=DISABLED` o `CODE_INTERPRETER_TYPE=DISABLED`, cualquier intento de ejecución devolverá un error. Esto es útil si desea ejecutar Twenty sin estas capacidades.
</Note>
