Gestão de Configuração
Twenty oferece dois modos de configuração para atender diferentes necessidades de implantação:
Acesso ao painel de administração: Apenas usuários com privilégios de administrador (canAccessFullAdminPanel: true) podem acessar a interface de configuração.
1. Configuração do Painel Administrativo (Padrão)
IS_CONFIG_VARIABLES_IN_DB_ENABLED=true # default
A maior parte da configuração acontece através da interface do usuário após a instalação:
- Acesse sua instância do Twenty (geralmente
http://localhost:3000)
- Vá para Configurações / Painel de Administração / Variáveis de Configuração
- Configure integrações, email, armazenamento e mais
- As alterações entram em vigor imediatamente (em até 15 segundos para implantações em múltiplos containers)
Implantações em Múltiplos Containers: Ao usar a configuração do banco de dados (IS_CONFIG_VARIABLES_IN_DB_ENABLED=true), tanto servidores quanto containers de trabalho leem do mesmo banco de dados. Alterações no painel de administração afetam ambos automaticamente, eliminando a necessidade de duplicar variáveis de ambiente entre os containers (exceto para variáveis de infraestrutura).
O que você pode configurar através do painel de administração:
- Autenticação - OAuth do Google/Microsoft, configurações de senha
- Email - configurações SMTP, modelos, verificação
- Armazenamento - configuração S3, caminhos de armazenamento local
- Integrações - Gmail, Google Calendar, serviços Microsoft
- Fluxo de trabalho e limitação de taxa - limites de execução, limitação de taxa da API
- E muito mais…
Cada variável é documentada com descrições no seu painel de administração em Configurações → Painel de Administração → Variáveis de Configuração.
Algumas configurações de infraestrutura como conexões de banco de dados (PG_DATABASE_URL), URLs de servidor (SERVER_URL) e segredos do app (APP_SECRET) só podem ser configuradas via arquivo .env.Referência técnica completa →
2. Configuração Somente por Ambiente
IS_CONFIG_VARIABLES_IN_DB_ENABLED=false
Toda a configuração gerenciada através de arquivos .env:
- Defina
IS_CONFIG_VARIABLES_IN_DB_ENABLED=false no seu arquivo .env
- Adicione todas as variáveis de configuração ao seu arquivo
.env
- Reinicie os containers para que as alterações entrem em vigor
- O painel de administração mostrará valores atuais, mas não poderá modificá-los
Modo de vários espaços de trabalho
Por padrão, o Twenty é executado no modo de espaço de trabalho único — ideal para a maioria das implantações auto-hospedadas em que você precisa de uma instância de CRM para sua organização.
Modo de espaço de trabalho único (padrão)
IS_MULTIWORKSPACE_ENABLED=false # default
- Um espaço de trabalho por instância do Twenty
- O primeiro usuário torna-se automaticamente administrador com privilégios completos (
canImpersonate e canAccessFullAdminPanel)
- Novos cadastros são desativados após a criação do primeiro espaço de trabalho
- Estrutura de URL simples:
https://your-domain.com
Ativando o modo de vários espaços de trabalho
IS_MULTIWORKSPACE_ENABLED=true
DEFAULT_SUBDOMAIN=app # default value
Ative o modo de vários espaços de trabalho para implantações ao estilo SaaS em que várias equipes independentes precisam de seus próprios espaços de trabalho na mesma instância do Twenty.
Principais diferenças em relação ao modo de espaço de trabalho único:
- Vários espaços de trabalho podem ser criados na mesma instância
- Cada espaço de trabalho recebe seu próprio subdomínio (por exemplo,
sales.your-domain.com, marketing.your-domain.com)
- Os usuários se cadastram e fazem login em
{DEFAULT_SUBDOMAIN}.your-domain.com (por exemplo, app.your-domain.com)
- Sem privilégios administrativos automáticos — o primeiro usuário de cada espaço de trabalho é um usuário comum
- Configurações específicas do espaço de trabalho, como subdomínio e domínio personalizado, ficam disponíveis nas configurações do espaço de trabalho
Configuração apenas por ambiente: IS_MULTIWORKSPACE_ENABLED só pode ser configurado via arquivo .env e requer reinicialização. Isso não pode ser alterado pelo painel de administração.
Configuração de DNS para vários espaços de trabalho
Ao usar o modo de vários espaços de trabalho, configure seu DNS com um registro curinga para permitir a criação dinâmica de subdomínios:
*.your-domain.com -> your-server-ip
Isso permite o roteamento automático de subdomínios para novos espaços de trabalho sem configuração manual de DNS.
Restringindo a criação de espaços de trabalho
No modo de vários espaços de trabalho, você pode querer limitar quem pode criar novos espaços de trabalho:
IS_WORKSPACE_CREATION_LIMITED_TO_SERVER_ADMINS=true
Quando ativado, apenas usuários com canAccessFullAdminPanel podem criar espaços de trabalho adicionais. Os usuários ainda podem criar seu primeiro espaço de trabalho durante o cadastro inicial.
Criar Projeto no Google Cloud
- Vá para Google Cloud Console
- Crie um novo projeto ou selecione um já existente
- Ative essas APIs:
- Vá para Credenciais
- Crie um ID do Cliente OAuth 2.0
- Adicione estes URIs de redirecionamento:
https://{your-domain}/auth/google/redirect (para SSO)
https://{your-domain}/auth/google-apis/get-access-token (para integrações)
Configurar no Twenty
- Vá para Configurações → Painel de Administração → Variáveis de Configuração
- Encontre a seção Google Auth
- Defina estas variáveis:
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
Modo somente ambiente: Se você definir IS_CONFIG_VARIABLES_IN_DB_ENABLED=false, adicione estas variáveis ao seu arquivo .env.
Escopos necessários (configurados automaticamente):
Veja o código relevante
https://www.googleapis.com/auth/calendar.events
https://www.googleapis.com/auth/gmail.readonly
https://www.googleapis.com/auth/profile.emails.read
Se seu aplicativo estiver em modo de teste
Se seu aplicativo estiver em modo de teste, será necessário adicionar usuários de teste ao seu projeto.
Na tela de consentimento OAuth, adicione seus usuários de teste à seção “Usuários de teste”.
Os usuários devem ter uma Licença do Microsoft 365 para poder usar as APIs de Calendário e Mensagem. Eles não poderão sincronizar sua conta no Twenty sem uma.
Criar um projeto no Microsoft Azure
Você precisará criar um projeto no Microsoft Azure e obter as credenciais.
Habilitar APIs
No Console do Microsoft Azure habilite as seguintes APIs em “Permissões”:
- 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” e “Mail.Send” são apenas obrigatórios se você quiser enviar emails usando nossas ações de fluxo de trabalho. Você pode usar “Mail.Read” em vez disso se quiser apenas receber emails.
URIs de redirecionamento autorizados
Você precisa adicionar os seguintes URIs de redirecionamento ao seu projeto:
https://{your-domain}/auth/microsoft/redirect se você quiser usar SSO da Microsoft
https://{your-domain}/auth/microsoft-apis/get-access-token
Configurar no Twenty
- Vá para Configurações → Painel de Administração → Variáveis de Configuração
- Encontre a seção Microsoft Auth
- Defina estas variáveis:
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
Modo somente ambiente: Se você definir IS_CONFIG_VARIABLES_IN_DB_ENABLED=false, adicione estas variáveis ao seu arquivo .env.
Configurar escopos
Veja o código relevante
- ‘openid’
- ‘email’
- ‘perfil’
- ‘offline_access’
- ‘Mail.ReadWrite’
- ‘Mail.Send’
- ‘Calendars.Read’
Se seu aplicativo estiver em modo de teste
Se seu aplicativo estiver em modo de teste, será necessário adicionar usuários de teste ao seu projeto.
Adicione seus usuários de teste à seção “Usuários e grupos”.
Trabalhos em Segundo Plano para Calendário e Mensagens
Após configurar integrações com Gmail, Google Calendar ou Microsoft 365, é necessário iniciar os trabalhos em segundo plano que sincronizam dados.
Registre os seguintes trabalhos recorrentes em seu container de trabalho:
# 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
Configuração de Email
- Vá para Configurações → Painel de Administração → Variáveis de Configuração
- Encontre a seção Email
- Configure suas configurações SMTP:
Modo somente ambiente: Se você definir IS_CONFIG_VARIABLES_IN_DB_ENABLED=false, adicione estas variáveis ao seu arquivo .env.
Armazenamento S3
Por padrão, o Twenty armazena os arquivos enviados no sistema de arquivos local. Para implantações em produção, use o S3 ou um serviço compatível com S3 (MinIO, DigitalOcean Spaces, etc.) para garantir que os arquivos persistam entre reinicializações do contêiner e possam escalar em várias instâncias de servidor.
Defina STORAGE_TYPE=S_3 e configure as variáveis STORAGE_S3_* pelo painel de administração ou .env. Veja a referência de config-variables.ts para a lista completa de variáveis do S3.
Ao usar o S3 com recursos dependentes de CORS (por exemplo, downloads de arquivos no navegador), verifique se o seu bucket permite a origem do seu frontend do Twenty na sua configuração de CORS.
Funções lógicas e interpretador de código
O Twenty oferece suporte a funções lógicas para fluxos de trabalho e ao interpretador de código para análise de dados com IA. Ambos executam código fornecido pelo usuário e exigem configuração explícita por motivos de segurança.
Padrões de segurança
Em produção (NODE_ENV=production): Tanto as funções lógicas quanto o interpretador de código têm como padrão Desativado. Você deve habilitá-los explicitamente com LOGIC_FUNCTION_TYPE e CODE_INTERPRETER_TYPE se precisar desses recursos.
Em desenvolvimento (NODE_ENV=development): Ambos têm como padrão LOCAL por conveniência ao executar localmente.
Aviso de segurança: O driver local (LOGIC_FUNCTION_TYPE=LOCAL ou CODE_INTERPRETER_TYPE=LOCAL) executa código diretamente no host em um processo Node.js sem sandbox. Deve ser usado apenas para código confiável em desenvolvimento. Para implantações de produção que lidam com código não confiável, use LOGIC_FUNCTION_TYPE=LAMBDA ou CODE_INTERPRETER_TYPE=E2B (com sandbox), ou mantenha-os desativados.
Funções lógicas - Drivers disponíveis
| Driver | Variável de ambiente | Caso de uso | Nível de segurança |
|---|
| Desativado | LOGIC_FUNCTION_TYPE=DISABLED | Desativar completamente as funções lógicas | N/A |
| Local | LOGIC_FUNCTION_TYPE=LOCAL | Desenvolvimento e ambientes confiáveis | Baixo (sem sandbox) |
| Lambda | LOGIC_FUNCTION_TYPE=LAMBDA | Produção com código não confiável | Alto (isolamento em nível de hardware) |
Funções lógicas - Configuração recomendada
Para desenvolvimento:
LOGIC_FUNCTION_TYPE=LOCAL # default when NODE_ENV=development
Para produção (AWS):
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 desativar as funções lógicas:
LOGIC_FUNCTION_TYPE=DISABLED # default when NODE_ENV=production
Interpretador de código - Drivers disponíveis
| Driver | Variável de ambiente | Caso de uso | Nível de segurança |
|---|
| Desativado | CODE_INTERPRETER_TYPE=DISABLED | Desativar a execução de código de IA | N/A |
| Local | CODE_INTERPRETER_TYPE=LOCAL | Apenas para desenvolvimento | Baixo (sem sandbox) |
| E2B | CODE_INTERPRETER_TYPE=E_2_B | Produção com execução em sandbox | Alto (sandbox isolado) |
Ao usar LOGIC_FUNCTION_TYPE=DISABLED ou CODE_INTERPRETER_TYPE=DISABLED, qualquer tentativa de execução retornará um erro. Isso é útil se você quiser executar o Twenty sem esses recursos.