Guia de Pré-requisitos, Instalação e Configuração do App Builder On-Premises

    Pré-requisitos

    Esta seção lista os pré-requisitos para instalar a versão On-premises do App Builder e é destinada a Administradores de Sistema que configuram parâmetros operacionais que mantêm e suportam Linux/Mac OS/Windows.

    Gerenciamento de Banco de Dados

    Com base em seus requisitos, você pode decidir usar MySQL, MSSQL Server ou PostgreSQL como sistemas de gerenciamento de banco de dados.

    Instalação MySQL

    1 - Instale a edição community do MySQL (link direto para windows)

    • Selecione:

      • Developer default, Next e Execute.

      Nota: se você receber um prompt dizendo "um ou mais requisitos de produtos não foram satisfeitos. Você quer continuar?" Apenas selecione Sim)

    • Após a instalação terminar:

      • Selecione next para configurar o servidor, quando solicitado, digite a senha raiz que desejar, então Execute.
      • Após a configuração do servidor terminar, selecione Cancel para sair do instalador, pois o resto da configuração não é necessário.

    2 - Permita a conexão do container ao MySQL.

    Conecte-se ao MySQL com o usuário raiz e a senha da etapa 1 e execute o seguinte script sql (nome de usuário e senha serão os usados pelo AppBuilder).

    Nota: você pode usar a ferramenta MySQL Workbench para executar scripts sql.

    CREATE USER 'username'@'%' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;
    

    Instalação do MSSQL Server

    1 - Instale o Sql Server (link direto)

    Instalação do Sql Express On-Premises

    Nota: um servidor On-premises deve ter um Sql Server real, não um Sql Server Express incorporado do VS

    2 - Habilite tcp/ip - explicação detalhada aqui.

    Gerenciador de Configuração do SqlServer

    3 - Adicione um novo usuário App_Builder parte do Sql Express. Você pode instalar Sql Server Management Studio e usá-lo para esse propósito.

    Diálogo de Parâmetros de Login

    Nota: Permissões de criar banco de dados podem ser negadas para o usuário recém-adicionado. Você deve considerar dar a ele um Server Roles que lhe dará credenciais para criar banco de dados como dbcreator.

    Nota: Com base na decisão do administrador, uma mudança de modo de autenticação com SSMS pode ser necessária. O SQL Server Database Engine está definido como modo de Autenticação do Windows ou modo de Autenticação do SQL Server e do Windows.

    Instalar Docker

    Guia do Windows -> guia docs.microsoft.com

    Instalação

    Esta seção assume que você já tem Docker e um banco de dados (MySQL, MSSQL Server ou PostgreSQL) instalados.

    Instalação pela Primeira Vez

    1 - Baixe o appbuilder.zip que faz parte de sua seção de Download no Portal de Clientes Infragistics.
    2 - Extraia o appbuilder.tar contido no arquivo appbuilder.zip.
    3 - Abra uma janela de terminal ou prompt de comando no local extraído.
    4 - Carregue e verifique a imagem.

    Execute:

    docker load --input appbuilder.tar
    

    Para verificar se a imagem foi carregada corretamente, veja o exemplo com a tabela abaixo:

    docker images
    
    REPOSITORY TAG IMAGE ID CREATED SIZE
    appbuilder 1.0 2a05977e039b 12 days ago 854MB

    5 - Execute o container:

    docker run --restart always -p 80:5000 -e "ConnectionStrings:AppBuilderMySqlConnection=server=<your-mysql-database-ip>;database=<your-mysql-schema>;user=<your-mysql-database-user>;password=<your-mysql-database-password>;oldguids=false" -v <external-folder-for-logs>:/appbuilder/logs -v <external-folder-for-storage>:/appbuilder/storage --name appbuilder appbuilder:1.0
    
    • Exemplo de MySQL - Este seria o comando assumindo que sua instância MySql está executando um schema chamado IndigoAppBuilderOnPrem em 192.168.2.5 com username=appbuilder e password=appbuilder e que você selecionou C:/AppBuilder como a pasta externa para armazenar os logs e armazenamento.
    docker run --restart always -p 80:5000 -e "ConnectionStrings:AppBuilderMySqlConnection=server=192.168.2.5;database=IndigoAppBuilderOnPrem;user=appbuilder;password=appbuilder;oldguids=false" -v C:/AppBuilder/logs:/appbuilder/logs -v C:/AppBuilder/storage:/appbuilder/storage --name appbuilder appbuilder:1.0
    
    • Exemplo de MSSQL Server - Este seria o comando assumindo que sua instância Sql Server está executando um schema chamado IndigoAppBuilderOnPrem com servidor SQLEXPRESS, com USER ID=APP_BUILDER e password=Appbuilder2023! e que você selecionou C:/AppBuilder como a pasta externa para armazenar os logs e armazenamento.
    docker run --restart always -p 80:5000 -e "ConnectionStrings:Provider=SqlServer" -e "ConnectionStrings:AppBuilderSqlServerConnection=Data Source=DEV-ZKOLEV\SQLEXPRESS,1433;Database=IndigoAppBuilderOnPrem;User ID=APP_BUILDER;Password=Appbuilder2023!;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False" -v C:/AppBuilder/logs:/appbuilder/logs -v C:/AppBuilder/storage:/appbuilder/storage --name appbuilder appbuilder:1.0
    

    6 - Abra seu navegador e digite http://localhost/

    Nota: Se você estiver usando Docker Desktop, vá para Containers/Apps, encontre seu container e clique em Open in browser

    Docker Containers/Apps

    Autenticação com OpenID Connect (OAuth 2.0)

    Siga o tópico Autenticação On-Prem com OpenID Connect (OAuth 2.0) para mais informações.

    Atualizações

    1 - Siga os primeiros 4 passos da instalação pela primeira vez com o arquivo zip recém-publicado

    2 - Verifique que a nova imagem foi carregada corretamente (a imagem antiga deve ser marcada como )

    docker images
    
    REPOSITORY TAG IMAGE ID CREATED SIZE
    appbuilder 1.0 27ff4c1079ac 43 hours ago 932MB
    2a05977e039b 12 days ago 854MB

    3 - Pare o container

    docker stop appbuilder
    

    4 - Remova o container

    docker rm appbuilder
    

    5 - Execute o container com o mesmo comando usado na etapa 5 da instalação pela primeira vez

    Ativação

    Esta seção assume que você já instalou a instância On-premises e que ela agora está funcionando.

    Quando o servidor é iniciado pela primeira vez, um diálogo de prompt fornecerá a você ID de Instalação e uma chave de Autenticação será solicitada. Envie este ID de Instalação ao nosso departamento de Vendas com base em sua região e forneceremos a você a chave de Autenticação para ativar o servidor.

    Ativar App Builder

    Nota: Você receberá uma mensagem de aviso diretamente através da interface do usuário trinta dias antes da sua chave expirar.

    Visão Geral da Configuração

    Configuração Padrão

    Quando você inicia a imagem Docker do AppBuilder sem configuração personalizada, os seguintes recursos estão desabilitados por padrão:

    • Conexão do banco de dados - Nenhuma credencial de banco de dados fornecida (deve ser configurada via variáveis de ambiente ou arquivo de configuração)
    • Recursos de IA - Toda funcionalidade de IA desabilitada
    • Painel de Chat de IA - Interface de chat oculta
    • Notificações do Teams - Nenhuma integração de registro externo
    • Limitação de taxa - Nenhuma limitação de solicitações
    • Integração GitHub/Azure DevOps - Recursos de publicação desabilitados

    Métodos de Configuração

    Você tem duas opções para configurar o AppBuilder:

    Opção 1: Variáveis de Ambiente (Quick Start)

    Passe a configuração diretamente como variáveis de ambiente ao iniciar o container:

    docker run --restart always -p 80:5000 \
      -v C:/appbuilder/config:/appbuilder/config \
      -v C:/appbuilder/logs:/appbuilder/logs \
      -v C:/appbuilder/storage:/appbuilder/storage \
      --name appbuilder \
      appbuilder:1.0
    

    Estrutura de diretório necessária:

    /appbuilder/config/
    ├── appsettings.json                    # Sobrescritas de configuração principal
    └── ai/                                 # Configuração de IA (opcional)
        ├── ai.appsettings.json             # Configurações de provedor e modelo de IA
        ├── ai.providers.appsettings.json   # Configuração de endpoint do provedor
        └── ai.credentials.appsettings.json # Chaves de API e credenciais
        └── ai.models.appsettings.json      # Modelos de API disponíveis
    

    Referência do Arquivo de Configuração

    Arquivo Propósito Obrigatório
    appsettings.json Configuração backend principal - controla banco de dados, autenticação, registro, armazenamento e integrações
    configs/ai/ai.appsettings.json Configurações de recursos de IA - define qual provedor e modelos de IA usar Apenas se IA habilitada
    configs/ai/ai.credentials.appsettings.json Chaves de API do provedor de IA - armazena credenciais de autenticação para serviços de IA Apenas se IA habilitada
    configs/ai/ai.providers.appsettings.json Endpoints do provedor de IA - configura URLs base da API (raramente precisa de mudanças) Apenas se IA habilitada
    configs/ai/ai.models.appsettings.json Modelos do provedor de IA Apenas se IA habilitada

    Nota: Se você não planeja habilitar recursos de IA, pode ignorar completamente os arquivos de configuração de IA.

    Configuração Principal (appsettings.json)

    Conexão de Banco de Dados

    As configurações de conexão do banco de dados determinam onde o AppBuilder armazena todos os dados da aplicação, incluindo projetos do usuário, componentes, ativos e metadados.

    {
      "ConnectionStrings": {
        "Provider": "MySql",
        "AppBuilderMySqlConnection": "server=host.docker.internal;port=3306;database=IndigoAppBuilder;user=root;password=yourpassword;oldguids=false",
        "AppBuilderSqlServerConnection": "Data Source=<server>;Database=<database>;User Id=<username>;Password=<password>;Encrypt=False;TrustServerCertificate=True;MultipleActiveResultSets=True",
        "AppBuilderPostgreSqlConnection": "Host=<hostname>;Port=5432;Database=<database>;Username=<username>;Password=<password>"
      }
    }
    
    Opção Tipo Descrição
    Provider string Determina qual mecanismo de banco de dados usar. Valores válidos: "MySql", "SqlServer", "PostgreSql". A aplicação só usará a string de conexão que corresponde a este valor de provedor.
    AppBuilderMySqlConnection string String de conexão do MySQL/MariaDB. Usada quando Provider é "MySql". O parâmetro oldguids=false é necessário para o tratamento correto de GUID. Use host.docker.internal para conectar a um banco de dados na máquina host do Docker, ou server=mysql para conectar a um banco de dados hospedado em um container Docker. Importante: Ao usar um banco de dados em container, inicie o container do AppBuilder com a opção --network (por exemplo, docker run --restart always -p 8080:5000 --network appbuilder-network)
    AppBuilderSqlServerConnection string String de conexão do SQL Server. Usada quando Provider é "SqlServer". MultipleActiveResultSets=True é obrigatório para que o Entity Framework Core funcione corretamente com o SQL Server.
    AppBuilderPostgreSqlConnection string String de conexão do PostgreSQL. Usada quando Provider é "PostgreSql". Formato padrão de string de conexão Npgsql.

    Configuração de Registro

    Controla como os registros da aplicação são gravados e gerenciados.

    {
      "Logging": {
        "LogLevel": {
          "Default": "Debug",
          "System": "Warning",
          "Microsoft": "Warning"
        }
      },
      "CustomLogging": {
        "MinimumLevel": {
          "Default": "Information",
          "Override": {
            "Microsoft": "Warning",
            "System": "Warning",
            "Microsoft.EntityFrameworkCore": "Error"
          }
        },
        "Files": {
          "Paths": {
            "AI": "./logs/ai.log",
            "Backend": "./logs/backend.log",
            "DataProtection": "./logs/data-protection.log"
          },
          "RollingInterval": "Infinite",
          "FileSizeLimitBytes": 52428800,
          "RollOnFileSizeLimit": true,
          "FlushToDiskInterval": "00:00:01",
          "Retention": 90
        },
        "Teams": {
          "AIError": {
            "Enabled": false,
            "LogicAppUrl": "",
            "Period": "00:00:01",
            "TeamId": "",
            "ChannelId": ""
          },
          "DataProtection": {
            "Enabled": false,
            "Email": ""
          }
        }
      }
    }
    

    Notificações do Teams

    Opção Descrição
    Teams.AIError.Enabled Quando true, erros de IA são enviados a um canal do Microsoft Teams via webhook de Logic App.
    Teams.AIError.LogicAppUrl URL do Azure Logic App que publica no Teams.
    Teams.DataProtection.Enabled Quando true, alertas de proteção de dados são enviados por email.
    Teams.DataProtection.Email Endereço de email para alertas de proteção de dados.

    Opções de Limitação de Taxa

    Controla a limitação de taxa de solicitação para prevenir abuso.

    {
      "IPRateLimiterOptions": {
        "Enabled": false,
        "PermitLimit": 500,
        "SegmentsPerWindow": 10,
        "WindowSeconds": 60,
        "QueueLimit": 0,
        "QueueProcessingOrder": "OldestFirst"
      },
      "UserRateLimiterOptions": {
        "Enabled": false,
        "PermitLimit": 1000,
        "SegmentsPerWindow": 6,
        "WindowSeconds": 60,
        "QueueLimit": 0,
        "QueueProcessingOrder": "OldestFirst"
      }
    }
    
    Opção Tipo Descrição
    Enabled boolean Se a limitação de taxa está ativa. Defina como true para habilitar. Para redes internas/confiáveis, pode permanecer false.
    PermitLimit integer Número máximo de solicitações permitidas por janela. O limitador de IP padroniza para 500, o limitador de usuário para 1000.
    SegmentsPerWindow integer Número de segmentos em que a janela de tempo é dividida. Usado para algoritmo de janela deslizante. Valores mais altos = limitação mais suave.
    WindowSeconds integer Tamanho da janela de tempo em segundos. As solicitações são contadas dentro desta janela contínua.
    QueueLimit integer Número de solicitações a enfileirar quando o limite é excedido. 0 significa rejeitar imediatamente. Valores mais altos enfileiram solicitações para processamento posterior.
    QueueProcessingOrder string Ordem de processar solicitações enfileiradas. "OldestFirst" (FIFO) ou "NewestFirst" (LIFO).

    Limitador de Taxa IP: Limita solicitações por endereço IP. Protege contra atores ruins individuais.

    Limitador de Taxa de Usuário: Limita solicitações por usuário autenticado. Protege contra abuso de usuários autenticados.

    Integração GitHub

    Habilita a publicação de projetos em repositórios GitHub.

    Defina disablePublishToGithub: false em

    {
      "FrontendOptions": {
        "Extras": "{ disablePublishToGithub: false, disableSurvey: true, disableAnalytics: true, disableFeedback: true, requiresActivation: true }"
      }
    }
    
    {
      "GithubOptions": {
        "Enabled": true,
        "BaseUrl": "https://github.com/",
        "AuthorizeClientEndpoint": "/login/oauth/authorize",
        "AccessTokenEndpoint": "/login/oauth/access_token",
        "Scope": "user repo workflow",
        "RedirectUri": "/oauth/github/auth-callback",
        "ClientId": "<your-github-oauth-app-client-id>",
        "ClientSecret": "<your-github-oauth-app-client-secret>",
        "PackageAccessTokenSuffix": ""
      }
    }
    
    Opção Tipo Descrição
    BaseUrl string URL base do GitHub. Use "https://github.com/" para github.com ou sua URL do GitHub Enterprise.
    AuthorizeClientEndpoint string Caminho do endpoint de autorização OAuth. Valor padrão, não altere a menos que esteja usando GitHub Enterprise personalizado.
    AccessTokenEndpoint string Caminho do endpoint de token OAuth. Valor padrão, não altere.
    Scope string Escopos OAuth a solicitar. "user repo workflow" permite ler informações do usuário, acessar repositórios e acionadores de fluxos de trabalho.
    RedirectUri string Caminho de callback OAuth. Isso deve corresponder ao que está configurado nas configurações do seu aplicativo OAuth do GitHub.
    ClientId string ID do Cliente do Aplicativo OAuth do GitHub. Crie um aplicativo OAuth em GitHub > Settings > Developer settings > OAuth Apps.
    ClientSecret string Segredo do Cliente do Aplicativo OAuth do GitHub. Mantenha este segredo!

    Etapas de Configuração:

    1. Vá para GitHub > Settings > Developer settings > OAuth Apps > New OAuth App
    2. Defina Homepage URL para sua URL do AppBuilder
    3. Defina Authorization callback URL para https://your-appbuilder-url/oauth/github/auth-callback
    4. Copie Client ID e Client Secret para configuração
    5. Reinicie o container para incluir as mudanças docker run --restart always -p 8080:5000 --network appbuilder-network -v C:/appbuilder/config:/appbuilder/config --name appbuilder -d appbuilder:2.0

    Integração Azure DevOps

    Habilita a publicação de projetos em repositórios Azure DevOps.

    Defina disablePublishToDevOps: false em

    {
      "FrontendOptions": {
        "Extras": "{ disablePublishToDevOps: false, disableSurvey: true, disableAnalytics: true, disableFeedback: true, requiresActivation: true }"
      }
    }
    
    {
      "DevOpsOptions": {
        "Enabled": true,
        "TokenEncryptionKeyBase64": "<generate-a-random-16-byte-base64-key>",
        "BaseUrl": "https://login.microsoftonline.com/",
        "TenantId": "common",
        "AuthorizeClientEndpoint": "oauth2/v2.0/authorize",
        "RedirectUri": "/oauth/devops/auth-callback",
        "AccessTokenEndpoint": "oauth2/v2.0/token",
        "RevokeTokenEndpoint": "https://graph.microsoft.com/v1.0/users/{userObjectId}/revokeSignInSessions",
        "Scopes": "499b84ac-1321-427f-aa17-267ca6975798/user_impersonation offline_access openid profile user.read",
        "ClientId": "<your-azure-ad-app-client-id>",
        "ClientSecret": "<your-azure-ad-app-client-secret>",
        "RestApiVersion": "7.1",
        "ExcludedOrganizations": []
      }
    }
    
    Opção Tipo Descrição
    TokenEncryptionKeyBase64 string Chave para criptografar tokens OAuth armazenados. Gere com openssl rand -base64 16.
    BaseUrl string URL de login do Azure AD. Valor padrão para plataforma de identidade Microsoft.
    TenantId string Tenant do Azure AD. Use "common" para permitir qualquer conta Microsoft, ou especifique seu ID de tenant para um único tenant.
    Scopes string Escopos OAuth para Azure DevOps. O GUID é o ID de recurso do Azure DevOps. Não modifique a menos que saiba o que está fazendo.
    ClientId string ID do Cliente do Registro do Aplicativo do Azure AD.
    ClientSecret string Segredo do Cliente do Registro do Aplicativo do Azure AD.
    RestApiVersion string Versão da API REST do Azure DevOps. "7.1" é versão estável atual.
    ExcludedOrganizations array Lista de organizações Azure DevOps a ocultar. Os usuários não verão estas orgs ao publicar.

    Reinicie o container para incluir as mudanças docker run --restart always -p 8080:5000 --network appbuilder-network -v C:/appbuilder/config:/appbuilder/config --name appbuilder -d appbuilder:2.0

    Configuração de Email

    Habilita notificações por email (opcional).

    {
      "EmailOptions": {
        "Smtp": {
          "Server": "smtp.your-server.com",
          "Port": "587",
          "User": "your-smtp-user",
          "Password": "your-smtp-password"
        }
      }
    }
    
    Opção Tipo Descrição
    Server string Nome de host do servidor SMTP.
    Port string Porta do servidor SMTP. Valores comuns: "587" (TLS), "465" (SSL), "25" (não criptografado - não recomendado).
    User string Nome de usuário de autenticação SMTP.
    Password string Senha de autenticação SMTP.

    Configuração de IA

    Os recursos de IA são opcionais. Para habilitá-los, configure os arquivos em configs/ai/.

    ai.appsettings.json

    Controla qual provedor de IA e modelos são usados.

    {
      "AIOptions": {
        "Provider": "OPENAI",
        "Model": "gpt-4.1-mini",
        "SupportsVision": true
      },
      "ImageGeneration": {
        "Provider": "OPENAI",
        "Model": "gpt-image-1"
      },
      "GoogleCloudTranscribe": {
        "Enabled": false,
        "Credentials": "GoogleCloud",
        "Model": "latest_long",
        "DefaultLanguageCode": "en-US"
      }
    }
    
    Opção Tipo Descrição
    AIOptions.Provider string Provedor de geração de texto. Valores: "OPENAI", "ANTHROPIC", "GOOGLECLOUD", "GROQ"
    AIOptions.Model string ID do modelo de geração de texto. Deve ser um modelo válido para o provedor selecionado (veja tabela abaixo).
    AIOptions.SupportsVision boolean Se o modelo pode analisar imagens. Habilite para modelos com capacidades de visão.
    ImageGeneration.Provider string Provedor de geração de imagem. Valores: "OPENAI", "GOOGLECLOUD", "RUNWARE"
    ImageGeneration.Model string ID do modelo de geração de imagem.
    GoogleCloudTranscribe.Enabled boolean Habilitar fala-para-texto. Requer credenciais do Google Cloud.
    GoogleCloudTranscribe.DefaultLanguageCode string Idioma padrão para reconhecimento de fala. Por exemplo, "en-US", "de-DE", "fr-FR".

    Modelos Disponíveis:

    Provedor Modelos de Texto Modelos de Imagem
    OpenAI gpt-5.2, gpt-5.1, gpt-5-mini, gpt-5-nano, gpt-4.1, gpt-4.1-mini, gpt-4.1-nano gpt-image-1
    Anthropic claude-sonnet-4-5-20250929, claude-haiku-4-5-20251001 -
    Google Cloud gemini-2.5-pro, gemini-2.5-flash, gemini-3-pro-preview imagen-4.0-generate-001, imagen-4.0-ultra-generate-001, imagen-4.0-fast-generate-001
    Groq llama-3.3-70b-versatile, llama-3.1-8b-instant -
    Runware - runware:100@1, runware:101@1

    ai.credentials.appsettings.json

    Armazena chaves de API para provedores de IA.

    {
      "AICredentialsOptions": {
        "OpenAI": {
          "ApiKey": "<your-openai-api-key>"
        },
        "Anthropic": {
          "ApiKey": "<your-anthropic-api-key>"
        },
        "Groq": {
          "ApiKey": "<your-groq-api-key>"
        },
        "Runware": {
          "ApiKey": "<your-runware-api-key>"
        },
        "GoogleCloud": {
          "JsonCredentials": {
            "type": "service_account",
            "project_id": "your-project-id",
            "private_key_id": "...",
            "private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n",
            "client_email": "...",
            "client_id": "...",
            "auth_uri": "https://accounts.google.com/o/oauth2/auth",
            "token_uri": "https://oauth2.googleapis.com/token"
          }
        }
      }
    }
    

    Configure apenas os provedores que você planeja usar. Obtenha chaves de API de:

    Configurações de Ambiente Frontend

    Essas configurações são passadas para a aplicação frontend e controlam recursos e comportamento da interface do usuário.

    {
      "FrontendOptions": {
        "Extras": "{ disableSurvey: true, disableAnalytics: true, disableFeedback: true, requiresActivation: true, disableAI: false, enableAIChat: true }"
      }
    }
    

    O campo Extras é uma string JSON contendo sinalizadores de configuração frontend:

    Configuração Padrão (On-Prem) Descrição
    disableAI true Interruptor mestre para recursos de IA. Quando true, toda interface do usuário relacionada a IA fica oculta e APIs de IA não são chamadas.
    enableAIChat false Mostra painel de chat de IA na caixa de ferramentas. O painel permite aos usuários interagir com IA para gerar componentes e layouts.
    enableSpeechToText false Mostra botão de microfone para entrada de voz no chat de IA. Requer que fala-para-texto do Google Cloud esteja configurado.

    Como funciona: Esses valores são injetados no frontend em tempo de execução via API backend. O frontend lê esses sinalizadores na inicialização e habilita/desabilita recursos de acordo. Para que a funcionalidade de IA funcione, você deve fornecer as credenciais, modelos e configurações necessários nestes arquivos ai.appsettings.json, ai.credentials.appsettings.json, ai.providers.appsettings.json, ai.models.appsettings.json.

    Instalação da Imagem Docker e Execução do Container

    Montagens de Volume

    Caminho do Container Propósito Obrigatório
    /app/appsettings.json Configuração principal Sim
    /app/configs/ai/ Arquivos de configuração de IA Apenas se IA habilitada
    /app/storage/ Armazenamento de arquivo (uploads, exportações) Sim (para persistência)
    /app/logs/ Arquivos de log Recomendado

    Comandos de Execução Docker

    Carregue a imagem

    docker load -i appbuilder.tar
    

    Execute o container fornecendo apenas uma variável de ambiente para conexão DB

    docker run --restart always -p 80:5000 \
      -e "ConnectionStrings:AppBuilderSqlServerConnection=Data Source=<server>,<port>;Database=<db-name>;User ID=<user>;Password=<password>;Encrypt=False;TrustServerCertificate=False;MultipleActiveResultSets=True" \
      -v C:/appbuilder/logs:/appbuilder/logs \
      -v C:/appbuilder/storage:/appbuilder/storage \
      --name appbuilder \
      appbuilder:1.0
    

    Execute o container quando configuração personalizada está montada -v C:/appbuilder/config:/appbuilder/config \

    Se você quiser conectar a banco de dados executando em container docker separado: O arquivo appsettings define a string de conexão para : AppBuilderMySqlConnection": "Server=mysql;Port=3306;Database=AppBuilder;User=user;Password=password;, Crie rede docker e inclua o mysql. Forneça a rede no comando de inicialização.

    docker run --restart always -p 80:5000 \
      --network appbuilder-network \
      -v C:/appbuilder/config:/appbuilder/config \
      -v C:/appbuilder/logs:/appbuilder/logs \
      -v C:/appbuilder/storage:/appbuilder/storage \
      --name appbuilder \
      appbuilder:1.0
    

    Se você quiser conectar a banco de dados executando na PC do host para servidor use host.docker.internal: O arquivo appsettings define a string de conexão para : AppBuilderMySqlConnection": "server=host.docker.internal;Port=3306;Database=AppBuilder;User=user;Password=password;,

    docker run --restart always -p 80:5000 \
      -v C:/appbuilder/config:/appbuilder/config \
      -v C:/appbuilder/logs:/appbuilder/logs \
      -v C:/appbuilder/storage:/appbuilder/storage \
      --name appbuilder \
      appbuilder:1.0
    

    Lista de Verificação de Quick Start

    Configuração Mínima

    1. Atualize ConnectionStrings em appsettings.json ou use a opção de sobrescrita de ambiente (sinalizador)

    Com Autenticação

    1. Conclua configuração mínima
    2. Defina SkipAuth como false
    3. Configure provedor OAuth (Azure AD, Okta, Keycloak, etc.)
    4. Defina Authority, ClientId em AuthSettings

    Com Recursos de IA

    1. Conclua configuração mínima
    2. Obtenha chave de API do seu provedor de IA escolhido
    3. Configure ai.appsettings.json com provedor e modelo
    4. Adicione chave de API a ai.credentials.appsettings.json
    5. Defina disableAI: false e enableAIChat: true no arquivo appsetting.json em FrontendOptions

    Com Integração GitHub/DevOps

    1. Crie aplicativo OAuth (GitHub) ou Registro de Aplicativo (Azure AD)
    2. Configure URLs de callback no provedor
    3. Adicione ID do Cliente e Segredo à configuração

    Solução de Problemas

    Locais de Log

    Arquivo de Log Conteúdo
    ./logs/appbuilder.log Solicitações de API, autenticação, erros gerais relacionados
    ./logs/codegen.log Solicitações de API, autenticação, erros gerais relacionados
    ./logs/ai.log Solicitações e respostas do provedor de IA

    Problemas Comuns

    Falha de conexão do banco de dados

    • Verifique se o formato da string de conexão corresponde ao seu provedor
    • Verifique se servidor de banco de dados está acessível do container
    • Para Docker Desktop em Windows/Mac, use host.docker.internal em vez de localhost
    • Garanta que o usuário do banco de dados tem permissões para criar tabelas

    Erros CORS no navegador

    • Adicione sua origem exata (incluindo protocolo e porta) a CorsPolicy.Origins
    • Verifique console do navegador para a origem real sendo bloqueada

    Recursos de IA não funcionando

    • Verifique se disableAI: false no ambiente frontend
    • Verifique se chave de API é válida e tem créditos
    • Revise ai.log para mensagens de erro específicas
    • Garanta que nome do modelo corresponda exatamente aos modelos disponíveis

    Uploads de arquivo falham

    • Verifique se diretório de armazenamento existe e é gravável
    • Verifique MaxImageSizeMb se carregando imagens grandes
    • Garanta que volume está montado corretamente no Docker

    Autenticação não funciona

    • Verifique se SkipAuth é false
    • Verifique se URL Authority está acessível
    • Verifique se URLs de callback correspondem tanto em configuração como em provedor OAuth
    • Verifique console do navegador para erros OAuth

    Docker Desktop em Windows

    Docker Desktop em Windows não está iniciando automaticamente sem Login na máquina Windows Docker Desktop em Windows - O time Docker não recomenda Docker Desktop para cargas de trabalho de produção. Você deve usar Docker em uma caixa Linux ou Docker para Windows Server se quiser containers Windows.

    Recursos Adicionais